日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[汇编语言]-第十章 ret,retf,call指令

發布時間:2025/3/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [汇编语言]-第十章 ret,retf,call指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1- ret 相當于 pop IP;用棧中數據,修改IP內容.從而實現近轉移.

執行后(IP)=0, CS:IP指向代碼段的第一條指令.

1 assume cs:code 2 stack segment 3 db 16 dup(0) 4 stack ends 5 code segment 6 mov ax,4c00h 7 int 21h 8 start: 9 mov ax,stack 10 mov ss,ax 11 mov sp,16 12 mov ax,0 13 push ax 14 mov bx,0 15 ret 16 code ends 17 end start

?

2- retf 相當于 pop IP; pop CS;用棧中數據修改CS,IP內容.從而實現遠轉移.

執行后 CS:IP指向代碼段的第一條指令.

1 assume cs:code 2 stack segment 3 db 16 dup(0) 4 stack ends 5 code segment 6 mov ax,4c00h 7 int 21 8 start: 9 mov ax,stack 10 mov ss,ax 11 mov sp,16 12 mov ax,0 13 push cs 14 push ax 15 retf 16 code ends 17 end start

reference:

http://bbs.csdn.net/topics/340237304

?

3- 實現從內存1000:0000處開始執行指令

1 assume cs:code 2 stack segment 3 db 16 dup(0) 4 stack ends 5 code segment 6 mov ax,4c00h 7 int 21 8 start: 9 mov ax,stack 10 mov ss,ax 11 mov sp,16 12 mov ax,1000H 13 push ax 14 mov ax,0 15 push ax 16 retf 17 code ends 18 end start

?

4- call 標號 (將當前的IP壓棧后,轉到標號處執行指令)

push Ip

jmp near ptr 標號

1 assume cs:code 2 code segment 3 start: 4 mov ax,0 5 call s 6 inc ax 7 s: 8 pop ax 9 code ends 10 end start

?

?ax=6

CPU指令執行的過程:

1- 從CS:IP指向的內存單元讀取指令,讀取的指令,進入指令緩沖器.

2- (IP) = (IP) + 所讀取的指令長度, 從而指向下一條指令

3- 執行指令, 轉到1, 重復這個過程

?

5-?call far ptr 標號

push cs?

push ip

jmp far ptr 標號

執行步驟分析:

CS:1000 IP:3 時 讀取call far ptr s放入緩存, ip = IP + 5 = 8

push cs ?//1000

push ip ?//8

跳轉到s執行

pop ax ?//ax = 8

add ax,ax // ax = 8 + 8 = 10 寄存器中存放的數為16進制

pop bx ?//bx = 1000

add ax,bx ?//ax = 1000 + 10 = 1010

最終結果 ax = 1010

?

6- call 16位寄存器

push IP

jmp 16位寄存器 ?// mov IP,16位寄存器; jmp IP

ax=000B

sp是棧頂地址,[bp]棧頂值為5

ax = 6 + 5 = B

reference:

http://bbs.csdn.net/topics/100016651

?

?

轉載于:https://www.cnblogs.com/galoishelley/p/3788306.html

總結

以上是生活随笔為你收集整理的[汇编语言]-第十章 ret,retf,call指令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。