invalid instruction operands

LDQ777 2014-12-30 05:27:56
_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),可是我不管加哪个都还是不对,到底为什么错了呀
...全文
844 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LDQ777 2014-12-30
  • 打赏
  • 举报
回复
引用 3 楼 a1193561652 的回复:
我是用的masm5.0,真的没问题呀(我以智商担保,我没有复制错),你也用masm试试吧。 另外你说的有问题的地方我也没看出有什么问题,感觉是对的呀。
其实我也觉得没问题,对照了之前写的几个程序都差不多,不过就是现实出错,可能是我系统有问题吧,谢谢啦
纵横车 2014-12-30
  • 打赏
  • 举报
回复

我是用的masm5.0,真的没问题呀(我以智商担保,我没有复制错),你也用masm试试吧。
另外你说的有问题的地方我也没看出有什么问题,感觉是对的呀。
LDQ777 2014-12-30
  • 打赏
  • 举报
回复
引用 1 楼 a1193561652 的回复:
刚刚直接复制了一遍去编译,没提示有错误呀。
我复制了一遍然后编译就提示了1212.asm(19):error A2022:instruction operands must be the same size 我就是按照老师说的在cmd里面转到masm文件后ml /c /omf 1212.asm这样子的
纵横车 2014-12-30
  • 打赏
  • 举报
回复
刚刚直接复制了一遍去编译,没提示有错误呀。

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧