新手问个关于寻址的菜问题
代码如下
.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 的地方。
请问是为什么?