幾個彙編指令iret,ret,int

2022-08-11 11:27:16 字數 2641 閱讀 4275

ret指令用棧中的資料,修改ip的值,從而實現近轉移。

cpu執行ret指令時,進行下面兩步操作:

(ip)=((ss)*16+(sp))

(sp)=(sp)+2;

另一種用法 ret n (n為整數)

等效於(ip)=((ss)*16+(sp))

(sp)=(sp)+2;

(sp)=(sp)+n;

例如ret 4

pop ip

add sp,4

例:push eax

call @msg ;call標號是把eip壓入堆疊,然後再跳到標號@msg處

;[標記1]

;繼續**....

@msg:

push 0

push 0

push eax

push 0

call dword ptr [messageboxa]

ret ;這是取出eip,返回到呼叫處,繼續執行[標記1]

1.恢復ip(instruction pointer):(ip)←((sp)+1:(sp)),(sp)←(sp)+2

2.恢復cs(code segment):(cs)←((sp)+1:(sp)),(sp)←(sp)+2

3.恢復中斷前的psw(program status word),即恢復中斷前的標誌暫存器的狀態。

(fr)←((sp)+1:(sp)),(sp)←(sp)+2

4.恢復esp(返回許可權發生變化)

5.恢復ss(返回許可權發生變化)

int 指令

1) 中斷型別號

2) 標誌暫存器入棧,if=0.tf=1

3) cs ,ip入棧

4) ip=(n*4),cs=(n*4+2)

awatch

指定乙個變數,如果這個變數被讀或者被寫,則暫停程式執行,在偵錯程式中顯示資訊,並等待下乙個除錯命令。參考rwatch和watch命令。

backtrace

顯示函式呼叫得所有棧框架(stack frames)的蹤跡和當前函式的引數的值,bt是這個命令的簡寫。

break

設定乙個斷點,這個命令需要指定**行或者函式名作為引數

clear

刪除乙個斷點,這個命令需要制定**行或者函式名作為引數

continue

偵錯程式停止的地方繼續執行

ctrl-c

在當前位置停止執行正在執行的程式,斷點在當前行

disable

禁止斷點功能,這個命令需要禁止的斷點在斷點列表索引值作為引數

display

在斷點的停止的地方,顯示指定的表示式的值。(顯示變數)

enable

允許斷點功能,這個命令需要允許的斷點在斷點列表索引值作為引數

finish

繼續執行,知道當前函式返回

ignore

忽略某個斷點制定的次數。例:ignore 4 23忽略斷點4的23次執行,在第24次的時候中斷

info breakpoints

檢視斷點資訊

info display

檢視設定的需要顯示的表示式的資訊

kill

終止當前debug的程序

list

顯示10行**。如果沒有提供引數給這個命令,則從當前行開始顯示10行**。如果提供了函式名作為引數,則從函式開頭顯示。如果提供**行的編號作為引數,這一行作為開頭顯示。

load

動態載入乙個可執行檔案到偵錯程式。

next

執行下一行的源**的所有指令。如果是函式呼叫,則也當作一行源**,執行到此函式返回

nexti

執行下一行的源**中的一條彙編指令

print

顯示變數的值

ptype

顯示變數的型別

return

強制從當前函式返回

run從程式開始的地方執行

rwatch

指定乙個變數,如果這個變數被讀,則暫停程式執行,在偵錯程式中顯示資訊,並等待下乙個除錯命令。參考rwatch和watch命令。

set設定變數的值。例如:set nval=54將把54儲存到nval變數中

step

繼續執行程式下一行源**的所有指令。如果是呼叫函式,這個命令將進入函式的內部,單步執行函式中**。

stepi

繼續執行程式下一行源**中的彙編指令。如果是函式呼叫,這個命令將進入函式的內部,單步執行函式中的彙編**。

txbreak

在當前函式的退出的點上設定乙個臨時的斷點(只可使用一次)。

undisplay

刪除乙個display設定的變數顯示。這個命令需要將display list中的索引做引數。

watch

指定乙個變數,如果這個變數被寫,則暫停程式執行,在偵錯程式中顯示資訊,並等待下乙個除錯命令。參考rwatch和watch命令。

whatis

顯示變數的值和型別。

xbreak

在當前函式的退出的點上設定乙個斷點。

幾個常用(偽)彙編指令詳解

sdram例程 從nand flash啟動cpu時,cpu會自動將nand flash開始的4k資料複製到4kb的內部ram中 起始位址0 然後位址0開始執行。本例程先用彙編設定好sdram,將程式從內部ram複製到sdram,然後跳轉到sdram執行。源 包括sdram.s gpio.c s3c2...

mo彙編指令 彙編指令大全

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...

彙編 彙編指令大全

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...