_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试试吧。
另外你说的有问题的地方我也没看出有什么问题,感觉是对的呀。