走在01的路上 发表于 2020-7-25 15:48:50

汇编div后结果错误

本帖最后由 走在01的路上 于 2020-7-25 15:50 编辑

https://imgchr.com/i/Uz7RIO

xieglt 发表于 2020-7-31 14:23:51

16位除法是这样的

当除数为8位时
被除数在AX里,除数为 byte ptr ,或者AL,AH,BL,BH,CL,CH,DL,DH寄存器
如:
MOVAX,16
MOVBL,7
DIV   BL
执行除法后,商进AL,余数进AH

当除数是16位时
被除数在DX:AX中,即DX,AX共同组成被除数,除数为WORD PTR,或者AX,BX,CX,DX
如:
MOV AX,16
XORDX,DX
MOV BX,7
DIV BX
执行除法后,商进 AX,余数进DX。

你的代码中
DX = 1
AX = 16H
DIVWORD PTR
相当于执行了10016H / 7
商是2495H 余数是3

另外

乘法的规则和除法一样。

走在01的路上 发表于 2020-7-31 18:17:27

非常感谢原来是dx和ax一起组成的被除数 {:10_250:}
页: [1]
查看完整版本: 汇编div后结果错误