《汇编语言程序设计》练习题
作者名:不详 来源:网友提供 06年6月8日
一、基本概念
1、8088/8086CPU内部寄存器有______个 ,其中的______是通用寄存器,______是基址和变址寄存器,______是段寄存器,此外还有指令指针寄存器______和标志位寄存器______两个控制寄存器,所有寄存器都是______位寄存器,每个寄存器可以存放______位二进制数。
2、8088/8086CPU的标志位寄存器中有______个标志位,其中的______是控制标志,____________是状态标志。
3、8088/8086CPU有三组总线,它们是______总线 、______总线和______总线;地址总线是______条,因此它可以寻址的范围是______字节。通常将______字节称为1K,将______字节称为1M。
4、8088/8086CPU的存储器采用分段方式管理,每个段最多可以有______字节,全部存储空间可以分成______个大小为64K且互相不重叠的段。
5、采用分段方式管理的存储单元的地址分成______和逻辑地址两种,逻辑地址由______和______两部分构成,段地址是每个存储器段的______;偏移地址则是相对于每个段第一个存储单元的______。段地址存放在段寄存器中,由于8088/8086CPU的段寄存器是16位寄存器,因此在段寄存器中存放的是段地址的______位;而CPU对数据的存取是按物理地址进行的,物理地址和逻辑地址间的关系是____________。
6、存储器中,数据是以______为单位存放的,它是一个______二进制数,16位二进制数是______,又称为______;每个存储单元可以存放一个______;一个字则占用两个存储单元,存放时要将______放在地址较小的存储单元中。
7、计算机的指令由______和______构成,它们分别给出计算机____________和____________。
8、指令操作数通常可以存放在指令中,也可以存放在CPU的寄存器中,大多数存放在存储器中,它们分别称为______、______和______。表示操作数存放的方式称为______。8088/8086CPU的寻址方式有______、______和______三类,第三类寻址方式又分成______、______、______、______、______和______几种。
9、8088/8086CPU的指令系统分成六大类,它们是______指令、______指令、______指令、______指令、______指令和______指令。
10、汇编语言程序语句构成,汇编语言的语句分成______、______和______三类。语句通常由______、______、______、______四部分构成。
11、指令语句在汇编时被翻译成______指令,指示语句则在汇编时由______执行,而不被翻译成机器语言指令。
12、名字项在指令语句中称为______,它是指令的符号地址;而在指示语句中名字项称为______,它是存储单元的符号地址,它们都有______、______、______三种属性。
13、数据定义伪指令的功能是__________________,通常使用的数据定义伪指令是____________。
14、符号定义伪指令EQU的功能是______,通常用它定义常数。
15、用汇编语言编写的程序称为____________,它必须用______程序将它转换成二进制的机器语言程序,这种机器语言程序称为______,而转换的过程称为______。它还必须用______程序连接,才能生成可执行的程序。汇编语言程序上机操作的步骤是______、______、______、______。
16、汇编语言源程序的扩展名是______,目标程序的扩展名是______,可执行程序的扩展名是______。
17、下列指令中,执行后对标志未发生影响的是______。
A、MOV AX,[BX] B、PUSH AX C、ADD AX,00FFH
D、CMP AX,BX E、JB NEXT F、CALL SUBB
G、XOR AX,AX H、MOVSB I、LEA DX,BUF
J、TEST AX,8000H K、MUL BX L、DIV BX
M、NOT CX N、LOOP LOP O、XCHG AX,BX
18、按照下列指令中操作数的寻址方式在括号中填入适当的字母:
源操作数 目的操作数
A、MOV AX,1200H ( )( )
B、CMP WORD PRT[SI],120H ( )( )
C、ADD AX,14[BX] ( )( )
D、SUB [BX+DI],CX ( )( )
E、AND BX,BUF ( )( )
F、LEA DI,[SI] ( )( )
G、XOR [BX+SI+3],DX ( )( )
a.立即寻址; b.寄存器寻址; c.直接寻址;
d.寄存器间接寻址; e.寄存器相对寻址; f.基址变址寻址; g.相对基址变址寻址.
19、某存储单元的地址为3A80:13EBH,其中的3A80是______地址,13EB是______地址;该存储单元的物理地址是______。若段地址改变为20D4,则该存储单元的逻辑地址为______。
20、十进制数-100的8位二进制数的补码为( )。
A、11100100 B、01100100 C、10011100 D、11001110
21、下列是8位二进制数的补码,其中真值最大的是( )。
A、10001000 B、11111111 C、00000000 D、00000001
22、16位有符号数的补码所表示的十进制数的范围是( )。
A、-32767~+32768 B、-32768~+32767 C、-65535~+65536 D、0~65535
23、以下指令中,执行后AL中的数据不变的是( )。
A、AND AL,CL B、OR AL,AL C、XOR AL,AL D、CMP AL,AL
E、ADD AL,0 F、AND AL,0FFH G、XOR AL,0FFH H、OR AL,0FFH
24、下列指令中,执行后,不改变标志位CF的是( )。
A、NOT AL B、AND AL,AL C、SAL AL,1 D、MUL AL
E、MOVSB F、INC AL G、POP AX H、POPF
25、下列指令中,执行后,不改变标志位ZF的是( )。
A、CMP AL,BL B、AND AL,AL C、TEST AL,0FFH D、ROR AL,CL
26、执行指令CALL SUBB时,所要保护的断点在______寄存器中,而执行指令CALL FAR PTR SUBB时,所要保护的断点在____________寄存器中。
二、根据给定的条件写出指令或指令序列:
1、将一个字节的立即数送到地址为NUM的存储单元中。
2、将一个8位立即数与地址为BUF的存储单元内容相加。
3、将地址为ARRAY的存储单元中的字数据循环右移一位。
4、将16位立即数与地址为MEM的存储单元中的数比较。
5、测试地址为BUFFER的字数据的符号位。
6、将AX寄存器及CF标志位同时清零。
7、用直接寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中。
8、用寄存器寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中。
9、用相对寻址方式将首地址为ARRAY的字数组中第8个数送往寄存器BX中。
10、用基址变址寻址方式将首地址为ARRAY的字数组中第N个数送往寄存器BX中。
11、将首地址为BCD_BUF存储单元中的两个压缩BCD码相加,和送到第三个存储单元中。
三、按照给定的条件为程序定义一个数据段,并画出存储单元的示意图:
1、STR是字符串THIS IS A DATA_SEGMENT。
2、DAT1是字节变量,初值为23,4BH,126,0D3H。
3、DAT2是16进制数字变量,初值为100,255,2 DUP(3,5)
4、LEN是以上存储单元的字节数。
四、写出完成下列功能的程序段:
1、将AL中的两位BCD码分离,分别存放DL和DH中。
2、将DL中的4位二进制数转换成16进制数的ASCII码。
3、将AL中的8位二进制数高4位和低4位交换。
4、将AL和BL中的非压缩BCD码合并成一个压缩的BCD码,存在AL中。
5、将AL中的8位有符号数转换成它的绝对值。
6、用串扫描指令在一个字符串中查找字符'*'。
7、将输入的大写字母改变成小写输出。
8、输入一个字母,然后输出它的后续字母。
9、将DX:AX寄存器中的32位数向右移两位。
10、完成计算7×8。
五、分析指令和程序。
1、已知SS=2000H,SI=1000H,AX=0ABCDH,SP=0100H,BP=00FEH,给出下列指令执行后,指定寄存器中的内容,并画出指令执行中堆栈的变化示意图。
PUSH AX AX= SP=
PUSH SI SI= SP=
POP AX AX= SP=
PUSH BP BP= SP=
POP SI SI= SP=
POP BP BP= SP=
PUSH AX AX= SP=
POP BX BX= SP=
2、已知CS=2300H,IP=32B4H,且在数据段中有定义:
ARY DB 0AH,28H,00H,3FH
分别给出下列指令执行后的CS和IP的内容:
A、LEA BX,ARY
JMP WORD PTR[BX] CS= IP=
B、MOV BX,OFFSET ARY
CALL WORD PTR[BX] CS= IP=
C、MOV BX,OFFSET ARY
JMP DWORD PTR[BX] CS= IP=
3、
MOV AL,0
MOV BL,0
MOV CX,10
L1: INC BL
INC BL
ADD AL,BL
LOOP LI
HLT
程序的功能是______________________,画出程序的流程图。
4、
X DB 14
Y DB 4 DUP(?)
MOV SI,0
MOV AH,0
MOV AL,X
MUL AL
MUL AX
MOV WORD PTR[SI],AX
INC SI
INC SI
MOV WORD PTR[SI],DX
HLT
程序执行后X和Y的关系是_______________,画出程序的流程图。
5、
MOV AX,4BD5H
MOV BL,0
MOV DL,0
MOV CX,16
L1: SHL AX,1
JC L2
INC BL
JMP L3
L2: INC DL
L3: LOOP L1
HLT
程序的功能是___________,程序执行后BL=_________,DL=_________,AX=_________。画出程序的流程图。
6、
XOR DX,DX
L1: MOV AH,1
INT 21H
CMP AL,'$'
JZ BACK
CMP AL,30H
JB L1
CMP AL,39H
JA L1
AND AL,0FH
ADD DL,AL
ADC DH,0
JMP L1
BACK:HLT
程序的功能是______________________________,画出程序的流程图。
六、编写汇编语言程序,要有完整的格式(要有必要的数据段和代码段)
1、在屏幕上显示两个字符串,两个字符串要在不同的行。
This is a program
Disk operation system
2、用移位指令将X乘以30,结果存入Y单元。
3、设有三个数A,B和C,如果其中一个为0,将另外两个也清零,否则求它们的和,存入D单元中。
4、在一个数组中查找最大数。
5、用查表法计算Y=X*X-2*X。
6、用字符串操作指令将有符号数数组ARY中的数转换成绝对值存回原单元。
7、输入一个字符串,将其中的小写字母转换成大写字母后输出。
8、从键盘输入一个一位数,然后响铃该数的次数。
9、从键盘输入一个字符串,再将它按相反次序输出在下一行。
10、统计一个16位二进制数中1的个数,并将结果输出。
11、用字符串扫描指令查找字符串中的第3个空格,找到显示FOUND,否则显示NOT FOUND。
12、从键盘输入两个一位数,求它们的和,将结果输出,分别用子程序完成
|
|