組合語言開發

2021-10-22 02:54:48 字數 1993 閱讀 2488

1.處理器指令的運算元:表示參與操作物件

具體的常量

儲存在暫存器中的資料

儲存在儲存器的變數

逗號前常是目的運算元,逗號後常是源運算元

mov eax,offset msg

2.偽指令的引數

常量、變數名、表示式等

可以有多個,引數之間用逗號分隔

msg byte』hello,assembly !』,13,10,0

3.注釋

分號開頭,占用乙個語句好

對語言沒有要求

4.段的簡化定義

資料段定義偽指令

.data ;建立於乙個資料段

**段定義偽指令

.code ;建立乙個**段

堆疊段定義偽指令

.stack ;建立乙個堆疊段

5.程式的開始和結束

程式開始執行的位置

使用乙個標號(例如:start)

作為彙編結束end偽指令的引數

應用程式執行終止

語句「exit 0」終止程式執行

返回作業系統,並提供乙個返回**(0)

源程式彙編結束

使用end偽指令語句,只是彙編結束

執行終止≠彙編結束

6.模板檔案(源程式框架)

;eg0000.

asm in windows console

include io32.inc ;包含32位輸入輸出檔案

.data ;定義資料段

.....

.;資料定義

.code ;定義**段

start:

;程式執行起始位置

.....

.;主程式

exit 0

;程式執行終止

.....

.;子程式

end start ;彙編結束

7.組合語言的第乙個程式

在資料段給出這個字串形式的資訊:

;資料段

msg byte 『hello,assembly!』,13,10,0

;定義要顯示的字串,(13,10)="\n",(,0)=字串結尾字元

在**段編寫顯示字串的程式

;**段

mov eax,offset msg ;指定字串的偏移位址

call dispmsg ;呼叫i/o子程式顯示資訊

完整的組合語言源程式

;eg0101.

asm include io32.inc ;包含32位輸入輸出檔案

.data ;定義資料段

msg byte 'hello,assembly!',13

,10,0

.code ;定義**段

start:

;程式執行起始位置

mov eax,offset msg

call dispmsg

exit 0

;程式執行終止

end start ;彙編結束

8.軟體系統

windows作業系統平台

masm 6.15匯程式設計序

Linux 組合語言開發

組合語言的優點是速度快,可以直接對硬體進行操作,這對諸如圖形處理等關鍵應用是非常重要的。linux 是乙個用 c 語言開發的作業系統,這使得很多程式設計師開始忘記在 linux 中還可以直接使用彙編這一底層語言來優化程式的效能。本文為那些在linux 平台上編寫彙編 的程式設計師提供指南,介紹 li...

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

組合語言 彙編指令

功能 用來進行資料傳輸。以 mov a,b 為例,相當於a b。具有以下形式 mov 暫存器,資料 mov 暫存器,暫存器 mov 暫存器,記憶體單元 mov 記憶體單元,暫存器 mov 段暫存器,暫存器 功能 用來做加法。以 add a,b 為例,相當於a a b。具有的形式,和 mov 一樣。功...