汇编语言期末考试试题及答案.doc

上传人:h**** 文档编号:1244060 上传时间:2019-01-13 格式:DOC 页数:12 大小:64.50KB
下载 相关 举报
汇编语言期末考试试题及答案.doc_第1页
第1页 / 共12页
汇编语言期末考试试题及答案.doc_第2页
第2页 / 共12页
汇编语言期末考试试题及答案.doc_第3页
第3页 / 共12页
汇编语言期末考试试题及答案.doc_第4页
第4页 / 共12页
汇编语言期末考试试题及答案.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、1汇编语言模拟试题及答案一,单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题 1 分,共 20 分) 1指令 JMP FAR PTR DONE 属于 参考答案为:C A段内转移直接寻址 B段内转移间接寻址 C段间转移直接寻址 D段间转移间接寻址 解析 略 2下列叙述正确的是 参考答案为:C A对两个无符号数进行比较采用 CMP 指令,对两个有符号数比较用 CMPS 指令 B对两个无符号数进行比较采用 CMPS 指令,对两个有符号数比较用 CMP 指令 C对无符号数条件转移采用 JAE/JNB 指令,对有符号数条件转移用 JGE/JNL指令 D对无符

2、号数条件转移采用 JGE/JNL 指令,对有符号数条件转移用 JAE/JNB指令 解析 对于无符号数和有符号数的比较都采用 CMP 指令; CMPS 指令是串比较指令; 对两个无符号数的条件转移指令应是:JAE 、JNB、JBE、JNA; 对两个有符号数的条件转移指令应是:JGE 、JNL、JLE、JNG。 3一个有 128 个字的数据区,它的起始地址为 12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是 参考答案为:C A12CSBH B12B6BH C12C59H D12BFEH 解析 末字与首字相隔(1281)127 个字,且每个字占用 2 个字节,因此末字单元的物理地址

3、应为: 首字单元的物理地址(1281)2 即 12ABH10H 00ABH(1281)2 12C59H。 4在下列指令的表示中,不正确的是 参考答案为:C AMOV AL,BX+SI BJMP SHORT DONI CDEC BX DMUL CL 解析 当只有一个存储器操作数时,这个操作数的类型不明确,例如选项 C 中的BX ,没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需用类型说明,如 DEC BYTE PTR BX 或 DEC WORD PTR BX 但是在题目的选项 C 中,没有指出存储器操作数类型,所以该指令是不正确的;而其它选项中的指令均是正确的。 25在进行二重循环程

4、序设计时,下列描述正确的是 参考答案为:A A外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B外循环初值应置外循环之内;内循环初值应置内循环之内 C内、外循环初值都应置外循环之外 D内、外循环初值都应置内循环之外,外循环之内 解析 循环参数置初值,应在进入循环以前给出。 6条件转移指令 JNE 的测试条件为 参考答案为:A AZF=0 BCF0 CZF=1 DCF=1 解析 略。 78086CPU 在基址加变址的寻址方式中,变址寄存器可以为 参考答案为:D ABX 或 CX BCX 或 SI CDX 或 SI DSI 或 DI 解析 略 8已知 BX=2000H,SI=123

5、4H,则指令 MOV AX,BX+SI+2的源操作在( )中。 参考答案为:A A数据段中偏移量为 3236H 的字节 B附加段中偏移量为 3234H 的字节 C数据段中偏移量为 3234H 的字节 D附加段中偏移量为 3236H 的字节 解析 指令中的源操作数的寻址方式是相对基址变址寻址,且由于其中的基址寄存器采用的是 BX,所以源操作数是在数据段中,其偏移量为: BX+SI+2=2000H+1234H+2=3236H 9执行如下程序: MOV AX,0 MOV BX,1 MOV CX,100 A:ADD AX,BX INC BX LOOP A HLT 执行后(BX)= 参考答案为:C A9

6、9 B100 C101 D102 解析1 )在进入循环之前,有三条指令分别初始化寄存器:AX 为 0、BX 为1、CX 为 100; 2)由于循环的控制部分采用的是 LOOP 指令,该指令有使 CX 减 1,并判3断其是否为 0 的功能,所以可知该循环的执行次数为 100 次; 3)循环体的主要功能是每次循环使 AX 中的内容累加 BX 的内容,并使BX 的内容加 1。 4)直到最后一次(即第 100 次)循环时,加到 AX 中的 BX 的内容为100,且使 BX 加 1,即变为 101 后退出循环体。所以当执行完该段程序后,BX 的内容为 101。 5)该段程序的功能是(AX)12100 5

7、050 10上题的程序执行后(AX)= 参考答案为:B A5000 B5050 C5100 D5150 解析 请参看上题中的分析。 正确答案:B。11对于下列程序段: AGAIN:MOV AL,SI MOV ES:DI ,AL INC SI INC DI LOOP AGAIN 也可用_指令完成同样的功能。 参考答案为:A AREP MOVSB BREP LODSB CREP STOSB DREPE SCASB 解析 该段程序的功能是将 SI 所指向的数据段中的数据顺序传送给 DI 所指向的附加段的一段数据区中,并且每次传送一个字节,即实现了字节串传送的功能,所以也可以使用 REP MOVSB

8、指令来完成同样的功能。 12下面指令序列执行后完成的运算,正确的算术表达式应是 MOV AL,BYTE PTR X SHL AL,1 DEC AL MOV BYTE PTR Y,AL 参考答案为:D Ay=x2+1 Bx=y2+1 Cx=y2-1 Dy=x2-1 解析 该段程序的第一条指令的功能是将 X 传送给 AL; 第二条指令的功能是将 AL 的内容左移 1 位,即使得 AL 的内容扩大 2 倍; 第三条指令的功能是使 AL 的内容减 1; 第四条指令的功能是将 AL 传送给 Y; 综上所述该程序完成的运算是 Y=2X-1。 13在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起

9、来。 参考答案为:B 4A占内存空间小,但速度慢 B占内存空间大,但速度快 C占内存空间相同,速度快 D占内存空间相同,速度慢 解析1 )宏指令简化程序的书写,不节省程序存储空间,但执行时间比子程序短。 2)子程序简化程序的书写,也节省程序的存储空间,但执行时间比宏指令长。 14在程序执行过程中,IP 寄存器中始终保存的是 参考答案为:B A上一条指令的首地址 B下一条指令的首地址 C正在执行指令的首地址 D需计算有效地址后才能确定地址 解析 在程序运行过程中,它始终指向下一条指令的首地址,它与 CS 代码段寄存器联合确定下一条指令的物理地址。 15PSW 寄存器中共有_位条件状态位,有_位控

10、制状态位。 参考答案为:A A6、3 B3、6 C8、4 D4、8 解析PSW 有 6 位条件状态位: AF、CF、ZF 、PF、SF 、OF; PSW 有 3 位控制状态位:IF、TF、DF 16下列指令执行时出错的是 参考答案为:A AADD BUF1,BUF2 BJMP DWORD PTR DAT BX CMOV AX,BX+DI NUM DTEST AL,08H 解析ADD 指令的两个操作数不能同时是存储器操作数,所以选项 A 中的指令是错误的。 17已知(AX)=1234H,执行下述三条指令后, (AX)= 参考答案为:D MOV BX,AX NEG BX ADD AX,BX A12

11、34H B0EDCCH C6DCCH D0000H 解析 第一条指令的功能是将 AXBX,即 BX 中的内容为 1234H; 第二条指令的功能是对 BX 求补,即 BX 中的内容变为1234H; 第三条指令的功能是 AX+BXAX,即 1234H+(-1234H)=0AX; 所以执行三条指令后,AX 的内容为 0。 18在下列指令中,_指令的执行会影响条件码中的 CF 位。 参考答案为:D AJMP NEXT BJC NEXT 5CINC BX DSHL AX,1 解析JMP 、JC 指令不任何影响状态标志位; INC 指令执行结果除不影响 CF 外,其余状态标志位(AF、OF、PF 、SF、

12、ZF)都受影响。 SHL 指令使 CF=O,OFO ,影响 ZF、SF、PF 标志位,AF 无定义。 19串指令中的目的操作数地址是由_提供。 参考答案为:C ASS:BP BDS:SI CES :DI DCS :IP 解析 略 20将 DX 的内容除以 2,正确的指令是 参考答案为 :C ADIV 2 BDIV DX,2 CSAR DX,1 DSHL DX,1 解析 选项 A 中的的指令执行的操作是:AX/2; 选项 B 中的的指令书写格式不正确; 选项 C 中的的指令执行的操作是 :将 DX 的内容右移一位,将使 DX 的内容缩小为原先的 1/2,即将 DX 的内容除以 2; 选项 D 中

13、的的指令执行的操作是 :将 DX 的内容左移一位,将使 DX 的内容扩大为原先的 2 倍,即将 DX 的内容乘以 2。解析(1)指令:SHR DX, 1 使 DX 的内容向右移动了一位,因此 DX 的内容变为0000000001011100B,即 005CH。 (2)指令:RCR DL, 1 使 DL 的内容向右循环带进位移动了一位,DH 的内容不变,因此 DX 的内容变为 0000000011011100B,即 00DCH。 (3)指令:RCL DX, CL 使 DX 的内容向左循环带进位移动了 3 位,因此 DX 的内容变为 0000010111001100B,即 05CCH。 2写出完成

14、下述功能的程序段: (1)传送 25H 到 AL 寄存器 (2)将 AL 的内容乘以 2 (3)传送 15H 到 BL 寄存器 (4)AL 的内容乘以 BL 的内容 并请写出最后(AX)=? 答:(1)MOV AL, 25H (2)SHL AL, 1 (3)MOV BL, 15H (4)MUL BL 最后, (AX)=612H =1554 解析1)将 AL 的内容左移 1 位,将使它的内容扩大 2 倍,即使 AL 的内容乘以2。 2)最后,AX 的内容应为 25H*2*15H=612H=1554 3写一程序段,求双字长数 DXbX 的相反数。 6答:NEG DX NEG AX SBB DX,

15、0 解析 求双字长数 DX:AX 相反数,即对其求补,所以应实现的操作是: (DX:AX) 0-(DX:AX) 即 0 : 0 -) DX : AX 将上面的算式分解后,即为对 DX 求补,对 AX 求补,并从 DX 中减去将 AX 求补时产生的借位。所以相应的指令就是: NEG DX NEG AX SBB DX, 0 三,程序分析题(每小题 6 分,共 36 分) 1现有如下程序段: DATA SEGMENT DA3 EQU 1234H ORG 0020H DA4 EQU -DA2 DA1 DW 12H,23H DA5 DB 31H,32H DA2 DB 11H,21H DATA ENDS

16、注意:程序是从左到右看,先把左边的程序段看完了再看右边的程序段。下面的程序段以相同的方法进行读解。请回答:(1)该程序段已占有的存储字节数是多少? (2)符号名 DA4 的值是多少?符号名 DA5 的值是多少? 答:(1) 该程序段已占有的存储字节数是 8 个字节。 (2) 符号名 DA4 的值为 2,符号名 DA5 的值是 0026H。 解析1)伪指令 ORG 0020H,设置存储单元起始偏移地址为 0020H; 2)符号名 DA1 的值(即所对应存储单元的偏移地址)是 0020H,该数据区的类型为字,有 2 个字数据,所以共占用 4 个字节; 3)符号名 DA2 的值(即所对应存储单元的偏

17、移地址)是 0024H,该数据区的类型为字节,有 2 个字节数据,所以共占用 2 个字节; 4)经 EQU 定义的符号名 DA3、DA4 不占用存储空间, “$” 用来表示当前地址计数器的值(0026H) ,可它们的值分别为 DA3=1234H, DA4=2。 5)符号名 DA5 的值(即所对应存储单元的偏移地址)是 0026H,该数据区的类型为字节,有 2 个字节数据,所以共占用 2 个字节; 6)综上所述,该程序段共占有的存储字节数 8 个字节。 2执行下列程序段后,回答问题。 ORG 1221H MOV BX, OFFSET NUM NUM DW 12H MOV CL,BYTE PTR

18、NUM+1 MOV CH,TYPE NUM MOV AX,NUM HLT 请问:(AX)=_, (BX)=_, (CX )=_。 答:(AX)=0012H (BX)=1221H (CX)=0200H 解析1)指令 MOV AX, NUM 的功能是将 NUM 单元的字内容 12H 传送给 AX,使得(AX)=0012H ; 72)指令 MOV BX, OFFSET NUM 的功能是将 NUM 单元的偏移地址 1221H 传送给 BX,使得(BX)=1221H; 3)指令 MOV CL, BYTE PTR NUM+1 的功能是将 NUM+1(1222H)单元的字节内容(即 NUM 字单元的高字节)

19、00H 传送给 CL,使得(CL)=00H; 4)指令 MOV CL, TYTE NUM 的功能是将 NUM 字单元的类型字节数 2 传送给CH,使得(CH)=02H; 5)综合第 4 和第 5 点,可知 CX 寄存器的内容为 0200H。 3阅读如下程序: ADRR DB XXH,XXH,XXH CMP ADRRBX,0 NUM EQU -ADRR LOOPZ DON RETT DB? JNZ NEXT MOV BL,OFFH MOV CX,NUM NEXT:MOV RETT,BL MOV BX,-1 HLT DON:INC BX 请问:(1)该程序完成的功能是什么? (2)程序执行后指出

20、RETT 字节单元中的内容是什么? 答:(1) 在以 ADRR 为起始地址的数组中,查找第一个非 0 数据。 (2) 若找到则将第一个非 0 数据在数组中的偏移量送入 RETT 单元中;若无非 0 数据,则将 OFFH 送入 RETT 单元中。 解析1) 程序的前 3 条指令,用于定义数据: 以 ADRR 为起始地址的数组; NUM 的值为 ADRR 数组的数据个数; RETT 是一个空的字节单元 2)该程序的主体是一个循环,该循环的主要功能是在数组 ADRR 中第一个非 0 数据。如果是由于找到,则将第一个非 0 数据在数组中的偏移量送入 RETT 单元中;若没找到非0 数据,则将 OFFH

21、 送入 RETT 单元中。4现有一子程序: SUB1 PROC PLUS:TEST BL,80H TEST AL,80H (检测 AL 中的数值最高位) JE EXITO JE PLUS XCHANGE:XCHG AL,BL TEST BL,80H EXITO:RET JNE EXITO SUB1 ENDP JMP XCHANGE 试回答:(1)子程序的功能是什么? (2)若调用子程序前 AL=9AH,BL=77H,则返回主程序时,AL=_,BL=_。 答:(1)子程序的功能是判别 AL 和 BL 中的数是否为异号数,当为异号时交换,否则不变。 (2) AL=77H, BL=9AH 解析1)数

22、据是以二进制的形式存储在计算机中的。数据对应的二进制数的最高位是数据的符号位:若为 0 表示该数为正数,若为 1 表示该数为负数; 2)TEST AL, 80H 和 TEST BL,80H 指令是在测试 AL 和 BL 的最高位(即符号位)的状态是 1 还是 0。 83)若两个数的最高位(即符号位)的状态不同的时候(即两数为异号) ,则执行XCHANGE 标号所对应语句,即交换 AL 和 BL 中的内容。 4)否则若两个数的最高位(即符号位)的状态相同的时候(即两数为同号) ,则执行 EXIT0 标号所对应语句,程序结束,即 AL 和 BL 中的内容不被。 5)所以第二问中,AL=9AH,BL

23、=77H:AL 中的数据的最高位为 1,BL 中的数据的最高位为 0,即两个数为异号,所以要交换 AL 和 BL 中的内容,即 AL=77H,BL=9AH。 5阅读程序段: BLOCK DB 20H,1FH,08H ,81H ,OFFH LOP1:CMP AL,SI+1 RESULT DB? JNG NEXT MOV AL,SI+1 START:LEA SI,BLOCK NEXT:INC SI MOV CX,SI LOOP LOP1 INC SI MOV RESULT,AL MOV AL,SI HLT 请问:(1)该程序完成的功能是什么? (2)该程序循环的次数是多少? 答:(1) 该程序完成

24、的功能是从 20H(32)个有符号数中找出最小的数送入 RESULT 单元中。 (2) 该程序的循环次数是 1FH(31) 。 解析1)指令 LEA SI, BLOCK 的功能是使 SI 指向了 BLOCK 数组的首单元; 2)指令 MOV CX, SI的功能是将 SI 指向单元的内容 20H 传送给 CX,即(CX)=20H;其后又有指令 DEC CX,使得 CX 的内容变为 1FH;再看循环体的控制部分采用的指令是 LOOP,可知,该循环的执行次数为 1FH 次; 3)循环体的主要功能是将 AL 中的内容与SI 所指向数组的每一个数据进行比较,从数组中选出最小数保存在 AL 中。 4)由于

25、比较后采用的转移指令是 JNG,所以该程序处理的显然是一组有符号的数据。 6阅读如下程序段,回答所提出的问题,假定 X1,X2 ,XN 为无符号数。 ORG 100H BLOK DW X1,X2,XN COUNT EQU(-BLOLOK)/2 RESULT DW COUNT,? LEA BX,BLOK-2 MOV CX,RESULT XOR AX,AX GOON:ADD BX, 2 CMP AX,BX JAE NEXT MOV AX,BX NEXT:LOOP GOON MOV RESULT+2,AX 程序段执行完,回答下述问题 RESULT+2 字存储单元的内容 =_ BX=_ 9程序循环次数

26、=_ 答:RESULT+2 字存储单元的内容是 MAX(X1, X2, XN) BX= 100H + 2(COUNT-1) 程序循环次数 COUNT 解析1 )该程序段的开始 4 条指令定义了以下数据: 以 BLOK 为起始地址的字数组,该数组首单元的偏移地址(即 BLOK)为100H; COUNT 的值为 BLOK 字数组的数据个数; RESULT 存储区的第一个字的内容为 COUNT,即 BLOK 字数组的数据个数;第二个字的内容为空。 2)循环体的主要功能是从 BLOK 字数组中找出最大数送入 RESULT 的第二个字单元中; 3)循环次数为数组中数据的个数,即 COUNT 个。 4)当

27、循环结束后,BX 中将存放最后一个字数据的偏移地址:首字偏移地址末字与首字的相隔的字节数,即 100H + 2(COUNT-1)。四,程序填空题(注意:下列各小题中,每空只能填一条指令!每小题 6 分,共 12 分) 1在表 TABLE 处存放着 N 个无符号字节数,求表中前 10 个字节数的总和并保存在AX 寄存器中。如果总和值超过 AX 寄存器的容量,则置 AX 寄存器内容不变。请在程序中的空格处填入适当指令使其完整。 LEA BX,TABLE (2) MOV CX,10 JC END0 MOV SUM,AX DON:INC BX MEXT:(1) (3) ADC AH,0 ENDO:HL

28、T JNC DON 答:(1) ADD AL, BX (2) MOV AX, SUM (3) LOOP NEXT 解析1)程序的前三条指令的功能分别是: 将表 TABLE 的首址传送给 BX; 将循环次数传送给计数器 CX; 将 AX 的原值保存在 SUM 单元中; 以上指令实现了设置循环初始参数的功能。 2)标号 NEXT 所对应的第一个空白处就是循环体的第一条指令。根据题目的要求求表中前 10 个字节数的总和,可知循环每次应实现将表 TABLE 中的数据按字节加法的方式进行累加到 AL 中,并且将字节加法产生的进位加到 AH 中。所以第一个空白处应填入指令: ADD AL, BX 3)程序

29、的第五条指令实现的是判断求得的和是否超过 AX 寄存器的容量。 4)如果有进位(即已超过 AX 寄存器的容量) ,则执行第二个空白处的指令,根据题目当出现此种情况时,使 AX 内容不变,即恢复其原值,因此第二个空白处应填入指令:MOV AX, SUM。 5)如果没有进位(即未超过 AX 寄存器的容量) ,则转 DON。程序将使 BX 的内10容加 1,即使其指向下一个表中的字节数据。接下来就应该将计数器 CX 减 1,并判断是否继续下一次循环。因此,第三个空白处应填入指令: LOOP NEXT 。 2BEG 为起始地址的存储区域中存放有 100 个字节数据,现将其首、尾颠倒过来,重新排放这 1

30、00 个字节数据。请在程序中的空格处填入适当的指令使其完整。 MOV CX,32H LEA SI,BEG MOV DI,SI (1) DON:MOV AL,SI (2) MOV SI,AL (3) DEC DI LOOP DON HLT 答:(1) ADD DI, 99 (2) XCHG AL, DI (3) INC SI 解析1) 题目要求:将以 BEG 为起始地址的区域中的 100 个字节数据首尾颠倒存放。例如,如果原先为 X1,X2, X3, X98, X99, X100,则首尾颠倒后将变为X100, X99, X98,X3, X2,X1。 2) 颠倒的方法是:将 X1 与 X100 对

31、调、X2 与 X99 对调、X3 与 X98 对调、,即将前一半的数据与后一半相应位置的数据对调。这个过程每次处理两个数据,所以共有(100/2= )50 对数据对调。 3) 根据以上分析可知,这个循环将进行 50(32H)次,每次将相应的两个数据对调,这两个数据可分别由两个寄存器来指向。 4) 阅读程序可知,SI 寄存器指向前一半中的某个数据,DI 寄存器指向后一半中对应的数据。在循环的初始化部分,使应计数器 CX 的值为 50(或 32H) ,SI 指向第一个数,DI 指向最后一个数,所以第一个空白处应填入指令:ADD DI, 99。 5) 在循环体中,应首先交换 SI 和 DI 所指向单元的内容,然后使指针 SI 加 1、DI减 1,所以第二、三个空白处应填入指令: XCHG AL, DI INC SI 五,编制程序题(第 1 小题 6 分,第 2 小题 14 分,共 20 分) 1试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 答:1BEGIN:MOV AH,1 INT 21H CMP AL, a JB STOP CMP AL, z JA STOP SUB AL,20H MOV DL,AL

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 试题真题

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。