新手问个关于寻址的菜问题

b87437734 2009-06-29 12:33:25
代码如下
.386 ;表示要用到386指令
.model Flat,stdcall ;32位程序,要用flat啦!;stadcall,标准调用
option casemap:none ;区别大小写
include windows.inc ;包括常量及结构定义

include kernel32.inc ;函数原型声明
include user32.inc

includelib kernel32.lib ;用到的引入库
includelib user32.lib

.data;数据区,定义2个字符串
szText db "Hello world!",0
szCaption db "abcdefg实验",0

.code ;代码开始执行处
start:
;mov ds,1
lea eax,szCaption
mov bl,49
mov [eax],bl
inc eax
mov bl,50
mov [eax],bl
invoke MessageBox,NULL,addr szText,addr szCaption,MB_OK

;调用MessageBoxAPI函数
invoke ExitProcess,NULL ;程序退出
end start;结束


我就想问 mov [eax],bl 这种寻址方式应书上叫寄存器间接询址
根据书上 这句意识应该是把BL的内容 保存到 内存地址为 DS*4+EAX 的地方。
但是实际上这句执行却是 把BL的内容 保存到 内存地址为 EAX 的地方。

请问是为什么?
...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
deep_pro 2009-06-29
  • 打赏
  • 举报
回复
却不再是 DS*4+EAX这样的含义了
deep_pro 2009-06-29
  • 打赏
  • 举报
回复
寄存器相对寻址只有 SI DI BX BP可以
你这种写法只有.386以上才支持
deep_pro 2009-06-29
  • 打赏
  • 举报
回复
只是说386以上允许你mov [eax],bl

但是你使用 SI DI BX BP相对寻址还是原来的含义

自己试试就知道了
b87437734 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 deep_pro 的回复:]
却不再是 DS*4+EAX这样的含义了
[/Quote]

还有 是不是386以上的只要是相对寻址 也没有ss*4这项了?
b87437734 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 deep_pro 的回复:]
寄存器相对寻址只有 SI DI BX BP可以
你这种写法只有.386以上才支持
[/Quote]

是不是386以上的只要是相对寻址 都没有DS*4这项了?

21,459

社区成员

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

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