|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码如下
;-----------实验十(解决除尘溢出的问题)-------------------
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 [si],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,[si]
ret
code ends
end main
书上的结果 是 (dx)=0001H (ax)=96A0H (CX)=0
可是我的结果是 (ax)=06a0h
deubg中:
AX=06A0 BX=4240 CX=0000 DX=0001 SP=0010 BP=0000 SI=0000 DI=0000
DS=13D1 ES=13C1 SS=13D5 CS=13D6 IP=001C NV UP EI PL NZ NA PO NC
我的代码哪出问题了,求助~~~~~~
|
|