首页
社区
课程
招聘
按照字单元来寻呢,还是按照字节单元来寻呢?[求助]
发表于: 2007-3-13 10:13 4376

按照字单元来寻呢,还是按照字节单元来寻呢?[求助]

2007-3-13 10:13
4376
刚刚开始学汇编,遇到一个问题,就是在我寻址的时候,到底是按照字单元来寻呢,还是按照字节单元来寻呢?如果不用 byte ptr或者word ptr这些东西默认的是字呢还是字节?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
默认是什么,看你的什么编译器
OD的编译器默认是DWORD
2007-3-13 13:15
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哦,这个和编译器有关系啊 ,我用的masm5.0,应该是什么呀?
2007-3-13 15:41
0
雪    币: 200
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不懂,,,寻址还有字节和字的区别么,,是看位数的吧,,32位/64位

而byte ptr,word ptr是指的按字节还是字来取地址的值吧,表示数据大小
2007-3-13 22:04
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
举个例子,比如说

已知 DS=1000h

mov ax,[1234h]

这个时候是把 11234这个字节单元扩展后放到ax里呢还是把11235和11234两个单元的内容拼成一个字放到ax里来?

为什么?
2007-3-14 06:36
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谁个解答下啊?
2007-3-14 10:04
0
雪    币: 200
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
先不看ds的偏移,1234h是代表寻址,还是立即数?

寻址的话,直接将1234地址的word值取出放入ax

立即数的话,就是直接将1234放入ax

ds非零,就需要加上ds的偏移量,间接寻址

而为什么取的是字的内容,是根据mov指令的取址以及操作码的大小来定,ax自身是一个字的内容,所以取值会取1234+1000的字值放入ax,而不是字节值再零扩展或符号扩展到ax

象C语言里的语句

char ch;
short int a;

在取ch的值时,mov指令是mov al, byte ptr [ch]

而在取a的值时,mov指令是mov ax, word ptr [a]

如果有个变量long int b;

b = a;

指令mov就会符号扩展
movsx eax, word ptr [a]
mov dword ptr , eax
2007-3-14 11:19
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
明白了,谢谢!
2007-3-14 12:09
0
游客
登录 | 注册 方可回帖
返回
//