operend类型不匹配&非法指令

时间:2013-03-25 17:59:18

标签: assembly

第20行出错 不能在第30行“函数名称”中移动edx,dx和其他错误

有人能帮帮我吗? 注意:: .startup在我的代码中意味着     mov ax,@ data     mov ds,ax

.model small,c
.486
.stack 200h
.data 
    num DW ?


    arr db "Plese enter a Number$"
.code
    rev proc _TT:word
    uses ebx,eax,cx
    LOCALS
    mov EBX,0
    mov cx ,0
    mov Ax,_TT
again: CWD
    div cx
    imul  EBX,10
    movs edx,dx  ; <=== error here
    push EAX
    mov ax,dx
    cwde
    add ebx,eax
    pop eax
    cmp eax,0
    JG again
    ret
    endp
    rav
.startup

    .exit
    end

1 个答案:

答案 0 :(得分:1)

这些是与原始问题相关的违规行及其正确替换:

movs edx,dx  ; <=== error here

替换为:

movsx edx,dx  ; Sign-extend dx into edx


    endp
    rav

替换为:

rev endp ; the end of "rev proc"