汇编语言第七章子程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第七章子程序设计返回目录练习题7.4.1单项选择题1.在子程序中,如果利用堆栈保护现场,在恢复现场时,先压入堆栈的内容()。A.先弹出堆栈B.后弹出堆栈C.不分先后弹出堆栈D.任意弹出堆栈2.下列叙述不正确的是()。A.在子程序中的现场保护只能用堆栈来实现。B.在子程序中的现场保护用堆栈来实现是其中的一种方法。C.在子程序中的现场保护可以有多种实现方法。D.在子程序中的现场保护可以将要保护的内容送内存变量来实现。3.下列定义子程序的是()。A.PNAMEPROCB.PNAMEPROC……PNAMEENDSENDMC.PNAMEPROCD.PNAMEPROC……PNAMEENDPPNAMEEND4.子程序重定位可选在内存中的整个区域内,在进行程序设计时,子程序应采用()。A.绝对地址B.相对地址C.逻辑地址D.物理地址5.下列叙述不正确的是()。A.在子程序中可以再次调用子程序。B.在主程序中一般用跳转指令转移到子程序。C.在子程序中一般用返回指令返回到主程序。D.在主程序中一般用调用指令转移到子程序。6.下列叙述正确的是()。A.执行一条段内返回指令,先从堆栈弹出两个字节的内容,然后SP指针减2。B.执行一条段内返回指令,先SP指针减2,然后从堆栈弹出两个字节的内容。C.执行一条段内返回指令,先SP指针加2,然后从堆栈弹出两个字节的内容。D.执行一条段内返回指令,先从堆栈弹出两个字节的内容,然后SP指针加2。7.下列叙述正确的是()。A.执行一条段间调用指令,先将CS、IP的内容压栈,然后将目的地址送CS和IP。B.执行一条段间调用指令,先将目的地址送CS和IP,然后将CS、IP的内容压栈。C.执行一条段间调用指令,先将CS、IP的内容压栈,然后SP指针加2。D.执行一条段间调用指令,先将CS、IP的内容压栈,然后SP指针减2。8.下列叙述不正确的是()。A.在汇编语言程序中,每一个过程允许有多条RET指令。B.在汇编语言程序中,每一个过程只允许出现一条RET指令。C.在汇编语言程序中,每一个过程结束之前一定有一条RET指令。D.在汇编语言程序中,以过程形式表示的代码段一定有一条RET指令存在。9.下列叙述中属于子程序嵌套的是()。A.主程序调用子程序1B.主程序调用子程序2C.主程序调用子程序3D.子程序1调用子程序210.下列叙述中属于子程序直接递归调用的是()。A.子程序1调用子程序2B.子程序2调用子程序3C.子程序3调用子程序4D.子程序4调用子程序411.在进行DOS功能调用前,其功能号应先送()。A.AH寄存器B.BH寄存器C.CH寄存器D.DH寄存器12.执行“INT10H”指令时,中断向量地址是()。A.10HB.20HC.30HD.40H13.执行“INT10H”指令时,其中断处理程序的入口地址存放在()。A.10H~13HB.20H~23HC.30H~33HD.40H~43H14.执行“INT10H”指令时,压入堆栈的内容有()。A.PSW、CS、IPB.CS、IPC.PSW、IPD.PSW、CS15.在进行字符串显示的DOS功能调用时,要求字符串的最后一个字符是()。A.0B.‘0’C.‘$’D.0DH7.4.2多项选择题1.一般的子程序说明文件有()。A.子程序名B.功能描述C.入口参数D.出口参数2.在子程序的设计中,通常采用现场保护和现场恢复的方法有()。A.寄存器法B.堆栈法C.约定单元法D.变元法3.子程序的参数传递方法有()。A.寄存器法B.约定单元法C.堆栈法D.变元法4.下列叙述中属于子程序嵌套的有()。A.子程序1调用子程序2,子程序2调用子程序3。B.主程序调用子程序2。C.主程序调用子程序3。D.子程序3调用子程序4。5.下列叙述中属于子程序递归调用的有()。A.子程序1调用子程序2,子程序2调用子程序3。B.子程序2调用子程序3,子程序3调用子程序2。C.子程序3调用子程序4,子程序4调用子程序3。D.子程序3调用子程序3。6.在执行“CALLFARPTRM”指令后,完成的操作有()。A.CS、IP入栈B.SP+2C.SP+4D.目的地址送CS、IP7.下列叙述正确的有()。A.如果主程序和子程序A在同一代码段,则用“CALLA”可以实现子程序的调用。B.如果主程序和子程序A不在同一代码段,则用“CALLA”可实现子程序的调用。C.如果主程序和子程序A在同一代码段,则用“CALLFARPTRA”可以实现子程序的调用。D.如果主程序和子程序A不在同一代码段,则用“CALLFARPTRA”可以实现子程序的调用。8.下列叙述不正确的有()。A.在子程序设计中,不论采用什么参数传递方法,须将所有寄存器的内容保护起来。B.在子程序设计中,为了防止寄存器内容被破坏,通常将有关寄存器内容保护起来。C.在子程序设计中,都是采用寄存器法传递参数。D.在子程序设计中,子程序都只安排一个出口。9.在进行字符串输入的DOS功能调用时,输入字符串缓冲区中的内容是()。A.第一单元存放字符个数。B.第二单元存放的是实际输入字符的个数。C.第三单元开始存放输入字符的ASCII码。D.最后一个单元存放回车符。10.如果要将BUF字符缓冲区的内容显示输出,在采用DOS功能调用前,必须()。A.将BUF字符缓冲区的段地址送DS。B.将BUF字符缓冲区的段地址送ES。C.将BUF字符缓冲区的偏移地址送DX。D.将功能号9送AH寄存器。7.4.3填空题1.调用子程序通常用指令,返回调用程序通常用指令。2.在子程序的设计中,通常用堆栈来保护现场和恢复现场。而堆栈的操作原则是。3.如果主程序和子程序在同一个代码段,则主程序调用子程序时只改变地址。如果主程序和子程序不在同一个代码段,则主程序调用子程序时要改变地址。4.在调用程序中调用子程序的CALL指令执行后,压人堆栈的内容是指令的下一条指令的地址。在子程序中的RET指令将返回指令继续执行程序。5.子程序(过程)的定义是以“过程名”开始,以“过程名”结束。6.在调用子程序前,如果将要参加运算的数送寄存器,这种参数传递方法称为;如果将要参加运算的数送指定的内存单元,这种参数传递方法称为;如果将要参加运算的数压入堆栈,这种参数传递方法称为。7.一个子程序调用另一个子程序称为;一个子程序直接或间接调用该子程序本身称为。8.以过程定义的子程序有两种类型的属性,他们分别是和。9.在程序设计中,利用堆栈不仅可以保存,而且还可以保存主程序和子程序之间传递的参数,这些参数既可以是,也可以是。10.在程序的执行过程中,近程调用时CALL指令执行完后压入堆栈的内容是字节,远程调用时CALL指令执行完后压入堆栈的内容是字节。11.在编制子程序时,的使用是十分频繁的,它不仅可以用来保存返回的地址,而且还可以用来存放主程序与子程序之间传递的。12.子程序的正确执行是由主程序中的指令和子程序的指令来完成的。13.在进行“INT45H”功能调用时,其中断类型号为,调用的功能号应送。14.DOS系统功能调用是根据中断类型号从中断向量表中取中断处理程序的入口地址。每一个中断处理程序的入口地址占用内存字节,其中的低地址字用来存放中断处理程序的,高地址字用来存放中断处理程序的。15.中断向量表占用内存字节,它的物理地址范围是。16.在DOS系统功能调用中,01号功能调用表示,它的出口参数在中。02号功能调用表示,它的入口参数在中。17.在DOS系统功能调用中,要实现字符串显示输出应使用号功能调用,要实现字符串输入应使用号功能调用。18.在进行字符串输入的DOS系统功能时,如果键盘输入字符“345A”后按回车键,则在键盘输入缓冲区的第二单元的值是,在第三到第七单元的值依次是。19.在进行字符串显示输出的DOS系统功能时,要求输出字符串以结尾。20.在进行DOS功能调用时,压入堆栈的内容是。7.4.4简答题1.简述在程序设计中,采用子程序结构有哪些优点?2.简述过程的定义与子程序的定义有何区别?3.简述一个完整的子程序结构应包含哪几方面的内容?4.在子程序的设计过程中,子程序的现场保护和现场恢复通常采用哪几种方法?哪一种方法使用较为方便?5.调用程序和子程序之间一般使用哪几种参数的传递方法?他们各自的特点是什么?6.简述段内调用和段间调用时堆栈有何不同?7.简述子程序嵌套调用的基本原理。8.简述递归调用的基本原理。9.简述DOS系统功能调用的使用方法。10.简述DOS系统功能调用和中断返回时堆栈的变化?7.4.5程序分析题1.现有程序如下:STACKSEGMENTSTACK‘STACK’DW100DUP(0)STACKENDSDATASEGMENTBUFDB100DUP(0)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXLEADI,BUFL:MOVAH,1INT21HCMPAL,0DHJZEXITCALLSTOJMPLEXIT:MOVBYTEPTR[DI],‘$’LEADX,BUFMOVAH,9INT21HMOVAH,4CHINT21HSTOPROCCMPAL,30HJBNEXTCMPAL,39HJANEXTMOV[DI],ALINCDINEXT:RETSTOENDPCODEENDSENDSTART请回答:(1)STO子程序完成的功能是什么?(2)该程序完成的功能是什么?2.现有程序如下:STACKSEGMENTSTACK‘STACK’DW100DUP(0)STACKENDSDATASEGMENTBUF1DB100DUP(?)BUF2DB200,0,200DUP(0)EQDB‘两个字符串相等!$’NEQDB‘两个字符串不相等!$’FLAGDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVEX,AXMOVAX,STACKMOVSS,AXLEADX,BUF2MOVAH,0AHINT21HMOVCX,100LEASI,BUF1LEADI,BUF2+2CALLSCMPCMPFLAG,0JZNLEADX,EQMOVAH,9INT21HJMPEXITN:LEADX,NEQMOVAH,9INT21HEXIT:MOVAH,4CHINT21HSCMPPROCPUSHAXMOVAH,[DI-1]MOVAL,9MOVAH,0CMPAX,CXJZRCLDCMPSBJNZRMOVFLAG,0FFHJMPR1R:MOVFLAG,0R1:POPAXRETSCMPENDPCODEENDSENDSTART请回答:(1)SCMP子程序完成的功能是什么?(2)该程序完成的功能是什么?3.现有程序如下:STACKSEGMENTSTACK‘STACK’DW100DUP(0)STACKENDSDATASEGMENTBUFDB20CDB4DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVBL,CMOVSI,BUFL1:PUSHSICALLSUBP1CALLSUBP2POPSIINCSIDECBLJNZL1MOVAH,4CHINT21HSUBP1PROCPUSHAXPUSHDXL2:MOVDL,20HMOVAH,2INT21HDECSIJNZL2POPDXPOPAXRETSUBP1ENDPSUBP2PROCPUSHAXPUSHDXMOVCX,8L3:MOVDL,‘*’MOVAH,2INT21HLOOPL3MOVDL,0DHMOVAH,2INT21HMOVDL,0AHMOVAH,2INT21HPOPDXPOPAXRETSUBP2ENDPCODEENDSENDSTART请回答:(1)SUBP1子程序完成的功能是什么?(2)SUBP2子程序完成的功能是什么?(3)该程序完

1 / 105
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功