汇编的除法指令是div, 实际上相对高级语言的除法, 汇编指令的div是同时得到商和余数的, 结果分别保存在不同的寄存器.
- 除数: 有8位和16位两种, 在一个寄存器或者内存单元中
- 被除数: 如果除数是8位则被除数为16位, 默认放在AX中, 如果除数是16位, 则被除数为32位, 默认高位放在DX, 低位放在AX
- 结果: 如果除数是8位, 那么执行div后, 余数存放在AH, 商存放在AL中; 如果除数是16位, 那么AX保存商, DX保存余数
注意: 被除数的位数一定是除数的两倍
指令格式:
1: div registre
2: div 内存单元
一个除数为8位的例子(96除以10)
mov ax 60h ;dec 96 = hex 60
mov bh 0ah ;dec 10 = hex ah, 代码中数字起始位位字母要在最前加0
div bh ;执行后ax为:0609, 即高位ah=06(余数), 低位al=09(商)
执行div后ax的高低位就可以后后续的计算了