2013-10-11 268 views
1

我想知道MOV BYTE PTR指令的工作原理,我在這裏有一個例子,我無法理解結果。檢查它:MOV BYTE PTR指令如何工作?

MOV CL,BYTE PTR DS:[ESI] 

----Ollydbg show this------ 
DS:[01EA22E0]=41 ('A') 
CL=B0 

爲什麼CL = B0?爲什麼CL不是41?如果我去ESI轉儲,我有這個

01EA22E0: 41 47 00 C5 B9 F1 63 3C... But any B0 ;(

檢查我的打印:

mov byte ptr

我真的需要解決這個問題,任何幫助將受到歡迎。

+0

可能因爲您使用DS寄存器來指定段。嘗試刪除它,只是做'MOV CL,BYTE PTR [ESI]' – Elalfer

+2

@Elalfer:我想如果你沒有指定DS:,你會默認它,所以我認爲這不會有幫助。 –

+3

我不熟悉Ollydbg。你實際上*步*超過了指令,所以它被執行了嗎?你顯示的內容與要執行的指令*關於*是一致的。 –

回答

7

這是因爲調試器在該指令處停止,它並未實際執行。您必須再單步一次,查看CL寄存器更新的內存內容。