MOV BYTE PTR es:[di+BX],al什么意思?我不懂汇编,谢谢!

wisenowa 2002-01-07 02:06:29
...全文
1530 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wisenowa 2002-01-09
  • 打赏
  • 举报
回复
不行呀
wisenowa 2002-01-09
  • 打赏
  • 举报
回复
问题已解决
zara 2002-01-08
  • 打赏
  • 举报
回复
那试试将 BYTE PTR 去掉, 因为操作数 al 实际上已指定了
wisenowa 2002-01-08
  • 打赏
  • 举报
回复
我用DELPHI5.0编译的
zara 2002-01-07
  • 打赏
  • 举报
回复
可能是编译器的版本太低了的缘故 .
snowingedge 2002-01-07
  • 打赏
  • 举报
回复
就是一个基址变址(based indexed addressing)寻址方式呀,没有错呀
pmagic 2002-01-07
  • 打赏
  • 举报
回复

[BX+DI]
swallowzhou 2002-01-07
  • 打赏
  • 举报
回复
sorry.
DI+BX应该没有错。
les di,self //将self的地址偏移量送入di,基址送入es中。
所以MOV BYTE PTR es:[di+BX],al中必须指明es和di,bx也可以用。这个寄存器组合应该没有问题。

wisenowa 2002-01-07
  • 打赏
  • 举报
回复
我对汇编一点都不懂
还望您能指点
谢谢
swallowzhou 2002-01-07
  • 打赏
  • 举报
回复
我也很久没用汇编了,可能是当ES作基址寄存器时,不能用BX或DI,你将它们分别用另一个寄存器来代替,看行不行。
现在手边也没有汇编的书。不好意思。
wisenowa 2002-01-07
  • 打赏
  • 举报
回复
错误提示:无效的寄存器组合
wisenowa 2002-01-07
  • 打赏
  • 举报
回复
为什么MOV BYTE PTR es:[di+BX],al有错呢?
谢谢
还有50分
swallowzhou 2002-01-07
  • 打赏
  • 举报
回复
BYTE就是指字节啊。
BX在你的程序中初始化为0,然后循环递增,一直到40H.
wisenowa 2002-01-07
  • 打赏
  • 举报
回复
BYTE 设么意思?
BX 一般为多少?
以下是出错代码
les di,self
add di,CMOSRec//CMOSRec是结构,已定义
MOV CX,40H
MOV AH,0H
MOV BX,0
@1:
MOV DX,70H
MOV AL,AH
OUT DX,AL
INC DX
in AL,dx
MOV BYTE PTR es:[di+BX],al
INC AH
INC BX
DEC CX
JNZ @1

谢谢
swallowzhou 2002-01-07
  • 打赏
  • 举报
回复
将al中的数据送入以es为基址,di+bx为偏移量所指的地址中去,以字节为单位。
wisenowa 2002-01-07
  • 打赏
  • 举报
回复
各位
拜托了

21,459

社区成员

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

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