当前位置:编程学习 > 汇编语言 >>

汇编语言除法,AX里的内容是0BB8H。BL里的内容是05H。为什么命令DIV BL,结果会出现除法溢出呢??求解……

补充:其实,就是用汇编语言实现十进制的3000除以5,答案得600,把600的二进制编程ascma,再显示出来,后边的我会,就是运行到0BB8H除以05H时,除法溢出了,无法继续下去,各位大神帮帮忙~~~谢啦~~
追问:不对啊,至少是除数是8位的,被除数是16位的,这个样子吧,我改了,但是仍然不行,
答案:因为你3000超过了256,所以被除数用ax存放。而得到的商是保存在al里面的。al是8位寄存器、只能存放255内的数、、600放不下、、你可以把3000赋给ax,然后mov dx,0也就是将被除数当做32位的。除数当做16位的、结果dx存放余数。ax存放商
asssume cs:code
code segment
start:
mov dx,0
mov ax,0bb8h
mov bx,0005h
div bx
mov ax,4c00h
int 21h
code ends
end start
end 
望采纳
其他:DIV 后面跟16位寄存器 一个字节不能保存600,所以不能用字节除,用字除。
xor dx, dx
mov ax, 3000
mov bx, 5         ;;;bx
div bx
商存在AX中

上一个:汇编语言四个错误不会改,程序在下面
下一个:8088汇编语言上机试验考试题 1、从键盘输入一个字符串(串长度小于100个字符),统计其串的长度后输出该串

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,