kiven 发表于 2011-12-5 16:59:17

为什么我的实验十中第二个,解决除法溢出的结果跟书上不一样?求解

代码如下

;-----------实验十(解决除尘溢出的问题)-------------------
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]
查看完整版本: 为什么我的实验十中第二个,解决除法溢出的结果跟书上不一样?求解