已经解决
本帖最后由 603717321 于 2016-4-27 23:15 编辑assume cs:code
code segment
start:
;除数为十六位,被除数为32位;商在AX中存放,余数在DX中存放
mov dx, 1;
mov ax, 100002
mov bx, 100
div bx
code ends
end start
把错误提示发出来看看。你确定是dx的问题?看你的代码明显是ax 超范围了。 你这段代码写错了吧,100002已经大于65535了,说明ax已经放不下它了,所以要用ax和dx两个寄存器来存放,具体的公式汇编语言书上P170有解释,看下子。 本帖最后由 603717321 于 2016-4-27 23:13 编辑
66 603717321 发表于 2016-4-24 21:44
就如此图如果把mov dx, 1
修改为mov dx, 2
输出就会就会不正确
程序和debug结果如上图:dx=2,ax=86a1h,转换成10进制就是165537,再除以100(bx=100),商就是1655(转换成16进制就是0677),余数为37(转换成16进制就是0025),所以最后ax=0677,dx=0025,没有问题的。
页:
[1]