成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文詳解匯編語(yǔ)言call和ret指令

開(kāi)發(fā) 前端
在我們平時(shí)編程過(guò)程中,都會(huì)用到函數(shù)或子程序,反匯編就是call指令。可以使程序跳轉(zhuǎn)到指定代碼段,執(zhí)行結(jié)束后,返回主程序繼續(xù)向下執(zhí)行。

什么是call?

在我們平時(shí)編程過(guò)程中,都會(huì)用到函數(shù)或子程序,反匯編就是call指令。可以使程序跳轉(zhuǎn)到指定代碼段,執(zhí)行結(jié)束后,返回主程序繼續(xù)向下執(zhí)行。

分析如下代碼段,程序執(zhí)行后,ax寄存器中的數(shù)值為多少?

首先,mov ax,0執(zhí)行結(jié)束后,ax寄存器中的值為0,該指令機(jī)器碼長(zhǎng)度為3字節(jié),因此,ip=3。

call far ptr s執(zhí)行后,程序會(huì)跳轉(zhuǎn)到標(biāo)號(hào)s處,但是需要將該指令的下一條指令地址保存起來(lái),s段執(zhí)行后要返回。因此push cs=1000,push ip=8。再跳轉(zhuǎn)cs=1000,ip=9。

pop ax執(zhí)行后,ax=8h;

add ax,ax執(zhí)行后,ax=10h;

pop bx執(zhí)行后,bx=1000h;

add ax,bx執(zhí)行后,ax=1010h;

由于s沒(méi)有返回,最終ax寄存器中的值為1010h。

call 寄存器

call后面不僅可以加標(biāo)號(hào),也可以直接加寄存器。

call ax執(zhí)行后,將下一條指令inc ax的偏移地址ip入棧,因此sp指向的內(nèi)存中數(shù)據(jù)為5。然后ip=6;

mov bp,sp執(zhí)行后,bp指向的內(nèi)存空間數(shù)據(jù)也為5;

add ax,[bp]執(zhí)行后,相當(dāng)于ax=ax+5=11,即0bh。

轉(zhuǎn)移地址在內(nèi)存中的call指令

語(yǔ)法:call word ptr 內(nèi)存單元地址

相當(dāng)于:

push IP
jmp word ptr 內(nèi)存單元地址

執(zhí)行如下指令:

mov sp,10h
mov ax,0123h
mov ds:[0],ax
call word ptr ds:[0]

最終跳轉(zhuǎn)到ds:[0]=0123h,(IP)=0123H,SP=0EH(10H-2H=0EH)。

語(yǔ)法:call dword ptr 內(nèi)存單元地址

相當(dāng)于:

push CS
push IP
jmp dword ptr 內(nèi)存單元地址

執(zhí)行如下指令:

mov sp,10h
mov ax,0123h
mov ds:[0],ax
mov word ptr ds:[2],0
call dword ptr ds:[0]

執(zhí)行后,ds中數(shù)據(jù)類型為dword,0-1的word類型數(shù)據(jù)為0123h,因此(IP)=0123h;2-3的word類型數(shù)據(jù)為0,因此(CS)=0,入棧dword類型是4個(gè)字節(jié)數(shù)據(jù),(SP)=10h-4h=0ch。

閱讀程序

分析如下程序,最終ax寄存器中的值為多少?(debug調(diào)試會(huì)因?yàn)橹袛鄦?wèn)題造成和理論分析不一致)

首先,棧空間16個(gè)字節(jié)0,ss棧段為ax,ds數(shù)據(jù)段也是ax;

ax初始值為0;

當(dāng)執(zhí)行call時(shí),首先將call下方第一個(gè)inc ax的IP入棧,(SP)=0EH,并跳轉(zhuǎn)至ds:[0EH],這個(gè)值就是SP指向空間保存的IP,程序正常向下運(yùn)行,inc ax執(zhí)行三次,最終(ax)=03H。

ret指令

call指令執(zhí)行時(shí),將當(dāng)前指令的下一條指令偏移IP保存入棧,然后跳轉(zhuǎn)至標(biāo)號(hào)處,也就是我們說(shuō)的函數(shù),函數(shù)執(zhí)行完畢,ret指令會(huì)將IP彈出。

上述程序,call s執(zhí)行三次add ax,ax,最終(ax)=8,然后返回至mov bx,ax,(bx)=08h。


責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2020-12-18 08:49:11

相對(duì)跳轉(zhuǎn)絕對(duì)跳轉(zhuǎn)指令

2010-11-09 09:51:52

匯編語(yǔ)言

2011-01-14 14:08:17

Linux匯編語(yǔ)言

2011-01-14 14:39:32

Linux匯編語(yǔ)言

2023-11-22 16:10:59

編程語(yǔ)言機(jī)器語(yǔ)言

2022-07-26 00:00:03

語(yǔ)言模型人工智能

2022-06-26 00:18:05

企業(yè)產(chǎn)品化變量

2018-01-11 14:58:40

2012-02-09 09:00:54

匯編語(yǔ)言

2021-02-11 09:01:32

CSS開(kāi)發(fā) SDK

2017-01-12 22:36:30

2022-04-20 10:25:18

量子區(qū)塊鏈計(jì)算機(jī)

2011-01-14 14:22:50

Linux匯編語(yǔ)言

2021-06-11 10:02:39

語(yǔ)言編程開(kāi)發(fā)

2011-01-04 17:08:10

匯編語(yǔ)言

2023-02-28 18:09:53

Javascript定時(shí)器

2020-12-21 06:13:52

高可用Nacos服務(wù)端

2021-05-11 11:05:43

SAL子查詢

2022-08-05 08:22:10

eBPFHTTP項(xiàng)目

2023-02-23 19:32:03

DOMJavascript開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文成人在线 | 91精品亚洲| 日日操视频 | 日韩精彩视频 | 久久国产精品色av免费观看 | 亚洲国产小视频 | 99这里只有精品视频 | 综合色在线 | 亚洲欧美国产精品久久 | 成人性生交大片免费看r链接 | 国产精品爱久久久久久久 | 欧洲一级毛片 | 亚洲国产精选 | 成人欧美一区二区三区白人 | 免费成人高清在线视频 | 欧美成人一区二免费视频软件 | 99精品欧美| 免费久久久 | 日韩欧美在线观看视频 | 欧美一区二区久久 | 亚洲一级黄色 | 日韩在线视频一区 | 国产精品高清一区二区三区 | 国产午夜精品一区二区三区在线观看 | 黄色片视频 | 看真人视频一级毛片 | 欧美日韩在线一区二区三区 | 亚洲精品不卡 | 91在线精品一区二区 | 精品久久久久久久久久久久久 | 一区二区三区视频 | 欧美日韩一卡 | www.久久久.com | 日韩在线免费播放 | 亚洲高清在线观看 | 久久蜜桃av一区二区天堂 | 国产精品一区二区视频 | 亚洲综合小视频 | 黄网站在线播放 | 中文在线播放 | 国产精品久久久久久 |