2011-03-05 70 views
0

我正在做一些彙編作業,並認爲讓我的頭腦發生的最好方法是觀察程序運行時寄存器中會發生什麼。在Visual Studio中您可以查看寄存器,但是我正在執行的操作只能更改我的某個寄存器的低8位內容,所以我不知道該看什麼。誰能幫我嗎?如何查看VS2008中EAX寄存器較低部分發生了什麼?

這裏的問題,我運行代碼:

會有什麼每個下列指令後目標操作數的十六進制值執行順序?

TITLE MASM Template      (main.asm) 

INCLUDE Irvine32.inc 

.data var1 SBYTE -4, -2, 3, 1 

.code main PROC 

    call Clrscr 

    mov al, var1 mov ah, [var1+3] 

    exit main ENDP 

END main 

Im相當肯定的答案是-4第二條語句後的第一個語句和1之後,但我想看看它在寄存器中。

和寄存器窗口,我要看看在VS: enter image description here

+0

你想將-4(0xfc)移動到al?並將0x01移到啊? – Zimbabao 2011-03-05 19:27:28

回答

2

ahal寄存器只是爲了eax兩個低字節的別名,所以你可以監測寄存器eax進入窗口。在你的例子中,ah0x36al0x65。您可能還需要mov al, [var1]才能獲得該地址的價值,但我不確定。

+0

好吧,所以在第一條語句之後,我的EAX寄存器是:75C136FC在第二條75C101FC之後。 – darko 2011-03-05 19:19:41

+0

@Matt:是的,這些都是正確的價值觀。 'al'部分是最後兩個十六進制數字(在你的例子中是'FC')。 'ah'部分是倒數第二對(在第二個例子中是'01')。 – 2011-03-05 19:20:26

+0

這些值的哪個部分是al和ah寄存器,只是前16位的值? – darko 2011-03-05 19:21:32