能力值:
(RANK:350 )
|
-
-
2 楼
LEA ESI,DWORD PTR DS:[ESI+ESI*4] 这句是优化指令,相当于esi=ESI+ESI*4=5*ESI
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢看雪老大,老大亲自指导倍感荣幸!
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
为了使指令中存储单元操作数具有明确的属性,我们可以使用强制属性操作符PTR。其一般格式为:
数据类型 PTR 地址表达式
其中:数据类型是前面所学的各种数据类型,常用的数据类型有:BYTE、WORD、DWORD、NEAR和FAR等。
为了明确指令中存储单元的属性,可把指令“MOV [BX], 1H”可改写成:
MOV byte ptr [BX], 1H 或 MOV word ptr [BX], 1H
在指令中用操作符PTR强制后,不管其后的地址表达式原数据类型是什么,在本指令中就以PTR前面的类型为准。该强制属性只在本指令有效,是一种临时性的属性,它不会改变原内存单元的定义属性。
例如:
W1 DW 1234H, 5678H
B1 DB 2
DB 5
D1 DD 23456789H
…
MOV AX, word ptr b1 ;把B1开始的二个字节拼接成一个字,执行后,(AX)=0502H
MOV BH, byte ptr w1 ;把字W1的低字节传送给BH,执行后,(BH)=34H
MOV CH, byte ptr w1+1 ;把字W1的高字节传送给CH,执行后,(CH)=12H
MOV word ptr d1, 12H ;把双字D1的低字修改成0012H,执行后,(D1)=23450012H
上面指令中的强制属性是临时属性,它不能改变这些变量在定义时的永久属性。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
真是详细,明白了PTR是程序要为数据建立临时属性的意思。
"LEA ESI,DWORD PTR DS:[ESI+ESI*4] "
DS :是不是可以理解为ESI中的数据的段地址在DS寄存器中呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
万分感谢,解释的很详细。
|
|
|