为什么我的实验十中第二个,解决除法溢出的结果跟书上不一样?求解
代码如下;-----------实验十(解决除尘溢出的问题)-------------------
assume cs:code,ds:data,ss:stack
data segment
dd 16 dup (0)
data ends
stack segment
db 16 dup (0)
stack ends
code segment
main: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h ;段初始
mov si,0
mov ax,4240h ;dword型数据的低16位 ;返回 dx=结果的高16位 ax=结果的低16位
mov dx,000fh ;dword型数据的高16位 cx=余数
mov cx,0ah ;除数
call divdw
mov ax,4c00h
int 21h
divdw:
push ax ;把低位行放在栈中
mov ax,dx ;算高位运算的结果
mov dx,0
div cx ;高位先除
mov ,ax ;把高位除运算的结果先放到内存中
mov ax,dx ;把YU数放入ax中
mov bx,10000h;算YU数加AX中
mul bx
pop bx ;取出低位值
add ax,bx ;把剩下的数相加(低位数)
div cx ;低位相除
mov cx,dx ;YU数
mov dx,
ret
code ends
end main
书上的结果 是 (dx)=0001H (ax)=96A0H (CX)=0
可是我的结果是(ax)=06a0h
deubg中:
AX=06A0BX=4240CX=0000DX=0001SP=0010BP=0000SI=0000DI=0000
DS=13D1ES=13C1SS=13D5CS=13D6IP=001C NV UP EI PL NZ NA PO NC
我的代码哪出问题了,求助~~~~~~
页:
[1]