




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第七章 子程序設(shè)計 返回目錄 練習(xí)題741 單項選擇題 1在子程序中,如果利用堆棧保護(hù)現(xiàn)場,在恢復(fù)現(xiàn)場時,先壓入堆棧的內(nèi)容( )。 a先彈出堆棧 b后彈出堆棧 c不分先后彈出堆棧 d任意彈出堆棧 2下列敘述不正確的是( )。 a在子程序中的現(xiàn)場保護(hù)只能用堆棧來實現(xiàn)。 b在子程序中的現(xiàn)場保護(hù)用堆棧來實現(xiàn)是其中的一種方法。 c在子程序中的現(xiàn)場保護(hù)可以有多種實現(xiàn)方法。 d在子程序中的現(xiàn)場保護(hù)可以將要保護(hù)的內(nèi)容送內(nèi)存變量來實現(xiàn)。 3下列定義子程序的是( )。a pname proc b pname proc pname ends endm c pname proc d pname proc pname
2、 endp pname end 4子程序重定位可選在內(nèi)存中的整個區(qū)域內(nèi),在進(jìn)行程序設(shè)計時,子程序應(yīng)采用( )。 a絕對地址 b相對地址 c邏輯地址 d物理地址 5下列敘述不正確的是( )。 a在子程序中可以再次調(diào)用子程序。b在主程序中一般用跳轉(zhuǎn)指令轉(zhuǎn)移到子程序。c在子程序中一般用返回指令返回到主程序。d在主程序中一般用調(diào)用指令轉(zhuǎn)移到子程序。 6下列敘述正確的是( )。 a執(zhí)行一條段內(nèi)返回指令,先從堆棧彈出兩個字節(jié)的內(nèi)容,然后sp指針減2。 b執(zhí)行一條段內(nèi)返回指令,先sp指針減2,然后從堆棧彈出兩個字節(jié)的內(nèi)容。 c執(zhí)行一條段內(nèi)返回指令,先sp指針加2,然后從堆棧彈出兩個字節(jié)的內(nèi)容。 d執(zhí)行一條段
3、內(nèi)返回指令,先從堆棧彈出兩個字節(jié)的內(nèi)容,然后sp指針加2。 7下列敘述正確的是( )。 a執(zhí)行一條段間調(diào)用指令,先將cs、ip的內(nèi)容壓棧,然后將目的地址送cs和ip。 b執(zhí)行一條段間調(diào)用指令,先將目的地址送cs和ip,然后將cs、ip的內(nèi)容壓棧。 c執(zhí)行一條段間調(diào)用指令,先將cs、ip的內(nèi)容壓棧,然后sp指針加2。 d執(zhí)行一條段間調(diào)用指令,先將cs、ip的內(nèi)容壓棧,然后sp指針減2。 8下列敘述不正確的是( )。 a在匯編語言程序中,每一個過程允許有多條ret指令。 b在匯編語言程序中,每一個過程只允許出現(xiàn)一條ret指令。 c在匯編語言程序中,每一個過程結(jié)束之前一定有一條ret指令。 d在匯編
4、語言程序中,以過程形式表示的代碼段一定有一條ret指令存在。 9下列敘述中屬于子程序嵌套的是( )。 a主程序調(diào)用子程序1 b主程序調(diào)用子程序2 c主程序調(diào)用子程序3 d子程序1調(diào)用子程序210下列敘述中屬于子程序直接遞歸調(diào)用的是( )。 a子程序1調(diào)用子程序2 b子程序2調(diào)用子程序3 c子程序3調(diào)用子程序4 d子程序4調(diào)用子程序411在進(jìn)行dos功能調(diào)用前,其功能號應(yīng)先送( )。 aah寄存器 bbh寄存器 cch寄存器 ddh寄存器12執(zhí)行“int 10h”指令時,中斷向量地址是( )。 a10h b20h c30h d40h13執(zhí)行“int 10h”指令時,其中斷處理程序的入口地址存放在
5、( )。 a10h13h b20h23h c30h33h d40h43h14執(zhí)行“int 10h”指令時,壓入堆棧的內(nèi)容有( )。 apsw、cs、ip bcs、ip cpsw、ip dpsw、cs15在進(jìn)行字符串顯示的dos功能調(diào)用時,要求字符串的最后一個字符是( )。 a0 b0 c d0dh742 多項選擇題 1一般的子程序說明文件有( )。 a子程序名 b功能描述 c入口參數(shù) d出口參數(shù) 2在子程序的設(shè)計中,通常采用現(xiàn)場保護(hù)和現(xiàn)場恢復(fù)的方法有( )。 a寄存器法 b堆棧法 c約定單元法 d變元法3子程序的參數(shù)傳遞方法有( )。 a寄存器法 b約定單元法 c堆棧法 d變元法 4下列敘述中
6、屬于子程序嵌套的有( )。 a子程序1調(diào)用子程序2,子程序2調(diào)用子程序3。 b主程序調(diào)用子程序2。 c主程序調(diào)用子程序3。 d子程序3調(diào)用子程序4。5下列敘述中屬于子程序遞歸調(diào)用的有( )。 a子程序1調(diào)用子程序2,子程序2調(diào)用子程序3。 b子程序2調(diào)用子程序3,子程序3調(diào)用子程序2。 c子程序3調(diào)用子程序4,子程序4調(diào)用子程序3。 d子程序3調(diào)用子程序3。 6在執(zhí)行“call far ptr m”指令后,完成的操作有( )。 acs、ip入棧 bsp+2 csp+4 d目的地址送cs、ip 7下列敘述正確的有( )。 a如果主程序和子程序a在同一代碼段,則用“call a”可以實現(xiàn)子程序的調(diào)
7、用。 b如果主程序和子程序a不在同一代碼段,則用“call a”可實現(xiàn)子程序的調(diào)用。c如果主程序和子程序a在同一代碼段,則用“call far ptr a”可以實現(xiàn)子程序的調(diào)用。d如果主程序和子程序a不在同一代碼段,則用“call far ptr a”可以實現(xiàn)子程序的調(diào)用。 8下列敘述不正確的有( )。 a在子程序設(shè)計中,不論采用什么參數(shù)傳遞方法,須將所有寄存器的內(nèi)容保護(hù)起來。 b在子程序設(shè)計中,為了防止寄存器內(nèi)容被破壞,通常將有關(guān)寄存器內(nèi)容保護(hù)起來。 c在子程序設(shè)計中,都是采用寄存器法傳遞參數(shù)。 d在子程序設(shè)計中,子程序都只安排一個出口。 9在進(jìn)行字符串輸入的dos功能調(diào)用時,輸入字符串緩沖
8、區(qū)中的內(nèi)容是( )。 a第一單元存放字符個數(shù)。b第二單元存放的是實際輸入字符的個數(shù)。 c第三單元開始存放輸入字符的ascii碼。 d最后一個單元存放回車符。10如果要將buf字符緩沖區(qū)的內(nèi)容顯示輸出,在采用dos功能調(diào)用前,必須( )。 a將buf字符緩沖區(qū)的段地址送ds。b將buf字符緩沖區(qū)的段地址送es。 c將buf字符緩沖區(qū)的偏移地址送dx。 d將功能號9送ah寄存器。743 填空題 1調(diào)用子程序通常用 指令,返回調(diào)用程序通常用 指令。 2在子程序的設(shè)計中,通常用堆棧來保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場。而堆棧的操作原則是 。 3如果主程序和子程序在同一個代碼段,則主程序調(diào)用子程序時只改變 地址。如果主
9、程序和子程序不在同一個代碼段,則主程序調(diào)用子程序時要改變 地址。 4在調(diào)用程序中調(diào)用子程序的call指令執(zhí)行后,壓人堆棧的內(nèi)容是 指令的下一條指令的地址。在子程序中的ret指令將返回 指令繼續(xù)執(zhí)行程序。 5子程序(過程)的定義是以“過程名 ”開始,以“過程名 ”結(jié)束。 6在調(diào)用子程序前,如果將要參加運(yùn)算的數(shù)送寄存器,這種參數(shù)傳遞方法稱為 ;如果將要參加運(yùn)算的數(shù)送指定的內(nèi)存單元,這種參數(shù)傳遞方法稱為 ;如果將要參加運(yùn)算的數(shù)壓入堆棧,這種參數(shù)傳遞方法稱為 。 7一個子程序調(diào)用另一個子程序稱為 ;一個子程序直接或間接調(diào)用該子程序本身稱為 。 8以過程定義的子程序有兩種類型的屬性,他們分別是 和 。
10、9在程序設(shè)計中,利用堆棧不僅可以保存 ,而且還可以保存主程序和子程序之間傳遞的參數(shù),這些參數(shù)既可以是 ,也可以是 。10在程序的執(zhí)行過程中,近程調(diào)用時call指令執(zhí)行完后壓入堆棧的內(nèi)容是 字節(jié),遠(yuǎn)程調(diào)用時call指令執(zhí)行完后壓入堆棧的內(nèi)容是 字節(jié)。11在編制子程序時, 的使用是十分頻繁的,它不僅可以用來保存返回的地址,而且還可以用來存放主程序與子程序之間傳遞的 。12子程序的正確執(zhí)行是由主程序中的 指令和子程序的 指令來完成的。13在進(jìn)行“int 45h”功能調(diào)用時,其中斷類型號為 ,調(diào)用的功能號應(yīng)送 。14dos系統(tǒng)功能調(diào)用是根據(jù)中斷類型號從中斷向量表中取中斷處理程序的入口地址。每一個中斷處
11、理程序的入口地址占用內(nèi)存 字節(jié),其中的低地址字用來存放中斷處理程序的 ,高地址字用來存放中斷處理程序的 。15中斷向量表占用內(nèi)存 字節(jié),它的物理地址范圍是 。16在dos系統(tǒng)功能調(diào)用中,01號功能調(diào)用表示 ,它的出口參數(shù)在 中。02號功能調(diào)用表示 ,它的入口參數(shù)在 中。17在dos系統(tǒng)功能調(diào)用中,要實現(xiàn)字符串顯示輸出應(yīng)使用 號功能調(diào)用,要實現(xiàn)字符串輸入應(yīng)使用 號功能調(diào)用。18在進(jìn)行字符串輸入的dos系統(tǒng)功能時,如果鍵盤輸入字符“345a”后按回車鍵,則在鍵盤輸入緩沖區(qū)的第二單元的值是 ,在第三到第七單元的值依次是 。19在進(jìn)行字符串顯示輸出的dos系統(tǒng)功能時,要求輸出字符串以 結(jié)尾。20在進(jìn)行
12、dos功能調(diào)用時,壓入堆棧的內(nèi)容是 。744 簡答題1簡述在程序設(shè)計中,采用子程序結(jié)構(gòu)有哪些優(yōu)點?2簡述過程的定義與子程序的定義有何區(qū)別?3簡述一個完整的子程序結(jié)構(gòu)應(yīng)包含哪幾方面的內(nèi)容?4在子程序的設(shè)計過程中,子程序的現(xiàn)場保護(hù)和現(xiàn)場恢復(fù)通常采用哪幾種方法?哪一種方法使用較為方便?5調(diào)用程序和子程序之間一般使用哪幾種參數(shù)的傳遞方法?他們各自的特點是什么?6簡述段內(nèi)調(diào)用和段間調(diào)用時堆棧有何不同?7簡述子程序嵌套調(diào)用的基本原理。8簡述遞歸調(diào)用的基本原理。9簡述dos系統(tǒng)功能調(diào)用的使用方法。10簡述dos系統(tǒng)功能調(diào)用和中斷返回時堆棧的變化?745 程序分析題 1現(xiàn)有程序如下:stack segment
13、 stack stackdw 100 dup(0)stack endsdata segmentbuf db 100 dup(0)data endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ax,stackmov ss,axlea di,bufl: mov ah,1int 21hcmp al,0dhjz exitcall stojmp lexit: mov byte ptrdi,lea dx,buf mov ah,9 int 21h mov ah,4ch int 21hsto proccmp
14、al,30hjb nextcmp al,39hja nextmov di,alinc dinext: retsto endpcode endsend start 請回答:(1)sto子程序完成的功能是什么? (2)該程序完成的功能是什么? 2現(xiàn)有程序如下:stack segment stack stackdw 100 dup(0)stack endsdata segmentbuf 1 db 100 dup(?)buf2 db 200,0,200 dup(0)eq db 兩個字符串相等!neq db 兩個字符串不相等!flag db 0data endscode segmentassume cs
15、:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ex,axmov ax,stackmov ss,axlea dx,buf2mov ah,0ahint 21hmov cx,100lea si,buf1lea di,buf22call scmpcmp flag,0jz nlea dx,eqmov ah,9int 21hjmp exitn: lea dx,neq mov ah,9int 21hexit: mov ah,4chint 21hscmp proc push axmov ah,di1mov al,9mov ah,0cmp ax,cxjz
16、 rcldcmpsbjnz rmov flag,0ffhjmp r1 r: mov flag,0 r1: pop axretscmp endpcode endsend start 請回答:(1)scmp子程序完成的功能是什么? (2)該程序完成的功能是什么? 3現(xiàn)有程序如下:stack segment stack stackdw 100 dup(0)stack endsdata segmentbuf db 20c db 4data endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ax,st
17、ackmov ss,axmov bl,cmov si,buf l1: push sicall subp1call subp2pop siinc sidec bljnz l1 mov ah,4chint 21hsubp1 proc push ax push dx l2: mov dl,20hmov ah,2int 21hdec sijnz l2pop dxpop axretsubp1 endpsubp2 procpush axpush dxmov cx,8 l3: mov dl,*mov ah,2int 21hloop l3mov dl,0dhmov ah,2int 21hmov dl,0ahm
18、ov ah,2int 21hpop dxpop axretsubp2 endpcode endsend start 請回答:(1)subp1子程序完成的功能是什么? (2)subp2子程序完成的功能是什么? (3)該程序完成的功能是什么?4現(xiàn)有程序如下:stack segment stack stackdw 100 dup(0)stack endsdata segmenta db 30b db 9c dw 5data endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ax,stackmov
19、ss,axmov cx,cmov bh,bmov bl,a l1: push bxcall subp1call subp2pop bxinc blsub bh,2loop l1 mov ah,4chint 21hsubp1 proc push ax push dx l2: mov dl,20hmov ah,2int 21hdec bljnz l2pop dxpop axretsubp1 endpsubp2 procpush axpush dx l3: mov dl,*mov ah,2int 21hdec bhjnz l3mov dl,0dhmov ah,2int 21hmov dl,0ahmo
20、v ah,2int 21hpop dxpop axretsubp2 endpcode endsend start 請回答:(1)subp1子程序完成的功能是什么? (2)subp2子程序完成的功能是什么? (3)該程序完成的功能是什么? 5現(xiàn)有程序如下: stack segment stack stack dw 100 dup(0) stack endsdata segment buf1 db 0e5h,01h,73h,34h,3ah,0d5h c1 = buf1 buf2 db 22h,12h,67h,35h,73h,0b3h c2 db buf2 data ends code segmen
21、t assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax mov ax,stack mov ss,ax lea bx,buf1 mov cx,c1 call sort lea bx,buf2 mov cx,c2 call sort mov ah,4ch int 21h sort proc push ax push dxpush sipush dimov dx,cxdec dxmov si,1l1: mov di,siinc dimov al,bxsi1 l2: cmp al,bxdi1jbe nextxchg bxdi1,alm
22、ov bxsi1,al next: inc dicmp di,cxjbe l2inc sicmp si,dxjbe l1pop dipop sipop dxpop axret sort endp code ends end start 請回答:(1)該子程序完成的功能是什么? (2)程序執(zhí)行完后,buf1和buf2的內(nèi)容各是什么? 6現(xiàn)有程序如下: stack segment stack stack dw 100 dup(0) stack endsdata segment buf dw 20e5h,4501h,7653h,1234h,354ah,60d5h c = (buf)/2 smax d
23、w 0 data ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax mov ax,stack mov ss,axlea ax,bufpush axmov ax,cpush axcall maxmov ah,4chint 21h max procpush bpmov bp,sppush sipush axpush bxpush cxpushfmov si,bp6mov cx,bp4mov bx,sidec cxadd si,2cld max1: lodswcmp ax,bxjna nextx
24、chg ax,bx next: loop max1mov smax,bxpopfpop cxpop bxpop axpop sipop bpret 4 max endp code ends end start 請回答:(1)該子程序完成的功能是什么? (2)程序執(zhí)行完后,smax中的內(nèi)容為何值? 7現(xiàn)有程序如下:stack segment stack db 100 dup(0) stack ends data segment buf dw 1064h n = (buf)/2 str db 9 dup( ) data ends code segment assume cs:code,ds:dat
25、a,ss:stack start:mov ax,data mov ds,axmov ax,stackmov ss,axlea si,buf mov cx,nl: mov ax,si lea di,strcall cbdadd si,2loop lmov ah,4ch int 21h cbd proc push ax push bx push cx push dx push di push di or ax,ax jns plus mov byte ptr di, inc di neg ax plus: mov cx,5 mov bx,10 l1: mov dx,0 div bx add dl,
26、30h mov di,dl inc di or ax,ax jz l2 loop l1 l2: mov byte ptrdi,0dh inc di mov byte ptrdi,0ah inc dimov byte ptrdi, pop dx mov ah,9 int 21h pop di pop dx pop cx pop bx pop ax ret cbd endp code ends end start 請回答:(1)該子程序完成的功能是什么? (2)程序執(zhí)行完后,顯示輸出的結(jié)果是什么? 8現(xiàn)有程序如下:stack segment stack stackdw 100 dup(0)stac
27、k endsdata segmentnum1 dq 7654321089abcdefhnum2 dq 0fedcba9801234567hresul dt 0data endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov es,axmov ax,stackmov ss,axlea si,num1lea bx,num2lea di,resulcall admov ah,4chint 21had procpush axpush cxpushfclccldmov cx,4again:lodswadc
28、ax,bxstoswadd bx,2loop againmov ax,0adc ax,0mov di,axpopfpop cxpop axretad endpcode endsend start 請回答:(1)該子程序完成的功能是什么? (2)程序執(zhí)行完后,resul單元的內(nèi)容是什么? 9現(xiàn)有程序如下:stack segment stack stackdw 100 dup(0)stack endsdata segmentstr db please input string(09):asc db 20,0,20 dup(0)bcdb db 20 dup(0)data endscode segme
29、ntassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ax,stackmov ss,axlea dx,strmov ah,9int 21hlea dx,ascmov ah,10int 21hlea bx,asc2mov cl,bx1mov ch,0lea si,bcdbcall tabmov ah,4chint 21htab procpush axadd bx,cxl: dec bxmov al,bxand al,0fhmov si,alinc siloop lpop axrettab endpcode endsend start 請回答:(1)該子程序完成的功能是什么? (2)該程序完成的功能是什么?10現(xiàn)有程序如下:stack segment stack stackdw 100 dup(0)stack endsdata segmentbuf dw 8376h,9028h,4ab4h,0947h
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶市物業(yè)服務(wù)合同范本示例
- 保理合同(日元)
- 房屋使用權(quán)合同轉(zhuǎn)租協(xié)議樣本
- 檢測服務(wù)合同范本:機(jī)構(gòu)合作篇
- 資產(chǎn)配置基金合同例文
- 度標(biāo)準(zhǔn)私人承包協(xié)議合同
- 農(nóng)產(chǎn)品購銷合同經(jīng)典合同范文
- 房地產(chǎn)項目苗木采購合同書模板
- 家電配件的表面裝飾與標(biāo)識技術(shù)考核試卷
- 中介服務(wù)行業(yè)的人力資源服務(wù)標(biāo)準(zhǔn)考核試卷
- DB11 938-2022 綠色建筑設(shè)計標(biāo)準(zhǔn)
- 部編版語文八年級下冊第六單元名著導(dǎo)讀《鋼鐵是怎樣煉成的》問答題 (含答案)
- 2022譯林版新教材高一英語必修二單詞表及默寫表
- 全國青少年機(jī)器人技術(shù)等級考試:二級培訓(xùn)全套課件
- 九種中醫(yī)體質(zhì)辨識概述課件
- (外研版)英語四年級下冊配套同步練習(xí) (全書完整版)
- 小學(xué)數(shù)學(xué)計算能力大賽實施方案
- 古詩詞誦讀《虞美人》課件-統(tǒng)編版高中語文必修上冊
- 文物學(xué)概論-中國古代青銅器(上)
- 制作拉線課件
- 某物業(yè)公司能力素質(zhì)模型庫(參考)
評論
0/150
提交評論