《汇编语言程序设计》测试题
一、 填空:(10分)
1、INTEL8086功能上分为总线接口部件(BIU)和执行部件(EU)两大部分,执行部件负责指令的执行,主要有 , , ,三个部分组成,BIU 主要包含 , 。
2、数据寄存器组包括四个16位寄存器,其中 称累加器, 称基址寄存器, 称计数寄存器, 称数据寄存器。四个段寄存器分别是 ,IP寄存器中存放的是 。
3、PSW 称为程序状态字,由条件码和控制标志组成,OF标志的含义是 ,CF标志的含义是 ,SF标志的含义是 ,ZF标志的含义是 。
4、DEBUG 中包括了若干条命令,其中U命令的功能是 ,D命令的功能是 ,T命令的功能是 查看寄存器内容的命令是 ,运行程序的命令是 。
5、子程序参数的传递有三种方式, ,
, 。
二、 计算题:(25分,第5题为5分,其余各4分)
1、 把下列二进制数转化为16进制数和十进制数:
(1)101101 (2)10000000 (3)11111111
2、 完成下列二进制数的计算:
00010101+00001101=
00011111—00000101=
3、 求下列二进制数的补码:
—00010011 —00111110
4、 有一个16位数值0101,0000,0100,0011,
(1)如果它是二进制数,和它等值的十进制数是多少?
(2)如果它是ASCII码字符,则是什么字符?
(3)如果它是压缩的BCD码,它表示的数是什么?
5、 求下列各数与4AE0H的差,并根据结果设置标志位SF、ZF、CF、OF:
(1)1234H (2)5D90H
6、 写出下列存储单元地址的段地址、偏移地址和物理地址:
(1)3516:0050 (2)1F00:000A
三、 简答题:(20)
1、 如果一个堆栈从地址1250:0000开始,它的最后一个字的偏移地址为0100H,SP的内容为0052H:
问:(1)栈顶地址是多少?
(2)栈底地址是多少?
(3)在SS中的段地址是多少?
(4)存入数据3445H后,SP的内容是多少?
2、 现有(DS)=2000H,(BX)=0100H,(SI)=0002H
(20100)=12H,(20101)=34H,(20102)=56H (20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX 寄存器的内容。
(1)MOV AX,1200H
(2)MOV AX,BX
(3)MOV AX,[1200]
(4)MOV AX,[BX]
(5)MOV AX,1100[BX]
(6)MOV AX,[BX][SI]
(7)MOV AX,1100[BX][SI]
3、假定(BX)=0E3H,变量VAL的值为79H,确定下列各条指令单独执行后的结果。
(1)XOR BX,VAL
(2)AND BX,VAL
(3)OR BX,VAL
(4)TEST BX,01H
(5) XOR BX,0FFH
(6)AND BX,0
4、 假定(DX)=10111001B,(CL)=03,(CF)=1,确定下列各条指令单独执行后,DX中的值。
SHR DX,1
SAR DX,CL
SHL DL,1
ROR DL,CL
RCR DL,1
四、 阅读下列程序段,回答问题(20)
1、 阅读下列程序,结果是多少、存放在哪里?
STACK SEGMENT STACK
DB 64 DUP (‘STACK’)
STACK ENDS
DATA SEGMENT
BUFA DB —100,2,13,—35,56
BUFB DB 34,—120,23,—39,65
N=$—BUFB
F DW ?
BUFO DB ‘OVERFIOW!’,0DH,0AH,‘$’
DATA ENDS
CODE SEGMENT ‘CODE’
ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN:MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV CX,N
LEA SI,BUFA
LEA DI,BUFB
LOPA: MOV AL,[SI]
CBW
ADD BX,AX
JO OVER
MOV AL,[DI]
CBW
ADD BX,AX
JO OVER
INC SI
INC DI
DEC CX
JNE LOPA
MOV F,BX
EXIT: MOV AH,4CH
INT 21H
OVER: LEA DX,BUFO
MOV AH,9
INT 21H
JMP EXIT
CODE ENDS
END BEGIN
2、读下列程序,并指出此程序执行结束后,显示器所显示的内容:
A SEGMENT
NUM DB 00111001B
BUF DB 0AH,0DH,‘(NUM)=’
BUF1 DB 4 DUP (0)
A ENDS
B SEGMENT STACK
DB 200 DUP (0)
B ENDS
C SEGMENT
ASSUME DS:A,SS:STACK,CS:C
BEGIN:MOV AX,X
MOV DS,AX
LEA DI,BUF1
MOV AL,NUM
MOV CL,4
SHR AL,CL
OR AL,30H
MOV [DI],AL
INC DI
MOV AL,NUM
AND AL,0FH
OR AL,30H
MOV [DI],AL
INC DI
MOV BYTE PTR [DI],‘H’
INC DI
MOV BYTE PTR [DI],‘$’
LEA DX,BUF
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
C ENDS
END BEGIN
五、 编写程序:(25分)
1、 写出执行以下计算的指令序列,其中X、Y、Z、R、W为存放16位带符号数单元地址。
(1)Z<—W+(Z—X)
(2)Z<—(X*W)/(Y+6),R<—余数
2、 写程序,要求对键盘输入的小写字母用大写字母显示出来。
3、从键盘输入一系列字符,以‘$’ 为结束符,然后对其中的非数字字符计数,并显示结果。