能力值:
(RANK:570 )
|
-
-
2 楼
默认是什么,看你的什么编译器
OD的编译器默认是DWORD
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
哦,这个和编译器有关系啊 ,我用的masm5.0,应该是什么呀?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
不懂,,,寻址还有字节和字的区别么,,是看位数的吧,,32位/64位
而byte ptr,word ptr是指的按字节还是字来取地址的值吧,表示数据大小
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
举个例子,比如说
已知 DS=1000h
mov ax,[1234h]
这个时候是把 11234这个字节单元扩展后放到ax里呢还是把11235和11234两个单元的内容拼成一个字放到ax里来?
为什么?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
谁个解答下啊?
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
明白了,谢谢!
|
|
|