汇编语言模拟试题及答案一,单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题 1 分,共 20分)1 .指令JMPFARPTRDON 属于参考答案为:CA. 段内转移直接寻址B. 段内转移间接寻址C. 段间转移直接寻址D. 段间转移间接寻址[解析]略D .对无符号数条件转移采用JGE/JN 甘旨令,对有符号数条件转移用JAE/JN 呼旨令CMPS 指令是串比较指令;3.—个有128个字的数据区,它的起始地址为 12ABH: 00ABH,请给出这 个数据区最末一个字单元的物理地址是参考答案为 :C精品文档2.下列叙述正确的是参考答案为 :CA. 对两个无符号数进行比较采用 指令B.对两个无符号数进行比较采用CMP 指令C.对无符号数条件转移采用 JGE/JNI 指令CMP 指令,对两个有符号数比较用 CMPS CMPS 指令,对两个有符号数比较用 JAE/JNE 指令,对有符号数条件转移用[解析]对于无符号数和有符号数的比较都采用 CMP 指令;对两个无符号数的条件转移指令应是: JAE 、 JNB 、JBE 、JNA ;对两个有符号数的条件转移指令应是: JGE 、 JNL 、JLE 、JNG 。
A . 12CSBHB . 12B6BHC . 12C59HD .12BFEH [解析]末字与首字相隔(128- 1=) 127个字,且每个字占用2个字节,因 此末字单元的物理地址应为:首字单元的物理地址+( 128- 1) X 212AB X 10H + OOABH+( 128- 1) X2 1205914[解析]当只有一个存储器操作数时,这个操作数的类型不明确,例如选项 C 中的[BX ],没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需 用类型说明,如DECB YTEP TR[B 或] DECW0RD PTR[BX]但是在题目的选项C 中,没有指出存储器操作数类型,所以该指令是不正 确的;而其它选项中的指令均是正确的。
5.在进行二重循环程序设计时,下列描述正确的是参考答案为:AA .外循 环初值应置外循环之外;内循环初值应置内循环之外,外循环之内4. 在下列指令的表示中,不正确的是参考答案为 :CA .M OVAL ,[BX+SI] B . J MPSHORTDONIC .D EC[BX]D . M ULCL欢迎下载1精品文档B. 外循环初值应置外循环之内;内循环初值应置内循环之内C. 内、外循环初值都应置外循环之外D. 内、外循环初值都应置内循环之外,外循环之内[解析]循环参数置初值,应在进入循环以前给出。
6. 条件转移指令JNE的测试条件为参考答案为:AA. ZF=0B. CF= 0C. ZF=1D. CF=1[解析]略。
7. 8086CPU在基址加变址的寻址方式中,变址寄存器可以为参考答案为:DA. BX 或CXB. ex或SIC. DX或SID. SI 或DI[解析]略8. 已知BX=2000H SI=1234H 则指令MOVAX [BX+SI+2的源操作在()中。
参考答案为:AA. 数据段中偏移量为3236H的字节B. 附加段中偏移量为3234H的字节C. 数据段中偏移量为3234H的字节D. 附加段中偏移量为3236H的字节[解析]指令中的源操作数的寻址方式是相对基址变址寻址,且由于其中的基址寄存器采用的是BX,所以源操作数是在数据段中,其偏移量为:BX+SI+2=2000H+1234H+2=3236H9. 执行如下程序:MOVAX,0MOVBX,1MOVCX,100A:ADDAX,BXINCBXLOOPAHLT执行后(BX)=参考答案为:CA. 99B. 100C. 101D. 102[解析]1 )在进入循环之前,有三条指令分别初始化寄存器:A X为0、BX为1、CX为100;2)由于循环的控制部分采用的是LOOP指令,该指令有使CX减1,并判断其是否为0的功能,所以可知该循环的执行次数为100次;3)循环体的主要功能是每次循环使AX中的内容累加BX的内容,并使BX 的内容加1。
欢迎下载2精品文档4)直到最后一次(即第100次)循环时,加到AX中的BX的内容为100, 且使BX加1,即变为101后退出循环体。
所以当执行完该段程序后,BX的内容为101 。
5)该段程序的功能是(AX)= 1 + 2+ ••…+ 100= 505010 .上题的程序执行后(AX)二参考答案为:BA.5000B.5050C.5100D.5150[解析]请参看上题中的分析。
正确答案:B。
1 1 .对于下列程序段:AGAIN:MOVAL,[SI]MOVES:[DI],ALINCSIINCDILOOPAGAIN也可用指令完成同样的功能。
参考答案为:AA.R EPMOVSBB.R EPLODSBC.R EPSTOSBD.R EPESCASB[解析]该段程序的功能是将SI所指向的数据段中的数据顺序传送给DI所指向的附加段的一段数据区中,并且每次传送一个字节,即实现了字节串传送的功能,所以也可以使用RE PM OVSB旨令来完成同样的功能。
12.下面指令序列执行后完成的运算,正确的算术表达式应是MOVAL,BYTEPTRXSHLAL,1DECALMOVBYTEPTRYAL参考答案为:DA.y=x2+1B.x=y2+1C.x=y2-1D.y=x2-1[解析]该段程序的第一条指令的功能是将X 传送给AL;第二条指令的功能是将AL的内容左移1位,即使得AL的内容扩大2倍; 第三条指令的功能是使AL的内容减1;第四条指令的功能是将AL 传送给Y;综上所述该程序完成的运算是Y=2X-1。
13.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来。
参考答案为:BA. 占内存空间小,但速度慢B. 占内存空间大,但速度快C. 占内存空间相同,速度快D. 占内存空间相同,速度慢欢迎下载3精品文档[解析]1)宏指令简化程序的书写,不节省程序存储空间,但执行时间比子程序短。
2)子程序简化程序的书写,也节省程序的存储空间,但执行时间比宏指令长。
14 .在程序执行过程中,IP寄存器中始终保存的是参考答案为:BA. 上一条指令的首地址B. 下一条指令的首地址C. 正在执行指令的首地址D. 需计算有效地址后才能确定地址[解析]在程序运行过程中,它始终指向下一条指令的首地址,它与 CS 代码 段寄存器联合确定下一条指令的物理地址。
[解析]PSW 有6位条件状态位:AF 、CF ZF PF SF OF ;PSW 有3位控制状态位:IF 、TF DF16.下列指令执行时出错的是参考答案为 :A[解析]ADD 指令的两个操作数不能同时是存储器操作数,所以选项 A 中的指 令是错误的。
17 .已知(AX ) =1234H,执行下述三条指令后,(AX )二参考答案为:DMOVBX AX15. PSW 寄存器中共有考答案为 :A位条件状态位,有 位控制状态位。
参A . 6、B . 3、C . 8、D . 4、A . ADDBUF1,BUF2B . JMPDWORDPTRDAT[BX]C . MOVAX ,[BX+DI]NUMD . TESTA ,L 08H4NEGBXADDAX,BX[解析]第一条指令的功能是将AX BX 即BX 中的内容为1234H ;第二条指令的功能是对BX 求补,即BX 中的内容变为一1234H ;第三条指令的功能是 AX+B 冷AX ,g 卩1234H+(-1234H)=0^ AX所以执行三条指令后,AX 的内容为0。
[解析]JMP 、JC 指令不任何影响状态标志位;INC 指令执行结果除不影响CF 外,其余状态标志位(AF 、OF PF 、SF ZF 都 受影响。
SHL 指令使CF=O OF = O ,影响ZF SF PF 标志位,AF 无定义。
A . 1234HB . 0EDCCHC . 6DCCHD . 0000H为 :DA .18.在下列指令中,JMPNEXT 指令的执行会影响条件码中的 CF 位。
参考答案 B . J CNEXTC . I NCBXD . S HLAX , 1欢迎下载4精品文档19.串指令中的目的操作数地址是由提供。
参考答案为:CA.S S:[BP]B.D S:[SI]C.E S:[DI]D.C S:[IP][解析]略20.将DX 的内容除以2,正确的指令是参考答案为:CA.D IV2B.D IVDX,2C.S ARDX,1D.S HLDX,1[解析]选项A中的的指令执行的操作是:AX/2;选项 B 中的的指令书写格式不正确;选项C中的的指令执行的操作是:将DX的内容右移一位,将使DX的内容缩小为原先的,即将DX的内容除以2;选项D中的的指令执行的操作是:将DX的内容左移一位,将使DX的内容扩大为原先的2倍,即将DX的内容乘以2。
[解析](1)指令:SHRDX,使DX的内容向右移动了一位,因此DX的内容变为0000' 0000 ' 0101 ' ,1 即0BD5CHO(2)指令:RCRDL,使DL的内容向右循环带进位移动了一位,DH的内容不变,因此DX的内容变为0000' 0000' 1101' 1,0即B00DCH(3)指令:RCLDX,C使DX的内容向左循环带进位移动了3位,因此DX的内容变为0000' 0101' 1100' 11010B05CCH2.写出完成下述功能的程序段:传送25H到AL寄存器将AL 的内容乘以2传送15H到BL寄存器AL的内容乘以BL的内容并请写出最后( AX)=?答: 1 )MOVAL,25HSHLAL,1MOVBL,15HMULBL最后,(AX)=612H=1554[解析]1 )将AL的内容左移1位,将使它的内容扩大2倍,即使AL的内容乘以2。
2)最后,AX的内容应为25H*2*15H=612H=15543 .写一程序段,求双字长数DX: bX的相反数。
答:NEGDXNEGAXSBBDX,0[解析]求双字长数DX:AX相反数,即对其求补,所以应实现的操作是(DX:AX) M!DX:AX)即0:0-)DX:AX欢迎下载5精品文档将上面的算式分解后,即为对DX求补,对AX求补,并从DX中减去将AX 求补时产生的借位。
所以相应的指令就是:NEGDXNEGAXSBBDX,0三,程序分析题(每小题 6 分,共36 分)1.现有如下程序段:DATASEGMENTDA3EQU1234HORG0020HDA4EQU$-DA2DA1DW12H,23HDA5DB31H,32HDA2DB11H,21HDATAENDS注意:程序是从左到右看,先把左边的程序段看完了再看右边的程序段。