




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章call和ret指令ret和retf指令call指令ret和call指令配合完成子程序調(diào)用mul乘法指令模塊化程序設(shè)計(jì)一、返回指令ret和retf格式:ret
;實(shí)現(xiàn)近轉(zhuǎn)移,相當(dāng)于popip 格式:retf;實(shí)現(xiàn)遠(yuǎn)轉(zhuǎn)移,相當(dāng)于popip,popcsassumecs:codestack segmentdb16dup(0)stack endscode segmentmovax,4c00hint21hstart:movax,stack movss,ax movsp,16 movax,0 pushax movbx,0 retcode endsend startassumecs:codestack segmentdb16dup(0)stack endscode segmentmovax,4c00hint21hstart:movax,stack movss,ax movsp,16 movax,0 pushcs pushax movbx,0 retfcode endsend start一、返回指令ret和retf格式:ret
;實(shí)現(xiàn)近轉(zhuǎn)移,相當(dāng)于popip 格式:retf;實(shí)現(xiàn)遠(yuǎn)轉(zhuǎn)移,相當(dāng)于popip,popcs例10-1.補(bǔ)全程序,實(shí)現(xiàn)從內(nèi)存1000:0處開始執(zhí)行指令。assume cs:codestack segment db16dup(0)stack endscode segmentstart: movax,stack movss,ax movsp,16 movax,
pushax movax,
pushax retfcode endsend startret和retf指令執(zhí)行時(shí),將當(dāng)前堆棧內(nèi)容分別出棧給ip或ip和cs,以實(shí)現(xiàn)指令的近或遠(yuǎn)轉(zhuǎn)移。二、call指令執(zhí)行call指令的功能相當(dāng)于:1、puship或pushcs、puship;2、修改當(dāng)前ip或ip和cs指向目的地址。Call指令的主要格式:根據(jù)位移轉(zhuǎn)移轉(zhuǎn)移的目的地址在指令中轉(zhuǎn)移地址在寄存器中轉(zhuǎn)移地址在內(nèi)存中
1、依據(jù)位移進(jìn)行轉(zhuǎn)移的call指令格式:
call標(biāo)號(hào)功能:將當(dāng)前IP壓棧,IP=IP+16位的位移量,轉(zhuǎn)移到標(biāo)號(hào)處執(zhí)行。例10-2下面的程序執(zhí)行后,AX中的數(shù)值為多少??jī)?nèi)存地址 機(jī)器碼 匯編指令1000:0 B80000 MOVAX,01000:3 E80100 CALLS1000:6 40 INCAX1000:7 58 S:POPAX2、轉(zhuǎn)移的目的地址在指令中的call指令格式:
callfarptr標(biāo)號(hào)功能:
將當(dāng)前CS、IP壓棧,用標(biāo)號(hào)所在地址修改CS和IP實(shí)現(xiàn)遠(yuǎn)轉(zhuǎn)移。例10-3下面的程序執(zhí)行后,AX中的數(shù)值為多少??jī)?nèi)存地址 機(jī)器碼 匯編指令1000:0 B80000 MOVAX,01000:3 9A09000010 CALLFARPTRS1000:8 40 INCAX1000:9 58 S:POPAX ADDAX,AX POPBX ADDAX,BX3、轉(zhuǎn)移地址在寄存器中的call指令格式:
callreg(16位的寄存器)功能:
將當(dāng)前IP壓棧,用寄存器中的值修改IP實(shí)現(xiàn)近轉(zhuǎn)移。例10-4下面的程序執(zhí)行后,AX中的數(shù)值為多少??jī)?nèi)存地址 機(jī)器碼 匯編指令1000:0 B80600 MOVAX,61000:2 FFD0 CALLAX1000:5 40 INCAX1000:6 MOVBP,SP ADDAX,[BP]4、轉(zhuǎn)移地址在內(nèi)存中的call指令格式:
callword(dword)ptr[內(nèi)存單元]功能:
將當(dāng)前IP或IP、CS壓棧,用內(nèi)存單元中的字或雙字修改IP或IP和CS。movsp,10hmovax,0123hmovds:[0],axmovwordptrds:[2],0calldwordptrds:[0]執(zhí)行后IP=?CS=?例10-5下面的程序執(zhí)行后,AX中的數(shù)值為多少?Assume cs:codeStack segment dw8dup(0)Stack endsCode segmentStart:movax,stack movss,ax movsp,16 movds,ax movax,0 callwordptrds:[0eh] incax incax incaxCode endsEnd startss(ds):000:000100:000200:000300:000400:000500:000600:000700:000800:000900:000A00:000B00:000C00:000D00:000E00:000F00:0010spspIP4、轉(zhuǎn)移地址在內(nèi)存中的call指令格式:
callword(dword)ptr[內(nèi)存單元]功能:
將當(dāng)前IP或IP、CS壓棧,用內(nèi)存單元中的字或雙字修改IP或IP和CS。例10-5下面的程序執(zhí)行后,ax和bx中的數(shù)值為多少?assume cs:codestack segment dw8dup(0)stack endscode segmentstart:movax,data movss,ax movsp,16 movwordptrss:[0],offsets movss:[2],cs calldwordptrss:[0] nops: movax,offsets subax,ss:[0ch] movbx,cs subbx,ss:[0eh]code endsend startss:000:000100:000200:000300:000400:000500:000600:000700:000800:000900:000A00:000B00:000C00:000D00:000E00:000F00:0010spsp1900CSCSsp1800AX=0001hBX=0000h二、call指令執(zhí)行call指令的功能相當(dāng)于:1、puship或pushcs、puship;2、修改當(dāng)前ip或ip和cs指向目的地址。Call指令的主要格式:根據(jù)位移轉(zhuǎn)移轉(zhuǎn)移的目的地址在指令中轉(zhuǎn)移地址在寄存器中轉(zhuǎn)移地址在內(nèi)存中Call標(biāo)號(hào)
Callfarptr標(biāo)號(hào)
Callreg(16位)Callword(dword)ptr[內(nèi)存]jmp標(biāo)號(hào)jmpfarptr標(biāo)號(hào)jmpregjmpword(dword)ptr[內(nèi)存]三、call和ret配合使用(實(shí)現(xiàn)子程序調(diào)用)問題10-1下面程序返回前,BX中的值為多少?assumecs:codecode segmentstart:movax,1 movcx,3 calls movbx,ax movax,4c00h int21hs: addax,ax loops
retcode endsend start
源程序 內(nèi)存中的情況(設(shè)程序從1000:0處裝入)Assumecs:code Stacksegmentdb8dup(0) 1000:0000 0000000000000000db8dup(0) 1000:0008 0000000000000000Stack ends Code segmentStart: movax,stack 1001:0000 B80010 movss,ax 1001:0003 8ED0 movsp,16 1001:0005 BC1000 movax,1000 1001:0008 B8E803 calls 1001:000B E80500 movax,4c00h 1001:000E B8004C int21h 1001:0011 CD21S: addax,ax 1001:0013 03C0 ret 1001:0015 C3Code endsEnd start使用call和ret實(shí)現(xiàn)子程序:子程序的格式框架:具有子程序的源程序的框架:標(biāo)號(hào): 指令
retassumecs:codecode segmentstart:
calls1 movax,4c00h int21hs1:
calls2
rets2:
retCode endsEnd start四、乘法指令mul格式:mulreg mul[內(nèi)存單元]功能:字節(jié)(8位)或字(16位)的無符號(hào)相乘。說明:兩個(gè)相乘的數(shù)位數(shù)相同,8位乘法(乘數(shù)和被乘數(shù)都為8位數(shù));16位乘法(乘數(shù)和被乘數(shù)都為16位。)8位乘法中,一個(gè)乘數(shù)默認(rèn)在AL中,另一個(gè)由指令給出,16位的結(jié)果默認(rèn)保存在AX中。16位乘法中,一個(gè)乘數(shù)默認(rèn)在AX中,另一個(gè)由指令給出,32位的結(jié)果中高位保存在DX中,低位在AX中。例:計(jì)算100×10Moval,100Movbl,10Mulbl例:計(jì)算100×10000Movax,100Movbx,10000Mulbx五、模塊化程序設(shè)計(jì)
用call和ret指令可實(shí)現(xiàn)匯編語言中的模塊化設(shè)計(jì),可使用call指令在主程序中調(diào)用子程序來解決子問題,子問題解決后用ret指令來返回主程序。一、子程序中的參數(shù)和結(jié)果例:計(jì)算N的3次方的子程序;說明:計(jì)算N的3次方;參數(shù):(BX)=N;結(jié)果:(DX:AX)=N3Cube:movax,bx mulbx mulbx ret注:在編寫程序時(shí),應(yīng)對(duì)程序有必要的注釋內(nèi)容。子程序的注釋中應(yīng)包含子程序的功能、參數(shù)和結(jié)果的說明。編程:計(jì)算data段中第一組數(shù)據(jù)的3次方,結(jié)果保存到后面的一組dword單元中。Assume cs:codeData segment dw1,2,3,4,5,6,7,8 dd0,0,0,0,0,0,0,0Data endsCode segment start: movax,data movds,ax movsi,0 movdi,16 mo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年安徽省肥東縣二中高三年級(jí)第二學(xué)期第一次月考?xì)v史試題含解析
- 成都中醫(yī)藥大學(xué)《工程光學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東舞蹈戲劇職業(yè)學(xué)院《醫(yī)療器械臨床評(píng)價(jià)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025屆廣東省梅州市五華縣高三4月份模擬考試英語試題含解析
- 2025年黑龍江省綏化市綏棱縣林業(yè)局中學(xué)高三下學(xué)期開學(xué)調(diào)研試題英語試題含解析
- 整本書閱讀《鄉(xiāng)土中國(guó)》同步練習(xí) 統(tǒng)編版高中語文必修上冊(cè)
- 泰州職業(yè)技術(shù)學(xué)院《影視劇劇本分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 防拐防騙教育課件
- 2025海底隧道盾構(gòu)施工分包合同
- 2025年公司試用期勞務(wù)合同模板
- 危險(xiǎn)化學(xué)品目錄2023
- YY/T 0825-2011牙科學(xué)牙齒外漂白產(chǎn)品
- 浙江省醫(yī)療機(jī)構(gòu)麻醉藥品、精神藥品管理實(shí)施細(xì)則
- 《中國(guó)近現(xiàn)代史綱要》 課件 第十一章 中國(guó)特色社會(huì)主義進(jìn)入新時(shí)代
- 機(jī)關(guān)單位申請(qǐng)要人的請(qǐng)示范文
- 鈾礦冶安全規(guī)程
- 國(guó)標(biāo)熱鍍鋅鋼管規(guī)格尺寸理論重量表
- 設(shè)計(jì)方案投標(biāo)技術(shù)標(biāo)文件
- 圓來如此簡(jiǎn)單公開課優(yōu)質(zhì)課件獲獎(jiǎng)
- (本科)審計(jì)(第五版)全套教學(xué)課件完整版PPT
- GB∕T 3639-2021 冷拔或冷軋精密無縫鋼管
評(píng)論
0/150
提交評(píng)論