設置在彙編語言編程我的理解: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