回 帖 发 新 帖 刷新版面

主题:debug 调试中,AX为什么会出现错误

stack segment page stack 'stakc'
      db 256 dup(?)
stack ends

my_data segment
a   db   0021h
b   db   0031h
c   db   0010h
result dw 3 dup(?)
my_data ends

my_code segment
        assume ds:my_data,cs:my_code,ss:stack
start:  mov ax,my_data
        mov ds,ax
        
        xor ax,ax 
        mov al,[a]
        cbw
        
        mov bl,[b]
        cbw
        imul bx
        
     
        mov dl,[c]
        cbw 
             (此时,AX=0051)为什么会这样子呢??
        add ax,dx
        
        mov bl,[a]
        cbw
        idiv bx
        mov result,ax
         
        mov ah,4ch
        int 21h
my_code ends
        end start

回复列表 (共3个回复)

沙发

编译都不能通过啊!!
我都郁闷了,我把c改为d编译就可以了
imul bx
他的运算结果存放在ax中,高字在dx中

板凳

我无语了....
那个 c 可以在masm50上面编译
刚开始的masm615就是不行!!

3 楼

错误在于cbw的使用,cbw只扩展累加器的内容,不会理会dx和cx中的内容的,

mov bl,[b]
cbw
imul bx
mov dl,[c]
cbw
add ax,dx
mov bl,[a]
cbw

这一段应改为:
xor bx, bx
mov bl, b
imul bx
xor dx, dx
mov dl, c
add ax, dx
xor bx, bx
mov bl, a

我来回复

您尚未登录,请登录后再回复。点此登录或注册