在数据段中定义一个变量a1,其中有1个元素,其元素类型为word类型(即一个元素占2个字节) ,利用2中的子程序得到一个整数,然后将这个整数存储到a1中。
offset指令可以获取一个变量距离数据段起始地址的偏移量,如 mov bx,offset a1这条指令可以将a1这个变量距离数据段起始地址的偏移量求出后保存到bx中。
注意: 2中的子程序将处理结果存放在了cpu内部某个寄存器中,而数据段中的变量是在内存中,所以需要把数据从cpu内部的寄存器送往内存中。
DATAS SEGMENT
; 首先定义 word 变量 a1
a1 dw ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov ax, 123
mov si, offset a1; 记录 a1 的偏移量
mov [si], ax;
mov ax, [si];调输出函数,这个就不写了
call output
; 输出开始
MOV AH,4CH
INT 21H
output proc
; 调用输出
mov ch, 0
mov cl, 10
; 每次循环除以 cl
L0: div cl
; 除以 cl 以后,结果在 al 中,余数在 ah 中
;将余数入栈
push ax
; ch 每次增加,记录位数
inc ch
mov ah, 0
cmp al, 0
ja L0
L1: ; 输出函数
cmp ch, 0
je over2
; 出栈,将栈顶元素存储到 dx 中
pop dx
mov dl, dh
add dl, 48
mov ah, 2
int 21h
dec ch
jmp L1
over2:
ret
output endp
CODES ENDS
END START
版权声明:本文为weixin_45962741原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。