关于汇编的div指令
程序员文章站
2024-03-23 22:15:10
...
div指令使用感觉比较麻烦,需要注意几点:
1:除数为8位或者16位(即字节型或字型),在寄存器或内存单元中
2: 被除数在AX 或者 AX和DX中( 注意,后面是AX和DX,AX存放低16位,DX存放高16位)
除数 被除数
8位 16位
16位 32位(AX和DX)
与此对应的,当除数为8位时,商存放在AL寄存器中,余数存放在AH寄存器中,
当除数为16位时,商在AX中,余数在DX中
3:指令格式
div reg //reg表示一个寄存器
div 内存单元
好了,那么来实践一下
先试试16位除以8位的:
mov ax,17 //在DosBox下用Debug,好像只能使用十六进制,不能加后缀h
mov bl,3
div bl
然后单步调试看AX的高位AH和低位AL
可以看到,执行DIV BL后,AX位0207(十六进制),因为23除以3为7余2
好,那么接下来试试32位除以16位的,16位二进制数最大为65535,那么就70000除以240吧,转化为16进制为1B58除以F0
除数为16位,被除数是高位存放在DX,这里1B58高32位为0,所以应该将DX赋值为0,AX赋值为1B58,然后BX赋值为F0,再看看结果吧
最后结果是AX为001d,DX为0028,可以计算器计算一下看1d*f0+28是不是等于1b58(都是十六进制),有兴趣的话可以试试,弄懂了也就没什么麻烦的
上一篇: 汇编语言程序设计——基础知识
下一篇: 查看Java的汇编指令