基址寻址模式与数组的问题

temanw 2020-06-03 01:38:33


PPT上面的,不太懂这是啥意思,怎么就是3 怎么就是4 然后加起来不是7吗,怎么又是10了


一脸懵逼。
...全文
755 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
temanw 2020-06-08
  • 打赏
  • 举报
回复
我想复现这个代码。然后找老师问去~
temanw 2020-06-08
  • 打赏
  • 举报
回复
报错提示 warning A4031:Operand types must match
temanw 2020-06-08
  • 打赏
  • 举报
回复
引用 8 楼 zara 的回复:
是不大好理解,尤其是它的想法和通常的 masm汇编器的规则还不同时。 ArrayW 从名字的字面上来看,是个 word 类型的数组,如果其起始地址是 4 的话,那 7 这个地址就尴尬了,它的跨了两个元素的,即前一元素的高字节和下一元素的低字节;所以,你的 ArrayW 的定义不合它的预定,可能是这样吧,ArrayW dw ?, 0700h, ?, ?, ...
那如果不看它名字,就把ArrayW 定义成DB的 Array DB 0,0,0,5 ArrayW DB 0,0,10,0,0,0,0,0,0,0 就像这样 可以吗, 但是编译的时候报错 MOV AX,[BX+ArrayW] 这个地方报错
zara 2020-06-08
  • 打赏
  • 举报
回复
只是 warning 应该还是会生成 obj 的吧,或者加上 word ptr 如 mov ax, word ptr [bx+ArrayW] 试试
zara 2020-06-07
  • 打赏
  • 举报
回复
是不大好理解,尤其是它的想法和通常的 masm汇编器的规则还不同时。
ArrayW 从名字的字面上来看,是个 word 类型的数组,如果其起始地址是 4 的话,那 7 这个地址就尴尬了,它的跨了两个元素的,即前一元素的高字节和下一元素的低字节;所以,你的 ArrayW 的定义不合它的预定,可能是这样吧,ArrayW dw ?, 0700h, ?, ?, ...
  • 打赏
  • 举报
回复
不知道楼主的例子是用的什么汇编器,但是可以明确地说,在MASM和MASM兼容汇编器(TASM、JWASM、FASM之类的)中,这5种写法是一样的
temanw 2020-06-06
  • 打赏
  • 举报
回复
按照大家说的,BX的值是3,ArrayW的值是4 地址7的值是10地址3的值是5 我想试一试~ 应该怎么复现呢 MOV BX,3 Array DB 0,0,0,5 ArrayW DW 0,0,10,0,0,0,0,0,0,0 这个样子是不是ArrayW就是4,地址3就是5,但是地址7是10好像不对欸 如果ArrayW是4,但是ArrayW是DW型的,每个元素之间地址+2,这个地址7的10应该怎么表示呢
Grey_22 2020-06-05
  • 打赏
  • 举报
回复
mov ax, [bx+ArrayW] 将bx+ArrayW后的数作为一个内存地址,去这个内存地址取数据放到ax里。 因为bx里存的是3,ArrayW对应的数是4,所以 mov ax, [3+4]。 3+4=7,所以 mov ax, [7]。 因为7有方括号所以代表去内存地址为7的地方取数据。 内存地址7对应的数据是10,所以将10给ax。
  • 打赏
  • 举报
回复
是一样的...
zara 2020-06-03
  • 打赏
  • 举报
回复
好像有些明白它的意思了,比如第三个,bx=3,[3]处为 5,[bx]=5,ArrayW 为 4,它认为结果就是 5+4 了,这是不对的吧,至少 masm不会这么认为,bx 和 ArrayW 都会被计算为地址,加起来后是最后的地址,再从那里取数据给 ax。用 masm 试过几个写法,生成的指令完全一样。
temanw 2020-06-03
  • 打赏
  • 举报
回复
引用 1 楼 zara 的回复:
也没看明白,感觉左边图里的 5个表示方式,结果是一样的?
好像是将的这五种的差异 前面两种是一样的。然后下面三个分别不一样 好郁闷
zara 2020-06-03
  • 打赏
  • 举报
回复
也没看明白,感觉左边图里的 5个表示方式,结果是一样的?

21,497

社区成员

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

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