1998年上半年北京市高等教育自学考试汇编语言试卷

作者名:不详 来源:网友提供 06年6月8日

 

注意:本试卷共五题。
考试  http://www.csai.cn  4月25日上午 8:30~11:00

一、填空题(每空1分,共 40分)

1. n位补码的表数范围为:- ≤N≤+ 。

2. 设(AX)=0304H,(BX)=0FF00H则执行指令 AND AX,BX 后,(AX)= 。

3. 已知:[X]补=0075H,[Y]补=0FF8BH,则[X+Y]补= ,[X-Y]补= 。

4. 8086/8088寄存器组可以分为四类,它们分别是 , ,
, 。

5. 外部设备与主机的通信是通过外设接口进行的,接口寄存器根据用途可以分为, , 。

6. 计算机中的指令由 字段和 字段两部分组成。

7. ORG 1000H
X DB 12H
Y DW X
Z DD Y
(DS)=3879H, (BX)=1000H, (SI)=0002H
求下列指令执行完后指定寄存器的内容
MOV AX, [1000H] ; (AX)=
MOV BX, [BX]; (AX)=
MOV AX, [BX+SI]; (AX)=
MOV AX, [Y+1]; (AX)=
LEA DX, X; (DX)=
LDS SI,Y; (SI)=
(DS)=

8. 已知(SI)=2000H,(BX)=1000H,(DS)=3000H,(33000H)=15981000H,(32000H)=86050F34H,(DI)=4000H,(35000H)=79008A4CH。求下列指令执行完后CS及IP寄存器的内容
JMP SI;(IP)=
JMP [SI];(IP)=
JMP [BX+SI];(IP)=
JMP DWORD PTR [BX+DI];(IP)=
(CS)=

9. 已知(BX)=1000H,(DS)=2000H,(21000H)=3000H,(23000H)=4000H,
则 XCHG BX,[BX] 执行完后
(BX)=
((BX))= (一个字的内容)
(21000H)= (一个字的内容)

10. 已知(SP)=1000H,(SS)=3000H,(31000H)=2000H,(DS)=4000H,(BX)=1200H,则 POP [BX] 指令执行完后
(SP)=
(41200H)= (一个字的内容)

11. 已知:(AX)=4F08H,(CF)=0,(CL)=4,则 RCR AX,CI指令执行完后
(AX)= ,(CF)=

12.

(SI)=2100H,(DI)=3100H
如图所示,当(CX)10D时,执行完
CLD
REPNE CMPSB
串比较指令后
(SI)=
(DI)=
(CX)=

13. INT中断指令将CS,IP,PSW压入堆栈的次序依次为 , ,。中断向量共有 个。

二、 判断题(正确的在题后括号内划“√”,错误的划“×”。每小题1分,共15分)

1. 同一地址即可以看作是字节单元的地址,也可以看作是字单元的地址。()
2. 一个字存入存储器要占有相继的两个字节,低位字节存入低地址,高位字节存入高地址。()
3. MOV AX,1000H 指令中的目的操作数是立即寻址。( )
4. MOV AX,ES:[DI-SP]中源操作数是带段跨越前缀的基址变址寻址。()
5. IN DX,AL:指令从DX指定的端口地址读入一个字节到AL寄存器中。()
6. PUSH AL:将AL寄存器的内容压入堆栈。( )
7. ADD AX,BX与ADC AX,BX指令得到的结果总是不同的。( )
8. MOVS ES:BYTE PTR[DI],DS:[SI]完全等价于MOVSB。( )
9. 无符号数比较指令和有符号数比较指令的比较结果有可能相同,
10.隐含地认为变量表达式的类型属性和变量的类型属性是相同的。()
11.DUP操作不可以嵌套。( )
12.对于MOV指令,不可以将一个存储单元的内容直接送入另外一个存储单元。()
13.对于数值回送操作符TYPE、LENGTH、SIZE之间有如下关系:
(SIZE变量)=(LENGTH变量)*(TYPE变量)
14.定义在代码段C中的类型属性为FAR的过程只能在代码段C之外调用。()
15.程序直接I/O方式可以大大提高CPU的效率。

三、简答题(每小题5分,共15分)

1. 简述CPU的组成。
2. 简述中断发生时硬件自动完成的操作。
3. 简述汇编语言从源程序的建立到运行可执行程序的主要步骤。

四、模块与框图(每小题5分,共15分)

1. 编写宏定义,实现将三个内存单元X、Y、Z(大小为一个字)的内容求和,结果存放在AX寄存器中。
2. 画出起泡排序(升序)的框图。
3. 编写程序模块,将BX的内容以十六进制的形式显示在屏幕上。

五、程序填空题(共15分)

1. (6分)在ADD单元中存放着数Y。下面的程序把Y中1的个数存入COUNT单元中。
DATASEG SEGMENT
ADDR DW Y
COUNT
EXIT: MOV ____________, CX
MOV AX, 1C00H
INT 21H
CODESEG ENDS
END START

2. (9分)下面的程序把从键盘读入的0~FFFFH的十六进制正数(字母为大写)转换为十进制数并在屏幕上显示出来
DISPLAY EQU 2H
KEY IN EQU 1H
DOSCALL EQU 21H
HEXIDEC SEGMENT
MAIN PROG FAR
ASSUME CS: HEXIDEC
START: PUSH DS
SUB AX, AX
PUSH AX
CALL HEXIBIX
CALL CRLF
CALL BLXIDEC
CALL CRLF
RET
MAIN ENDP
HEXIBIX PROC NEAR
MOV BX, 0
NEWCHAR: MOV AH, KEY IN
INT DOSCALL
SUB AL, 30H
JL EXIT
CMP AL, ______________
JL ADD_TO
SUB AL, ______________
CMP AL, 0AH
JL EXIT
CMP AL, 10H
JGE EXIT
ADD_TO: MOV CL, ________________
SHL BX, CL
MOV AH, 0
ADD BX, AX
JMP NEWCHAR
EXIT: RET
HEXIBIN ENDP
BIXIDEC PROC NEAR
MOV CX, 10000D
CALL DEC_DIV
MOV CX, 1000D
CALL DEC_DIV
MOV CX, 100D
CALL DEC_DIV
MOV CX, 10D
CALL DEC_DIV
MOV CX, 1
CALL DEC_DIV
RET
DEV_DIV PROC NEAR
MOV AX, BX
MOV DX, _________________
DIV CX
MOV BX, DX
MOV ______________, AL
ADD DL, 30H
MOV AH, DISPLAY
INT DOSCALL
RET
DEC_DIV ENDP
BINIDEC ENDP
CRLF PROC NEAR
MOV DI, 0AH
MOV AH, DISPLAY
INT DOSCALL
MOV DL, 0DH
MOV AH, DISPLAY
INT DOSCALL
RET
CRLF ENDP
HEXIDEC ENDS
EDN START