汇编复习题.docx
《汇编复习题.docx》由会员分享,可在线阅读,更多相关《汇编复习题.docx(23页珍藏版)》请在冰豆网上搜索。
汇编复习题
《汇编语言程序设计》复习题
一、基本概念
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、MOVAX,[BX] B、PUSHAX C、ADDAX,00FFH
D、CMPAX,BX E、JBNEXT F、CALLSUBB
G、XORAX,AX H、MOVSB I、LEADX,BUF
J、TESTAX,8000H K、MULBX L、DIVBX
M、NOTCX N、LOOPLOP O、XCHGAX,BX
18、按照下列指令中操作数的寻址方式在括号中填入适当的字母:
源操作数 目的操作数
A、MOVAX,1200H ( )( )
B、CMPWORDPRT[SI],120H ( )( )
C、ADDAX,14[BX] ( )( )
D、SUB[BX+DI],CX ( )( )
E、ANDBX,BUF ( )( )
F、LEADI,[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、ANDAL,CL B、ORAL,AL C、XORAL,AL D、CMPAL,AL
E、ADDAL,0 F、ANDAL,0FFH G、XORAL,0FFH H、ORAL,0FFH
24、下列指令中,执行后,不改变标志位CF的是( )。
A、NOTAL B、ANDAL,AL C、SALAL,1 D、MULAL
E、MOVSB F、INCAL G、POPAX H、POPF
25、下列指令中,执行后,不改变标志位ZF的是( )。
A、CMPAL,BL B、ANDAL,AL C、TESTAL,0FFH D、RORAL,CL
26、执行指令CALLSUBB时,所要保护的断点在______寄存器中,而执行指令CALLFARPTRSUBB时,所要保护的断点在____________寄存器中。
二、根据给定的条件写出指令或指令序列:
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是字符串THISISADATA_SEGMENT。
2、DAT1是字节变量,初值为23,4BH,126,0D3H。
3、DAT2是16进制数字变量,初值为100,255,2DUP(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,给出下列指令执行后,指定寄存器中的内容,并画出指令执行中堆栈的变化示意图。
PUSHAX AX= SP=
PUSHSI SI= SP=
POP AX AX= SP=
PUSHBP BP= SP=
POP SI SI= SP=
POP BP BP= SP=
PUSHAX AX= SP=
POP BX BX= SP=
2、已知CS=2300H,IP=32B4H,且在数据段中有定义:
ARYDB0AH,28H,00H,3FH
分别给出下列指令执行后的CS和IP的内容:
A、LEABX,ARY
JMPWORDPTR[BX] CS= IP=
B、MOVBX,OFFSETARY
CALLWORDPTR[BX] CS= IP=
C、MOVBX,OFFSETARY
JMPDWORDPTR[BX] CS= IP=
3、
MOVAL,0
MOVBL,0
MOVCX,10
L1:
INCBL
INCBL
ADDAL,BL
LOOPLI
HLT
程序的功能是______________________,画出程序的流程图。
4、
XDB14
YDB4DUP(?
)
MOVSI,0
MOVAH,0
MOVAL,X
MULAL
MULAX
MOVWORDPTR[SI],AX
INCSI
INCSI
MOVWORDPTR[SI],DX
HLT
程序执行后X和Y的关系是_______________,画出程序的流程图。
5、
MOVAX,4BD5H
MOVBL,0
MOVDL,0
MOVCX,16
L1:
SHLAX,1
JC L2
INCBL
JMPL3
L2:
INCDL
L3:
LOOPL1
HLT
程序的功能是___________,程序执行后BL=_________,DL=_________,AX=_________。
画出程序的流程图。
6、
XORDX,DX
L1:
MOVAH,1
INT21H
CMPAL,'$'
JZ BACK
CMPAL,30H
JB L1
CMPAL,39H
JA L1
ANDAL,0FH
ADDDL,AL
ADCDH,0
JMPL1
BACK:
HLT
程序的功能是______________________________,画出程序的流程图。
六、编写汇编语言程序,要有完整的格式(要有必要的数据段和代码段)
1、在屏幕上显示两个字符串,两个字符串要在不同的行。
Thisisaprogram
Diskoperationsystem
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,否则显示NOTFOUND。
12、从键盘输入两个一位数,求它们的和,将结果输出,分别用子程序完成
《汇编语言程序设计》考试题型例举
一、单项选择题
1.在循环(LOOP)和串处理指令中,用作计数器的寄存器是()
A.AX
B.BX
C.CX
D.DX
2.无条件段间转移指令的执行改变()
A.SP
B.SS和SP
C.IP
D.CS和IP
3.指令MOVAX,[BX][SI]中源操作数采用的寻址方式是()
A.寄存器
B.寄存器相对
C.寄存器间接
D.基址变址
二、填空题
1.8086/8088的地址总线有_______位,其最大的内存空间是_______字节。
2.在8086/8088寄存器组中,数据寄存器包括AX,BX,_______和_______。
3.在执行串处理指令时,为了使地址自动增量,应执行指令:
_______,该指令使得方向标志位_______。
三、简答题
1.简述8086/8088对内存的分段管理技术。
2.8086/8088CPU中,有哪些可编程寄存器。
3.简述在计算机上运行汇编语言程序的基本步骤。
四、改错题
1.指出下列语句的错误,并说明原因
(1)MOVBYTEPTR[BX],1024
(2)MOV[BX],[SI]
(3)SARAL,5
(4)MUL11H
(5)JNLFARPTRNEXT
(6)POPCS
2.找出下面程序中的错误,并改正
已知附加段中字符串STRING(长度为15)定义如下:
STRINGDB‘Computer&math’
下面程序把STRing中的“&”用空格符代替。
MOVCX,15
LEADI,STRING
MOVAL,‘&’
CLD
NEXT:
CMPSB
JNZC1
MOVBL,20H
MOVES:
[DI],BL
C1:
DECCX
JNZNEXT
五、程序分析题
1.假设程序中数据定义如下:
ORG0028H
PARTDW?
PNAMEDWDUP(0,2DUP(0,?
),$+2)
COUNTDD?
LENGEQU$-PART
(1)问:
Leng的值是_______,其含义是_______。
(2)指令MOVAX,[PART+12]执行后,(AX)=_______。
2.分析下面程序,指出该程序的功能,并画出流程图。
LEABX,TAB
MOVAX,0?
MOVAL,N
MOVDX,AX
ADDAX,AX
ADDAX,DX
ADDBX,AX
JMPBX
TAB:
JMPNEARPTRL0
JMPNeaRPTRL1
JMPNeaRPTRL7
汇编语言模拟试题
一、填空题(每空1分,共40分)
1.设(DS)=2000H,(ES)=3000H
(SS)=4000H,(BX)=1000H
(BP)=1000H,(ST)=0001H
(DI)=0002H
(21000H)=1234H,(21002H)=5678H
(31000H)=9ABCH,(31002H)=0DEF0H
(41000H)=3456H,(41002H)=789AH
计算下列各指令中源操作数的物理地址,并指出指令执行后AX寄存器的内容。
MOVAX,ES:
[1000H] 物理地址(AX)=
MOVAX,[BX] 物理地址(AX)=
MOVAX,[BP+DI] 物理地址(AX)=
MOVAX,[DX][SI] 物理地址(AX)=
2.设(DS)=2000H
ORG2100H
TABLEDB10,3*5,10H
ADDRESSDDTABLE
ARRAYDW2DUP(3827H,?
)
写出下列各单元的内容:
(1)(2100H)=
(2)(2101H)=
(3)(2102H)=
(4)(2103H)=
(5)(2104H)=
(6)(2105H)=
(7)(2106H)=
(8)(2107H)=
(9)(2108H)=
(10)(2109H)=
(11)(210AH)=
(12)(210BH)=
(13)(210CH)=
(14)(210DH)=
(15)(210EH)=
3.下面的程序通过子程序调用,将数组ARRAY的COUNT个元素求和,并将结果送SUM单元,分析这段程序后,补充完整程序中的空格部分。
|
|
|
SUMDW?
ARRAYDW200DUP(?
)
COUNTDW200
|
|
|
MOVDX,OFFSETSUM
PUSHBX
MOVBX,OFFSETARRAY
PUSHBX
MOVBX,OFFSETCOUNT
PUSHBX
CALLSUMPRO
|
|
|
SUMPROPROCNEAR
PUSHAX
PUSHBX
PUSHSI
PUSHDI
PUSHBP
MOVBP,SP
MOVSI,[BP+_____];得到ARRAY的地址
MOVDI,[BP+_____];得到COUNT的地址
MOVCX,[DI]
MOVDI,[BP+_____];得到SUM的地址
XORAX,AX
NEXT:
ADDAX,[SI]
LOOPNEXT
MOV[],AX;送求和结果
POP
POPDI
POPSI
POP
POPAX
RET
SUMPROENDP
请填出用堆栈传送参数地址时,堆栈最满时的状态:
____________
|___________|
|___________|
|___________|
|___________|
|___________|
|___________|
|___________|
|___________|
|___________|
二、判断题(每小题1分,共10分)[下面指令中出现的VAL为一字变量]
1.任何存储单元都只有唯一的段地址的偏移地址。
()
2.MOVCL,[BL]()
3.REPMOVSES:
WORDPTR[DI],DS:
[SI]()
4.RCR[BX+SI],CL()
5.MOVBX,VAL:
[DX]()
6.MOVDS,[BP+DI]()
7.JMPDWORDPTR[BX+SI]()
8.PUSHOFFSETVAL()
9.MOVCL,HIGHVAL()
10.TESTDL,00000100B()
三、简答题(每小题5分,共15分)
什么是中断?
什么是中断源?
什么是中断向量?
指令和伪指令的关系是什么?
I/O设备有哪几种数据传送方式?
它们各自有什么特点?
四、编程题(5分)
编写宏指令CLEARBLOCK,完成用空格符清除某一字符区的工作,字符区首地址及其长度为变元。
五、编程题(30分)
从键盘读入连续n个字符(0≤n≤150),将这串字符中的小写字母转化为大写字母后重新在屏幕上显示,然后统计这串字符中非数字字符(‘0’----‘9’以外的字符)的个数并以16进制的形式显示出来,请编制完整的汇编语言程序完成上述功能。
试题1从下列叙述中选择正确的叙述(10分)。
(1)汇编语言是用符号表示的面向机器的语言,因此它是机器语言。
(2)汇编语言是一种高级语言,其程序源代码必须编译成目标代码,程序才能执行。
(3)连接程序是把若干个模块连接起来成为可执行程序的系统程序。
(4)堆栈以先进后出的方式工作。
T
(5)零标志ZF=1,表示计算结果为0。
T
(6)汇编语言是最快最有效的计算机语言,在自动控制、通信与接口中是必不可少的。
T
(7)汇编语言与机器低层关系不大,所以它具有很好的移植性。
F
(8)8088/8086的控制寄存器有IP和PSW,它们都是16位寄存器。
F
(9)SP是保存当前栈顶地址的寄存器。
T
(10)将汇编语言源代码转换成机器目标代码的过程称为编译。
F
正确的答案:
(1)F,
(2)F,(3)T,(4)T,(5)T,(6)T,(7)F,(8)F,(9)T,(10)F
试题2选择填空题(20分)
设(DS)=2000H,(CS)=8000H,(BX)=1000H,(SI)=2000H,COUNT=3000H,
(20000H)=10H,(20001H)=0AH,(21000H)=20H,(21001H)=0BH,
(22000H)=30H,(22001H)=0CH,(23000H)=30H,(23001H)=0CH,
(24000H)=40H,(24001H)=0DH,(25000H)=50H,(25001H)=0EH,
(26000H)=60H,(26001H)=0FH,。
下列指令执行后,按要求填空。
(1)MOVAX,BX(AX)=
(2)MOVAX,[2000](AX)=
(3)MOVAX,[BX](AX)=
(4)MOVAX,COUNT[SI](AX)=
(5)MOVAX,COUNT[BX][SI](AX)=
(6)JMP[BX][SI](IP)=
(7)JMPBX(IP)=
下一条要执行指令的物理地址=
(8)JMPCOUNT[BX](IP)=
下一条要执行指令的物理地址=
答案:
(1)1000H,(2