设置在汇编语言编程我的理解:86分寄存器(EAX,AX,AH)是从内存中的数据
EAX : 22 66 77 55
AX : 77 55
AH : 77
AL : 55
但我真的不明白从阵列读取数据时,它是如何工作的指针的偏移量:
.data
arrayW WORD 1233h,2245h, 1176h
ptr2 PWORD arrayW
.code
mov esi, ptr2
mov ax, [esi]
mov ah, [esi + 1]
mov ax, [esi + 2]
mov eax, [esi + 2]
MOV AX,[ESI]寄存器EAX = 12331233.我想寄存器EAX将是000?
此外,MOV AX,[ESI + 2]寄存器= EAX = 12334455.我不明白寄存器如何成为12334455.
可有人请给我解释一下所有的值执行后会有寄存器吗?
'mov ah,[esi + 1]'执行后寄存器的值发生了变化吗?因为它是WORD所以[esi + 1]没有指向任何正确的东西? [esi + 2]指向第二个元素? – student001
@ student001:这是汇编语言。一切都只是字节。他们按顺序到达那里并不重要,因为你使用了'WORD 1233h,2245h'而不是'BYTE 33h,12h,45h,22h'。 CPU不知道或关心指令的任何“含义”,它只从'[esi + 1]'加载1个字节。 –
对不起,我是新手。但我只是想确保我明白。所以如果我使用'DWORD 12344h' ='BYTE 44h,23h,01h'。是对的吗?还有一个,'BYTE 1,2,3,4' ='WORD 4321h'? – student001