admin 管理员组文章数量: 1184232
2024年12月23日发(作者:play props什么意思)
一、 单项选择题 (共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 )。
A.C+D=B B.A+D=B
C.B=D D.A>C>D
4.下列四个寄存器中,可作为十六位寄存器的是(C )
A.DL B.CL
C.BP D.EBX
5.8088/8086存储器分段,每个段不超过( D)
A.64K个字 B. 32K个字节 C.1兆个字节 D.64K个字节
6.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式( B)
A:寄存器寻址
C:变址寻址
B:相对基址变址寻址
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 )
AX AX
AX AX
10.8086/8088系统执行传送指令MOV时(A )
A.不影响标志位 B.影响DF方向标志
C.影响SF符号标志 D.影响CF进位标志
11.执行下列程序后,(AL)=(D )H。
DATA SEGMENT
TAB DB ‘’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX, DATA
- 1 -
MOV DS, AX
MOV BX, OFFSET TAB
MOV AL, 04
XLAT TAB
…
A.04 B.0400
C.33 D.34
12.下列指令中操作数在代码段中的是(A )。
A.MOV AL, 25H B.ADD AH, BL
C.INC BYTE PTR [25H] D.CMP BL, AL
13.若要求一个操作数中的若干位维持不变,若干位置“1”,可以使用( B)
A:NOT B:OR C:AND D:XOR
14.下列指令中段默认为堆栈段的是(C )
AX,[BX+SI+10] AX,ES:[SI]
[BX],[BP][DI] D. MOV DX,[1000H]
15.设BL=05H,要使结果BL=0AH,应执行的指令是( C)。
A.NOT BL B.AND BL
C.XOR BL, 0FH D.OR 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)。
A.12H B.24H
C.36H D.48H
20.DOS调用INT 21H的键盘输入功能1和功能8的区别是( B )。
A.功能1不回显而功能8回显 B.功能1回显而功能8不回显
C.功能1和功能8都不回显 D.功能1和功能8都回显
- 2 -
二、填空题(共27题)。(最后二题有备选答案)
1.设一存储单元中的二进制代码是83H,其对应的一个无符号数是 148 ,一
个带符号数是 -108 。
2.8086/8088系统中,I/O端口地址范围是 0000H~FFFFH。
3.8086/8088系统中,段内一个单元相对段的起始地址的距离称为 偏移地
址 , 它小于 64K 。
4.8086/8088CPU内部用来存放段地址的寄存器有 CS,DS,ES,SS 。
5.在PC机中,使用 SS 、 SP 合成20位的物理地址,用以指向当前堆栈
桟顶的位置。
6.一个字单元由二个连续的 字节 单元组成,其中数据的低8位存放在 低
地址 单元、高8位存放在 高地址 单元。
7. 在指令中直接给出操作数的寻址方式称为 立即寻址方
式 。
8.设MASK为一个变量,在“MOV AX, MASK[SI+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]____
- 3 -
ADD SI, 2
LOOP R1
MOV CL, 8
IDIV CL
HLT
19.MOV 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_____
21.MOV AX, 234H
MOV CL, 3
ROL AX, CL
DEC AX
MOV CX, 4
MUL CX
此段程序执行完后,(AX)= __467CH_____ , (CX)= ___4____
22.DA1 DB 83H,72H,61H,94H,5AH
MOV CX,WORD PTR [DA1]
AND CX,0FH
MOV AL,[DA1+3]
- 4 -
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 ‘a’~‘z’,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
- 5 -
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
① JL PRINTIT
MOV CH, 4
② AND AL, OFH
ROTATE: MOV CL, 4
③ DEC CH
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
- 6 -
② AND AL, OFH
③ DEC CH
27.下面程序段是判断寄存器BL中第3位、第5位是否同时为1,如同时为1,则AH
置0,否则AH置全l。
MOV DL, BL
备选答案:
NOT DL
① JMP NEXT
2
② TEST DL, 28H
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.逻辑地址:
- 7 -
逻辑地址:由两个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
- 8 -
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 。
8.MOV 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中,上述程序段完成的功能是什么?
- 9 -
完成的功能是:如果
.>
,则转向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:
…
- 10 -
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:100H[BX],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
- 11 -
或
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, BUF—1
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
- 12 -
版权声明:本文标题:汇编语言练习题2 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1734981747a1617936.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论