我有一部分代码
mov di,3
mov cx,16
looop:
xor dx,dx
shl bx,1
adc dx,dx
cmp cx,16
je cx16 (it's will dec cx and jump loop)
push dx
dec cx
cmp cx,0
je cx0
mov ax,cx
div di
cmp dx,0
jne looop
当cx = 3时
我会得到ax = 3
但是div di
ax将变为H = 55 L = 56
和dx = 1
请问你能告诉我这里我做错了什么吗?
答案 0 :(得分:3)
div di
将32位数量dx:ax
除以di
。我们不知道您的bx
有什么价值,但可能会产生dx=1
(由于adc dx, dx
)。所以除法将是0x10003 / 3 = 0x5556
余数1
,这正是你所看到的。
PS:学会使用调试器,并根据需要读取指令集引用。