优质实用文档精选——汇编语言练习题.docx

上传人:高远 文档编号:3601644 上传时间:2020-09-25 格式:DOCX 页数:19 大小:63.65KB
返回 下载 相关 举报
优质实用文档精选——汇编语言练习题.docx_第1页
第1页 / 共19页
优质实用文档精选——汇编语言练习题.docx_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《优质实用文档精选——汇编语言练习题.docx》由会员分享,可在线阅读,更多相关《优质实用文档精选——汇编语言练习题.docx(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、汇编语言练习题&参考答案一、 单项选择题 (共20题)1对于有符号的数来说,下列哪个值最大( D)A:0F8H B:11010011B C:82D:123Q 2下列有关汇编语言中标号的命名规则中,错误的是(D )A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符C:?和$不能单独作为标号 D: 号不可位于标号首 3设A=0.4H,B=0.8H,C=0.4,D=0.4Q,它们之间的关系是(C )。AC+D=B BA+D=B CB=D DACD4下列四个寄存器中,可作为十六位寄存器的是(C )ADL BCLCBPDEBX 58088/8086存储器分段,每个段不超过( D) A.

2、64K个字 B. 32K个字节 C.1兆个字节 D.64K个字节 6寻址指令MOV CX, BX + DI + 20使用的是哪一种寻址方式( B)A:寄存器寻址B:相对基址变址寻址C:变址寻址D:基址变址寻址7连接程序把汇编语言源程序生成的目标文件(.OBJ文件)转换成( B)。A.OBJ文件 B.EXE文件C.LST文件D.CRF文件8在程序运行过程中,确定下一条指令的物理地址的计算表达式是( A)。A. (CS)16+(IP) B. (DS)16+(DI) C. (SS)16+(SP) D(ES)16+(SI)9若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B

3、.NOT AX C.INC AX D.DEC AX 108086/8088系统执行传送指令MOV时(A ) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 11执行下列程序后,(AL)=(D )H。DATA SEGMENTTAB DB 0123456789DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX, DATA MOV DS, AX MOV BX, OFFSET TAB MOV AL, 04XLAT TABA04 B0400C33D3412下列指令中操作数在代码段中的是(A )。AMOV

4、AL, 25H BADD AH, BL CINC BYTE PTR 25H DCMP BL, AL13.若要求一个操作数中的若干位维持不变,若干位置“1”,可以使用( B)A:NOTB:ORC:ANDD:XOR 14下列指令中段默认为堆栈段的是(C ) A.MOV AX,BX+SI+10 B.ADD AX,ES:SI C.SUB BX,BPDI D. MOV DX,1000H15设BL05H,要使结果BL0AH,应执行的指令是( C)。ANOT BL BAND BLCXOR BL, 0FHDOR BL, 0FH16表示一条指令的存储单元的符号地址称(A )。A标号 B变量C偏移量 D类型 17

5、关于8086/8088微机系列,下列说法哪个是正确的( D)A:一个存储单元由16个二进制位组成,简称字。B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。C:在内存空间中,可以无限分配段,且段的大小不受限制。D:段与段之间可以邻接,也可以重叠。 18下列关于堆栈的说法,错误的是(D )A:以“先入后出”为原则。B:栈区最高地址单元的前一个单元为栈底。C:运行中SP寄存器动态跟踪栈顶位置。D:压栈和弹出都是以字节为单位。 19分配给INT 12H在中断向量表中的物理地址是 ( D)。A12H B24HC36H D48H 20DOS调用INT 21H的键盘输入功能1和功能8的区别是(

6、B )。A功能1不回显而功能8回显B功能1回显而功能8不回显C功能1和功能8都不回显 D功能1和功能8都回显二、填空题(共27题)。(最后二题有备选答案)1设一存储单元中的二进制代码是83H,其对应的一个无符号数是 148 ,一个带符号数是 -108 。28086/8088系统中,I/O端口地址范围是 0000HFFFFH。 38086/8088系统中,段内一个单元相对段的起始地址的距离称为 偏移地址 , 它小于 64K 。48086/8088CPU内部用来存放段地址的寄存器有 CS,DS,ES,SS 。5在PC机中,使用 SS 、 SP 合成20位的物理地址,用以指向当前堆栈桟顶的位置。6一

7、个字单元由二个连续的 字节 单元组成,其中数据的低8位存放在 低地址 单元、高8位存放在 高地址 单元。7. 在指令中直接给出操作数的寻址方式称为 立即寻址方式 。 8设MASK为一个变量,在“MOV AX, MASKSI+BX”指令中,源操作数的寻址方式是 相对基址变址寻址方式 ,其物理地址是 (DS)16+(SI)+(BX)+OFFSET MASK ,目的操作数的寻址方式是 寄存器寻址方式 。9若(SS)=1100H,(SP)=0150H,那么执行PUSH EAX指令后SP的内容是 014CH ,再执行POP CX指令后桟顶的物理地址是 1114EH 。 10. CPU执行“JMP BX”

8、指令只改变 IP ,而不改变 CS内容。11执行CALL NEAR PTR SUBROUT时,在修改IP/EIP内容之前应该 PUSH IP或PUSH EIP 。12 STRING DB ABCDEFGCOUNT EQU $-STRINGCOUNT的值是 7 ,表示的意义是 表示变量STRING所分配的字节数 。13. 数据定义语句:TAB DW 100 DUP(?)执行MOV BX, LENGTH TAB指令后,BX的内容是 100 。14. 循环程序可由三个部分组成:设置循环初始部分、循环体和 循环控制部分 。15. 在多个模块中传递参数的时候,在本模块中要使用另一个模块中的符号要用 EX

9、TRN 伪操作进行说明符号,本模块中的符号要提供给另一个模块使用要用 PUBLIC 伪操作进行说明符号,16. 宏汇编的三个步骤是: 宏定义 、宏调用和宏展开。17. 每种类型的中断都由相应的 中断处理程序 来处理。18下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出)FLD DW 10, -20, 30, -60, -71, 80, 79, 56LEA SI,_FLD_ MOV CX, 8XOR AX, AXR1:ADD AX ,_ SI_ ADD SI, 2LOOP R1MOV CL, 8IDIV CLHLT19MOV AX, 1090HSUB AX, 4AE0H

10、JC L1JO L2JMP L3上述程序执行后AX=_C5BO_,程序转向_L1_20.假设寄存器AX=1234H,DX=0A000HMOV BX, 0MOV CX, BXSUB CX, AXSBB BX, DXMOV AX, CXMOV DX, BX上述程序段执行后AX=_OEDCCH_ ,DX=_5FFFH_21MOVAX, 234HMOVCL, 3ROLAX, CLDECAXMOVCX, 4MULCX 此段程序执行完后,(AX)= _467CH_ , (CX)= _4_ 22DA1 DB 83H,72H,61H,94H,5AH MOV CX,WORD PTR DA1 AND CX,0FH

11、 MOV AL,DA1+3 SHL AL,CL 上述指令序列执行后,AL=_OAOH_,CL=_03H_。23.阅读如下程序片段MOV AL,4CHMOV BL,86HADD AL,BL执行上述程序片段后,(AL)= 0D2H ,(BL)= 86H ,CF= 0 ,OF= 0 24以下程序求出首地址为BUF的M字数组的内容之和。 DATA SEGMENTBUF DW X1,X2,XMCOUNT EQU ($一BUF)/2SUM DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART:MOV AX, DATA MOV DS, AXMOV BX

12、,OFFSET BUFMOV CX,COUNT MOV AX, 0 LOP1:ADD AX, BX ADD BX, 2 LOOP LOP1MOV SUM,AX MOV AH, 4CH INT 21HCODE ENDS END START25以下程序完成将键盘输入的小写字母转换成大写字母并输出显示,直到输入字符“$”结束。DATA SEGMENTERROR DB “INPUT EXCEEDS az,PLEASE INPUT AGAIN!”,0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV D

13、S, AXNEXT: MOV AH, 1 INT 21H CMP AL,$ JE EXIT CMP AL, a JB ERR CMP AL,z JA ERR SUB AL, 20H MOV DL, AL MOV AH, 2 INT 21H JMP NEXTERR: LES DX, ERROR MOV AH, 9 INT 21H JMP NEXTEXIT: MOV AH, 4CH INT 21HCODE ENDS END START 26下面子程序完成把BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来。 BINTOHEX PROC NEAR PUSH CX PUSH AX PUSH DX

14、 MOV CH, 4 ROTATE: MOV CL, 4 ROL BX, CL MOV AL, BL 2 ADD AL, 30H CMP AL, 3AH 1 ADD AL, 7H PRINTIT: MOV DL, AL MOV AH, 2 INT 21H 3 JNZ ROTATE POP DX POP AX POP CX RET BINTOHEX ENDP备选答案: JL PRINTIT AND AL, OFH DEC CH27下面程序段是判断寄存器BL中第3位、第5位是否同时为1,如同时为1,则AH置0,否则AH置全l。 MOV DL, BL NOT DL 2 JZ ZERO MOV AH,

15、 0FFH 1 ZERO: MOV AH, 0NEXT: 备选答案: JMP NEXT TEST DL, 28H三、判断题 (在正确的叙述或指令前打P,错误的题前打O)(共20题)( X ) 1. PUSH 5588H ( X ) 2. MOV DS, 1720H( X ) 3. ADD AX, CL( X ) 4. AND AX,DX( X ) 5. MOV CS, 0600H( X ) 6. PUSH 074CH( X ) 7. ADD AX, CL( X ) 8. OR BX,CX( V ) 9 IMUL DX( X ) 10. XOR AL, BX( X ) 11. MOV DX, B

16、X( X ) 12. SUB EAX, ECX*10+100( X ) 13. MOV DS, 1200H( X ) 14. XCHG 256, 100H( V ) 15. OUT DX, AX( X ) 16. LEA VAR, BP+SI( X ) 17. NEG 88( V ) 18. INC WORD PTR 100H( V ) 19 IMUL DX( X ) 20. XOR AL, BX四、简答题(共4题)1.标志寄存器:标志寄存器:是8086/088中唯一按位操作的寄存器,该寄存器为16位,有效的标志位共9位。其中,CF,PF,AF,ZF,SF,OF为状态标志,用于反映最近一次影响

17、标志位的算术或逻辑运算中运算过程、运算结果的一些性质;TF,IF,DF为控制标志,用于控制CPU对某些特定事件的处理方式以及CPU的工作模式。 2.逻辑地址:逻辑地址:由两个16位的地址分量构成,其中一个为段基值,另一个为偏移量,两个分量均为无符号数编码。物理地址=段基值16+偏移量.3. 下列程序段执行完后,SF、ZF、CF、OF的内容是什么? MOV BX, 4321H ADD BX, 1234HSF=0 ZF=0 CF=0 OF=04. 下列ASC码串(包括空格串)依次存储在起始地址为CSTRING的字节单元中: CSTRING DB PERSONAL COMPUTER 请编写指令将字符

18、串中的第1个和第7个字符传给DX寄存器。MOV DX, CSTRINGMOV DX, CSTRING+6五、程序分析题(分析程序段总的功能或回答相关问题或运行结果)(共14题)。1 阅读如下程序片段MOV AL,4CHMOV BL,0B5HADD AL,BL执行上述程序片段后,(AL)= 01H ,(BL)= 0B5H ,CF= 1 ,OF= 0 2 阅读如下程序片段MOV AL,0F3HMOV DL,0C4HADD AL,DLAND AL,0FH执行上述程序片段后,(AL)= 7H , CF= 0 ,OF= 0 ,PF= 0 3 阅读如下程序片段MOV AL,7EHMOV CL,04HROL

19、 AL,CL执行上述程序片段后,(AL)= 0F9H ,(CL)= 04H ,CF= 1 ,OF= 无意义 4 阅读如下程序片段MOV AX,0632HMOV BX,0C202HSUB AX,BXINC AX执行上述程序片段后,(AX)= 4421H ,(CF)= 1 ,OF= 0 ,PF= 0 5 阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)=28HMOV BX,0024HLEA BX,BXOR BX,0ADC BX,BX执行上述程序片段后,(BX)= 287AH ,(CF)= 0 ,OF= 0 ,PF= 0 6 阅读如下程序片段,假

20、设(SP)=0064HMOV AX,0001HMOV BX,0002HPUSH AXPUSH BXPOP AXPOP BX执行上述程序片段后,(AX)= 0002H ,(BX)= 0001H ,(SP)= 0064H 。(CF)= 0 7 DATA SEGMENTTAB DW 1,2,3,4,5ENTRY DW 2 DATA ENDSMOV BX, OFFSET TABADD BX, ENTRYMOV AX, BXMOV CX, TYPE TABMOV DX, SIZE TAB 执行上述指令后,(AX)= 3 ,(CX)= 2 ,(DX)= 2 。8MOV AX, W IMUL X MOV B

21、X, Y ADD BX, 6 IDIV BX MOV Z, AX MOV R,DX 上述程序段中X,Y,Z,R,W均为有符号数的字变量,试说明上述程序段完成什么功能。求数值表达式的值:(W*X)/(Y+6)Z,余数R9MOV AX, 1234HMOV CL, 8ROL AX, CL;这条指令执行后,(AX)= 3412H DEC AX ;这条指令执行后,CF 不变 MOV CX, 4MUL CX ;这条指令执行后,SF= 1 10 CMP DX, BXJG XJL YCMP AX, CXJA XX:Y:有两个双精度数a、b分别存储于DX、AX及BX、CX中,上述程序段完成的功能是什么?完成的功

22、能是:如果a.b,则转向X执行,否则转向Y执行。11设有宏定义如下: TRANS MACRO BUF1, BUF2MOV AX, BUF1MOV BX, BUF2MOV BUF1, BXMOV BUF2, AX ENDM请说明宏指令完成的功能是什么?并将宏调用TRANS WORD_VAR1, WORD_VAR2进行宏扩展。宏定义完成的功能是:将两个存储单元BUF1和BUF2的内容互换。宏调用TRANS WORD_VAR1, WORD_VAR2的宏扩展是MOV AX, WORD_VAR 1MOV BX, WORD_VAR 2MOV WORD_VAR 1, BXMOV WORD_VAR 2, AX

23、12分析下面程序段,回答指定问题: XOR AL, AL CALL SUBROUT MOV BL, AL CALL SUBROUT RCR AL, 1 SUBROUT PROC NEAR NOT AL JS NEXT STCNEXT:RET SUBROUT ENDP上述程序执行后,(AL)= 80H ,(BL)= 0FFH 。13. 试回答下面程序段执行后完成什么功能? OLDS DB COMPUTER N EQU $-OLDS NEWS DB COMPUTORLEA SI, OLDS LEA DI, NEWS MOV CX, N CLD REPE CMPSB JNZ NEW_ADDRESSO

24、LD_ADDRESS:NEW_ADDRESS:比较字符串OLDS和NEWS是否相同,若不相同则转到NEW_ADDRESS执行,否则转到OLD_ADDRESS14 MOV CX, L LEA DI, ARRAY MOV AL, 20H CLDREPNE SCASB JNZ NOT_FOUNDNOT_FOUND:试回答上述程序段完成的功能是什么?在长度为L的字符串ARRAY中查找空格,若有空格在顺序执行,否则转向NOT_FOUND。六、计算题(共2小题)1 将十进制数100分别转换为二进制、十六进制数,它们的表示形式分别为多少?二进制为 01100100B,十六进制为64H2 假设(DS)=0C0

25、0H,(BX)=0210H,对于指令MOV DS:100HBX,AL,其目的操作数的物理地址为多少?EA = (BX)+0100H = 0310H,物理地址 = 0C000H + 0310H = 0C310H七、程序设计题(共4题)1 试编写一程序片段,实现BL高4位与低4位相互交换MOV CL, 4ROL BL, CL2 试编写一程序片段,不使用乘除法指令,实现(AX)*5+14)/ 2的功能(AX中的数据理解为补码)MOV BX, AXMOV CL, 2SAL AX, CLADD AX, BXADD AX, 14SAR AX, 13. D1 DW ?, ? D2 DW ?, ?定义了两个双

26、精度数。编写一条宏定义DSUB,完成双精度数D1 减去双精度数D2,差存放在D2中,两个双精度数为变元。DSUB MACRO D1,D2 MOV AX, D1MOV DX, D1+2SUB AX, D2 SBB DX, D2+2MOV D2, AXMOV D2+2, DXENDM 或 DNEG MACRO D1,D2 MOV EAX, D1 SUB EAX, D2MOV D2, EAXENDM4现有下列数据段:DATA SECMENTSTR1 DB ABCDEFGHIJKLCOUNT EQU $STR1BUF DB COUNT DUP (0)DATA ENDS试用串指令编写一个完整的程序:实现

27、把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一个字符送到BUF的第一个单元)。DATA SECMENTSTR1 DB ABCDEFGHIJKLCOUNT EQU $STR1BUF DB COUNT DUP (0)DATA ENDSCODE SEGMENT ASSUME CD:CODE, DS:DATA,ES:DATA START: MOV AX, DATA MOV DS, AX MOV ES,AXLEA SI, BUF1LEA DI, BUF MOV CX, COUNT 或 CLD STD LOP: MOVSB LOP: MOVSB SUB SI, 2 ADD DI, 2 LOOP LOP LOOP LOP MOV AH, 4CH INT 21HCODE ENDS END START第 19 页 共 19 页

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

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com