assume cs:codesg
datasg segment
dd 0,0 ; 被除数, 结果
datasg ends
codesg segment
start:
mov ax, 4240h ; 被除数低位
mov dx, 000Fh ; 被除数高位
mov cx, 0Ah ; 除数
call divdw
mov ax,4c00H
int 21H
divdw: ; x/n = int(h/n)*65536 + [rem(h/n)*65536+L]/n
mov bx, datasg
mov ds, bx
mov ds:[0], ax
mov ds:[2], dx ; 被除数放入内存
mov ax, ds:[2]
mov dx, 0
div cx
mov ds:[4], ax ; 计算公式前一半放入内存
mov ax, ds:[0] ; 余数已在高位dx, 低位放入L
div cx
mov ds:[6], ax; 计算公式后一半放入内存
mov cx, dx; cx放余数
mov dx, ds:[4]; dx 放高位结果
mov ax, ds:[6]; ax 放低位结果
ret
codesg ends
end start
王爽《汇编语言》实验10:子程序divdw
最新推荐文章于 2023-09-20 20:22:20 发布