汇编语言练习题.pdf
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!一、单项选择题(共 20 题)1对于有符号的数来说,下列哪个值最大(D)A:0F8H B:11010011B C:82 D: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 DACD 4下列四个寄存器中,可作为十六位寄存器的是(C)ADL BCL CBP DEBX 58088/8086 存储器分段,每个段不超过(D)A.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.NOT AX C.INC AX D.DEC AX 108086/8088 系统执行传送指令 MOV 时(A)A.不影响标志位 B.影响 DF 方向标志 C.影响 SF 符号标志 D.影响 CF 进位标志 11执行下列程序后,(AL)=(D )H。DATA SEGMENT TAB DB 0123456789 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV BX,OFFSET TAB MOV AL,04 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!XLAT TAB A04 B0400 C33 D34 12下列指令中操作数在代码段中的是(A)。AMOV AL,25H BADD AH,BL CINC BYTE PTR 25H DCMP BL,AL 13.若要求一个操作数中的若干位维持不变,若干位置“1”,可以使用(B)A:NOT B:OR C:AND D:XOR 14下列指令中段默认为堆栈段的是(C)A.MOV AX,BX+SI+10 B.ADD AX,ES:SI C.SUB BX,BPDI D.MOV DX,1000H 15设 BL05H,要使结果 BL0AH,应执行的指令是(C)。ANOT BL BAND BL CXOR BL,0FH DOR BL,0FH 16表示一条指令的存储单元的符号地址称(A)。A标号 B变量 C偏移量 D类型 17关于 8086/8088 微机系列,下列说法哪个是正确的(D)A:一个存储单元由 16 个二进制位组成,简称字。B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。C:在内存空间中,可以无限分配段,且段的大小不受限制。D:段与段之间可以邻接,也可以重叠。18下列关于堆栈的说法,错误的是(D)A:以“先入后出”为原则。B:栈区最高地址单元的前一个单元为栈底。C:运行中 SP 寄存器动态跟踪栈顶位置。D:压栈和弹出都是以字节为单位。19分配给 INT 12H 在中断向量表中的物理地址是(D)。A12H B24H C36H D48H 20DOS 调用 INT 21H 的键盘输入功能 1 和功能 8 的区别是(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一个字单元由二个连续的 字节 单元组成,其中数据的低 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”指令只改变 IP ,而不改变 CS 内容。11执行 CALL NEAR PTR SUBROUT 时,在修改 IP/EIP 内容之前应该 PUSH IP 或PUSH EIP 。12 STRING DB ABCDEFG COUNT EQU$-STRING COUNT 的值是 7 ,表示的意义是 表示变量 STRING 所分配的字节数 。13.数据定义语句:TAB DW 100 DUP(?)执行 MOV BX,LENGTH TAB 指令后,BX 的内容是 100 。14.循环程序可由三个部分组成:设置循环初始部分、循环体和 循环控制部分 。15.在多个模块中传递参数的时候,在本模块中要使用另一个模块中的符号要用 EXTRN 伪操作进行说明符号,本模块中的符号要提供给另一个模块使用要用 PUBLIC 伪操作进行说明符号,16.宏汇编的三个步骤是:宏定义 、宏调用和宏展开。17.每种类型的中断都由相应的 中断处理程序 来处理。18下列程序段求数组 FLD 的平均值,结果在 AL 中。请将程序填写完整(不考虑溢出)FLD DW 10,-20,30,-60,-71,80,79,56 LEA SI,_FLD_ MOV CX,8 XOR AX,AX R1:ADD AX,_ SI_ ADD SI,2 LOOP R1 MOV CL,8 IDIV CL 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!HLT 19MOV AX,1090H SUB AX,4AE0H JC L1 JO L2 JMP L3 上述程序执行后 AX=_C5BO_,程序转向_L1_ 20.假设寄存器 AX=1234H,DX=0A000H MOV BX,0 MOV CX,BX SUB CX,AX SBB BX,DX MOV AX,CX MOV DX,BX 上述程序段执行后 AX=_OEDCCH_,DX=_5FFFH_ 21MOV AX,234H MOV CL,3 ROL AX,CL DEC AX MOV CX,4 MUL CX 此段程序执行完后,(AX)=_467CH_ ,(CX)=_4_ 22DA1 DB 83H,72H,61H,94H,5AH MOV CX,WORD PTR DA1 AND CX,0FH MOV AL,DA1+3 SHL AL,CL 上述指令序列执行后,AL=_OAOH_,CL=_03H_。23.阅读如下程序片段 MOV AL,4CH MOV BL,86H ADD AL,BL 执行上述程序片段后,(AL)=0D2H ,(BL)=86H ,CF=0 ,OF=0 24以下程序求出首地址为 BUF 的 M 字数组的内容之和。DATA SEGMENT BUF DW X1,X2,XM 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!COUNT EQU($一 BUF)/2 SUM DW?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,COUNT MOV AX,0 LOP1:ADD AX,BX ADD BX,2 LOOP LOP1 MOV SUM,AX MOV AH,4CH INT 21H CODE ENDS END START 25以下程序完成将键盘输入的小写字母转换成大写字母并输出显示,直到输入字符“$”结束。DATA SEGMENT ERROR DB“INPUT EXCEEDS az,PLEASE INPUT AGAIN!”,0DH,0AH,$DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX NEXT: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 NEXT ERR:LES DX,ERROR MOV AH,9 INT 21H JMP NEXT EXIT:MOV AH,4CH INT 21H CODE ENDS END START 26下面子程序完成把 BX 寄存器内的二进制数用十六进制数的形式在屏幕上显示出来。BINTOHEX PROC NEAR PUSH CX PUSH AX PUSH DX 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 CH 27 下面程序段是判断寄存器 BL 中第 3 位、第 5 位是否同时为 1,如同时为 1,则 AH 置 0,否则 AH 置全 l。MOV DL,BL NOT DL 2 JZ ZERO MOV AH,0FFH 1 ZERO:MOV AH,0 NEXT:备选答案:JMP NEXT TEST DL,28H 三、判断题(在正确的叙述或指令前打,错误的题前打)(共 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,BX(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 为状态标志,用于反映最近一次影响标志位的算术或逻辑运算中运算过程、运算结果的一些性质;TF,IF,DF 为控制标志,用于控制 CPU 对某些特定事件的处理方式以及 CPU 的工作模式。2.逻辑地址:逻辑地址:由两个 16 位的地址分量构成,其中一个为段基值,另一个为偏移量,两个分量均为无符号数编码。物理地址=段基值16+偏移量.3.下列程序段执行完后,SF、ZF、CF、OF 的内容是什么?MOV BX,4321H ADD BX,1234H SF=0 ZF=0 CF=0 OF=0 4.下列 ASC码串(包括空格串)依次存储在起始地址为 CSTRING 的字节单元中:CSTRING DB PERSONAL COMPUTER 请编写指令将字符串中的第 1 个和第 7 个字符传给 DX 寄存器。MOV DX,CSTRING MOV DX,CSTRING+6 五、程序分析题(分析程序段总的功能或回答相关问题或运行结果)(共 14 题)。1 阅读如下程序片段 MOV AL,4CH MOV BL,0B5H ADD AL,BL 执行上述程序片段后,(AL)=01H ,(BL)=0B5H ,CF=1 ,OF=0 2 阅读如下程序片段 MOV AL,0F3H MOV DL,0C4H ADD AL,DL AND AL,0FH 执行上述程序片段后,(AL)=7H ,CF=0 ,OF=0 ,PF=0 3 阅读如下程序片段 MOV AL,7EH MOV CL,04H ROL AL,CL 执行上述程序片段后,(AL)=0F9H ,(CL)=04H ,CF=1 ,OF=无意义 4 阅读如下程序片段 MOV AX,0632H MOV BX,0C202H SUB AX,BX INC AX 执行上述程序片段后,(AX)=4421H ,(CF)=1 ,OF=0 ,PF=0 5 阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!=28H MOV BX,0024H LEA BX,BX OR BX,0 ADC BX,BX 执行上述程序片段后,(BX)=287AH ,(CF)=0 ,OF=0 ,PF=0 6 阅读如下程序片段,假设(SP)=0064H MOV AX,0001H MOV BX,0002H PUSH AX PUSH BX POP AX POP BX 执行上述程序片段后,(AX)=0002H ,(BX)=0001H ,(SP)=0064H 。(CF)=0 7 DATA SEGMENT TAB DW 1,2,3,4,5 ENTRY DW 2 DATA ENDS MOV BX,OFFSET TAB ADD BX,ENTRY MOV AX,BX MOV CX,TYPE TAB MOV DX,SIZE TAB 执行上述指令后,(AX)=3 ,(CX)=2 ,(DX)=2 。8MOV AX,W IMUL X MOV BX,Y ADD BX,6 IDIV BX MOV Z,AX MOV R,DX 上述程序段中 X,Y,Z,R,W 均为有符号数的字变量,试说明上述程序段完成什么功能。求数值表达式的值:(W*X)/(Y+6)Z,余数R 9 MOV AX,1234H MOV CL,8 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!ROL AX,CL;这条指令执行后,(AX)=3412H DEC AX ;这条指令执行后,CF 不变 MOV CX,4 MUL CX ;这条指令执行后,SF=1 10 CMP DX,BX JG X JL Y CMP AX,CX JA X X:Y:有两个双精度数、分别存储于 DX、AX 及 BX、CX 中,上述程序段完成的功能是什么?完成的功能是:如果.,则转向 X 执行,否则转向 Y 执行。11设有宏定义如下:TRANS MACRO BUF1,BUF2 MOV AX,BUF1 MOV BX,BUF2 MOV BUF1,BX MOV BUF2,AX ENDM 请说明宏指令完成的功能是什么?并将宏调用 TRANS WORD_VAR1,WORD_VAR2 进行宏扩展。宏定义完成的功能是:将两个存储单元 BUF1 和 BUF2 的内容互换。宏调用 TRANS WORD_VAR1,WORD_VAR2 的宏扩展是 MOV AX,WORD_VAR 1 MOV BX,WORD_VAR 2 MOV WORD_VAR 1,BX MOV WORD_VAR 2,AX 12分析下面程序段,回答指定问题:XOR AL,AL CALL SUBROUT MOV BL,AL CALL SUBROUT RCR AL,1 SUBROUT PROC NEAR NOT AL 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!JS NEXT STC NEXT:RET SUBROUT ENDP 上述程序执行后,(AL)=80H ,(BL)=0FFH 。13.试回答下面程序段执行后完成什么功能?OLDS DB COMPUTER N EQU$-OLDS NEWS DB COMPUTOR LEA SI,OLDS LEA DI,NEWS MOV CX,N CLD REPE CMPSB JNZ NEW_ADDRESS OLD_ADDRESS:NEW_ADDRESS:比较字符串 OLDS 和 NEWS 是否相同,若不相同则转到 NEW_ADDRESS 执行,否则转到OLD_ADDRESS 14 MOV CX,L LEA DI,ARRAY MOV AL,20H CLD REPNE SCASB JNZ NOT_FOUND NOT_FOUND:试回答上述程序段完成的功能是什么?在长度为 L 的字符串 ARRAY 中查找空格,若有空格在顺序执行,否则转向NOT_FOUND。六、计算题(共 2 小题)1 将十进制数 100 分别转换为二进制、十六进制数,它们的表示形式分别为多少?二进制为 01100100B,十六进制为 64H 2 假设(DS)=0C00H,(BX)=0210H,对于指令 MOV DS:100HBX,AL,其目的操作数的物理地址为多少?EA=(BX)+0100H=0310H,物理地址=0C000H+0310H=0C310H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!七、程序设计题(共 4 题)1 试编写一程序片段,实现 BL 高 4 位与低 4 位相互交换 MOV CL,4 ROL BL,CL 2 试编写一程序片段,不使用乘除法指令,实现(AX)*5+14)/2 的功能(AX 中的数据理解为补码)MOV BX,AX MOV CL,2 SAL AX,CL ADD AX,BX ADD AX,14 SAR AX,1 3.D1 DW?,?D2 DW?,?定义了两个双精度数。编写一条宏定义 DSUB,完成双精度数 D1 减去双精度数 D2,差存放在 D2 中,两个双精度数为变元。DSUB MACRO D1,D2 MOV AX,D1 MOV DX,D1+2 SUB AX,D2 SBB DX,D2+2 MOV D2,AX MOV D2+2,DX ENDM 或 DNEG MACRO D1,D2 MOV EAX,D1 SUB EAX,D2 MOV D2,EAX ENDM 4现有下列数据段:DATA SECMENT STR1 DB ABCDEFGHIJKL COUNT EQU$STR1 BUF DB COUNT DUP(0)DATA ENDS 试用串指令编写一个完整的程序:实现把 STR1 中所有字符逆向传送到 BUF 缓冲区(即 STR1欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!中第一个字符送到 BUF 的最后一个单元,STR1 中最后一个字符送到 BUF 的第一个单元)。DATA SECMENT STR1 DB ABCDEFGHIJKL COUNT EQU$STR1 BUF DB COUNT DUP(0)DATA ENDS CODE SEGMENT ASSUME CD:CODE,DS:DATA,ES:DATA START:MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,BUF1 LEA 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 21H CODE ENDS END START 或