当前位置: 代码迷 >> 汇编语言 >> invalid instruction operands,该如何解决
  详细解决方案

invalid instruction operands,该如何解决

热度:531   发布时间:2016-05-02 04:29:24.0
invalid instruction operands
_STACK     SEGMENT STACK 'STACK'
            DB 1000 DUP(0)
            TOS DW 0
_STACK    ENDS
.386
_DATA      SEGMENT 
NUM        DD ?
Buf        DB  11,?,10 DUP (?)
_DATA      ENDS
_TEXT      SEGMENT 'CODE'
            ASSUME CS:_TEXT,DS:_DATA,SS:_STACK
START:     MOV  AX,_DATA
            MOV  DS,AX
            CLI
            MOV  AX,_STACK
            MOV  SS,AX
            MOV  SP,Offset TOS
            STI
            MOV  DX,Offset Buf   ;  出错啦
            MOV  AH,0AH
            INT   21H
            SUB  ECX,ECX
            SUB  EAX,EAX
            MOV  EBX,10
Rep1b:      MUL   EBX
            MOVZX EDX,Byte Ptr Buf  [ECX] [2]
            SUB   DL,'0'
            ADD  EAX,EDX
            INC   CX
Rep1?:     CMP  CL,Buf  [1]
            JNGE Rep1b
EndRep1:   MOV NUM,EAX
            MOV  DL,10
            MOV  AH,2
            INT   21H
            MOV  CX,8
Rep2b:     ROL   NUM,4
           MOV   EDX,NUM
           AND    DL,0FH
           CMP   DL,9
           JG     Else1
Then1:     ADD   DL,'0'
           JMP   Endif1
Else1:    ADD   DL,'A'-10
Endif1:   MOV   AH,2
         INT     21H
Rep2?:   LOOP  Rep2b
EndRep2: MOV   AX,4C00H
          INT    21H
_TEXT   ENDS
         END   START
刚刚学汇编,感觉很糊涂,书上的是DX,然后提示类型必须相同,我改成DL之后就提示invalid instruction operands这个了。然后我在网上看有的说加上WORD PTR (BYTE PTR),可是我不管加哪个都还是不对,到底为什么错了呀
------解决思路----------------------

我是用的masm5.0,真的没问题呀(我以智商担保,我没有复制错),你也用masm试试吧。
另外你说的有问题的地方我也没看出有什么问题,感觉是对的呀。
  相关解决方案