學習筆記 用組合語言編寫乙個函式 實現兩個數相加

2021-07-05 06:01:32 字數 1540 閱讀 4975

c函式:

int add(int nnuma, int nnumb)

int _tmain(int argc, _tchar* argv)

組合語言實現:

執行過程:

執行前棧狀態:

首先執行push 0x4

push 0x3

執行後棧中內容

再執行call 00415fd7(呼叫函式,並將返回位址入棧)

執行後棧中內容

其中 00415ffa為返回位址

再執行push ebp(將ebp入棧,儲存其內容)

執行後棧中內容

再執行mov     ebp,esp

sub     esp,0xc (esp減12,開闢棧空間(大小按需))

執行後棧中內容

再執行xor     eax,eax

add     eax,dword ptr ss:[ebp+0x8]

add     eax,dword ptr ss:[ebp+0xc]

此時運算結束,結果7儲存在eax中

再執行mov     esp,ebp (釋放掉之前開闢的空間)

執行後棧中內容

再執行pop     ebp (恢復ebp)

執行後棧中內容

再執行retn    0x8 (按照棧中的返回位址返回,並將esp加8)

執行後棧中內容

至此,運算完成,運算結果7儲存在eax中,同時eip指向之前儲存的返回位址(00415ffa)

執行後棧狀態:

並且棧、ebp、esp都已恢復到運算前的狀態,保持了棧的平衡

用彙編寫乙個氣泡排序

datas segment 此處輸入資料段 data1 db 16 dup 3h,8h,6h,0h,2h,7h,5h,4h,9h,1h,23h,35h,88h,80h,20h,49h count dw data1 datas ends stacks segment 此處輸入堆疊段 stacks en...

用組合語言編寫程式輸出「Hello World 」

方法如下 步驟一 了解組合語言 結構 data segment 資料段,程式設計者可以把資料都放到這個段裡 資料部分.資料格式是 識別符號 db dw 資料。data ends 資料段結束處。edata segment 附加資料段,程式設計者可以把資料都放到這個段裡 附加資料部分.edata end...

Debug的使用 《組合語言》學習筆記

說明 括號內的紅色為助記。一 什麼是debug debug是dos windows提供的實模式 8086方式 程式的除錯工具。使用它,可以檢視cpu各種暫存器的內容 記憶體的情況和在機器碼級跟蹤程式的執行。二 常用的debug功能 用debug的 r命令 register 檢視 改變cpu暫存器的內...