简介 :
深入理解 div 指令(用双字来存储被除数)
代码 :
assume cs:code,ds:data,ss:stack
data segment
dd 100001 ; 作为被除数 , 注意十进制的 100001 在 16 进制中为 : 000186A1
; 这个数据在内存中的存放方式为 : A1 86 01 00 (小端字节序列 , 注意是字节)
; 超过了 16 位 , 因此需要分开将其读取到 ax 和 dx 中才可以进行除法运算
dw 100 ; 作为除数
dw 0 ; 保存商
data ends
stack segment
stack ends
code segment
start:
; 设置数据段寄存器
mov ax, data
mov ds, ax
; 将被除数读取到寄存器 ax dx 中
mov bx,0
mov ax, word ptr [bx]
add bx, 2
mov dx, word ptr [bx]
add bx, 2
; 开始除法运算
div word ptr [bx]
add bx, 2
; 将结果(商)保存在第二个 dw 中
mov [bx], ax
; 这里余数被保存在了 dx 中 , 也可以定义一个 dw 数据来保存商
finish:
mov ax,4cH
int 21H
code ends
end start