这些MOV指令对吗?

toann 2004-11-01 09:18:44
做的很晕,望大虾指点。

(1)MOV BP, AL ;类型不匹配

(2)MOV WORD_OP[BX+4*3][DI], SP

(3)MOV WORD_OP1, WORD_OP2 ;两操作数不能同为内存操作数

(4)MOV AX, WORD_OP1[DX]

(5)MOV SAVE_WORD, DS

(6)MOV SP, SS:DATA_WORD[BX][SI]

(7)MOV [BX][SI], 2

(8)MOV AX, WORD_OP1 + WORD_OP2 ;两地址相加无意义

(9)MOV AX, WORD_OP1 - WORD_OP2 + 100

(10)MOV WORD_OP1, WORD_OP1 - WORD_OP2
...全文
839 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
koyer 2004-11-02
  • 打赏
  • 举报
回复
并不是程度一致就可以传输数据的,要不你在DS,CS,ES,SS,FS,GS等寄存器传递试一下,
能行吗,或许MASM6。11+ 支持,但我现在用的MASM 5。0 是不行的。
toann 2004-11-02
  • 打赏
  • 举报
回复
多谢大家的意见,我再想想:)我们学的是IBMPC的汇编,这种题做起来实在是......

我会尽快给分结帖的,先谢谢大家了

希望楼下的继续讨论^_^
大熊猫侯佩 2004-11-01
  • 打赏
  • 举报
回复
MOV BP, AL ;x 类型不匹配
MOV WORD_OP[BX+4*3][DI], SP ;x 非法操作数
MOV WORD_OP1, WORD_OP2 ;x 不能都为内存操作数
MOV AX, WORD_OP1[DX] ;x 非法使用 DX 寄存器
MOV SAVE_WORD, DS
MOV SP, SS:DATA_WORD[BX][SI]
MOV [BX][SI], 2 ;x 非法操作数,长度未指定
MOV AX, WORD_OP1 + WORD_OP2 ;x 两个重定位表不能相加
MOV AX, WORD_OP1 - WORD_OP2 + 100
MOV WORD_OP1, WORD_OP1 - WORD_OP2
大熊猫侯佩 2004-11-01
  • 打赏
  • 举报
回复
要看你前面定义的 WORD_OP 变量是什么类型
但从该变量名字 和 题意来看 该变量应该是
WORD 型,这样与 SP 寄存器长度一致,所以
是正确的。
koyer 2004-11-01
  • 打赏
  • 举报
回复
2 中的WORD_OP[BX+4*3][DI] 是STRUC 类型的。是一种类似堆栈的为操作。
koyer 2004-11-01
  • 打赏
  • 举报
回复
或许我用的MASM 版本太低了,我开始学习汇编的时候这个问题经常遇上。想PUSHA 一类的很多指令都不能用。
toann 2004-11-01
  • 打赏
  • 举报
回复
对不起对不起,忘了说明:所有标志符均为字变量~~
2中的WORD_OP[BX+4*3][DI],在汇编的时候能不能知道确切的地址?

大虾指点~~~~~
大熊猫侯佩 2004-11-01
  • 打赏
  • 举报
回复
楼上你实际试一下,5是可以的。
koyer 2004-11-01
  • 打赏
  • 举报
回复
5 也错了,DS 也不能直接转移到内存,也要通过通用寄存器。正确的是:
MOV AX,DS MOV SAVE-WORD,AX
koyer 2004-11-01
  • 打赏
  • 举报
回复
所以 2 是错的!
koyer 2004-11-01
  • 打赏
  • 举报
回复
SP 寄存器不能直接转移到内存单元,要通过通用寄存器AX,BX 等。否则编译的时候会提示错误!!!
大熊猫侯佩 2004-11-01
  • 打赏
  • 举报
回复
Sorry,是偶搞错了! 2 的确是对的。
我把word_op看成是byte型的了。
大熊猫侯佩 2004-11-01
  • 打赏
  • 举报
回复
2

我个人觉得也没有定义变量长度,在编译时会出错,应该改成:

MOV WORD PTR WORD_OP[BX+4*3][DI], SP
csdsjkk 2004-11-01
  • 打赏
  • 举报
回复
2是对的,
7应这样写:
MOV byte ptr [BX][SI], 2
MOV word ptr [BX][SI], 2
MOV dword ptr [BX][SI], 2
toann 2004-11-01
  • 打赏
  • 举报
回复
多谢大虾,能否就2、4、7详细解释一下?
没写原因的指令都是对的吧?
^_^

21,494

社区成员

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

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