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

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

 

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

1. 计算机内表示机器数的常用编码有 ______________ 。
2. 已知 [-Y] 补 =7001H ,则 Y= ( _____________H )。
3. 已知 [X-Y] 补 =7001H , [X+Y] 补 =0001H ,则 [2X] 补 = ( ______________H )。
4. 典型的计算机结构包括 ______________ ,通过 ______________ 连接在一起。
5. 在 1M 字节的存储器中,每个存储单元都有一个唯一的 ______________ 位地址,称为该物理单元的物理地址。
6. 指令中所用到的操作数可存放于 ______________ , ______________ 或 ______________ 中。
7. 对于指令 CMP AX, BX ;当 AX, BX 为带符号数时,若 AX>BX ,则执行后标志位 SF______________ OF=______________ 。
8. 存贮器的地址区域 ____________________________ 为中断向量区。
9. DT 伪指令中定义的每个操作数占有 ______________ 字节。
10. 循环程序可由 ______________ , ______________ , ______________ 三部分组成。
11. 子程序的变量传送方式有 ______________ , ______________ , ______________ , ______________ 等。
12. ORG 100H
X=2
REPT 1
DD X
X=X+1
ENDM
执行前( DS ) =02345H ,汇编后生成的代码为:
______________
______________
13. CPU 是通过 ______________ 来实现对 I/O 进行测试检查的。
14. 内中断有三类中断源,分别为 ______________ , ______________ , ______________ 。
15. 对于以下宏定义
BRANCH MACRO X
IF ($-X) GE 128
JMP NEAR PTR X
ELSE
JMP SHORT X
ENDIF
ENDM
现有以下代码

LOOP0:
MOV AX , BX
BRANCH LOOP0

其中的宏调用展开为:
____________________________
____________________________
____________________________
16. 若 (SP)=0FFFFH ,则指令 POP AX 执行后, (SP)= ______________ 。
17. SUB AL , AH
DAS
若指令执行前, (AL)=86 ,( AH ) =07; 则指令执行后, (AL)= ______________ , CF=______________ , AF=______________ 。
18. MOV CL , 5
SAR [DI] , CL
如指令执行前,( DS ) =0F800H ,( DI ) =180AH , (0F980A)=0064H 则指令执行后,( 0F980A ) =______________ , CF=______________ 。
19. 已知指令 ARRAY DB 2 DUP ( 1 DUP ( 3 ))
则该指令分配 ______________ 字节单元,
指令 MOV AX , Length ARRAY ,执行后, AX=______________ ;
指令 MOV AX , SIZE ARRAY ,执行后, AX=______________ 。
20. 已知,( AX ) =8002H ,( BX ) =0001H ,则,指令 MUL BX 执行后, AX=______________ ;指令 IMUL BX 执行后, AX=______________ 。

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

1. MOV AX , WORDX 中源操作数是直接寻址( WORDX 是以字变量符号地址)。
2. 硬中断处理程序是可使用 INT 指令来调用执行的。
3. 当机器处于死循环时也可以响应硬中断。
4. MOV [100] , AX 与 MOV AX , [301] 的访存次数相同。
5. MOV AX , [AX] 的原操作数是寄存器间接寻址。
6. 宏是不可以递归定义的。
7. 同一个文件内不允许出现相同的子程序名。
8. 非压缩的 BCD 码调整指令的作用是将运算结果重新整理。
9. 语句 X=X-Y 执行后按照减法规则影响标志位。
10. JMP SHORT PTR LABEL 是段内直接短转移。
11. 结构中具有多个值的字段是不允许预赋值的。
12. END LAB 语句指示本程序执行到标号 LAB 处则结束。
13. 当汇编源程序只包含一个段时,连接后就能转换成 .COM 文件。
14. 对于指令 DIV AX ,当 AX=0 时则会产生溢出,并使得标志位 OF=1 。
15. 指令 MOV AX , 3 LT 5 ,汇编后变为 MOV AX , 1 。

三、简答题(共 14 分)

1. ( 5 分)

 

 

 


图中所示是主程序在执行过程中的中断请求情况,试分析主程序以及各中断子程序完成的时间顺序。

2. ( 5 分)不同模块之间是怎样进行变量传送的?

3. ( 4 分)简述宏与子程序的区别与联系。

四、编程序实现下列功能(每小题 5 分,共 15 分)

1. X , Y 分别位 32 位二进制书, Z 为 8 位二进制数,编程序实现 X=X+Y+Z 。(不考虑溢出,数据存储时高地址存高位)
提示:
DATA SEGMENT
X DW 2 DUP (?)
Y DW 2 DUP (?)
Z DB (?)
DATA ENDS
CODE SEGMENT




CODE ENDS
END START

2. X 为一字单元,编程实现:将 X 的内容以二进制的形式显示到屏幕上。其中:显示一个字符用 INT 21H 中断,入口参数为: DL= 字符 ASCII 码, AH=2 。
模块 1 提示如下:



DATA SEGMENT
X DW (?)
DATA ENDS
END
模块 2 提示如下:



CODE SEGMENT



CODE ENDS
END START

3. 从未排序的带符号字数组中找出最大值和最小值,分别存放于 AX 和 BX 中。程序提示:
DATA SEGMENT
ARRAY DW 100 DUP (?)
DATA ENDS
CODE SEGMENT




CODE ENDS
END START

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

1. 将 ARY 指向的 100 个字数组的内容相加,结果存于 SUM 字单元。要求堆栈操作时其数据区在 STACK_SEG 段内。
DATA SEGMENT
ARY DW 100 DUP(?)
COUNT DW 100
SUM DW ?
DATA ENDS
STACK_SEG SEGMENT
SSTT DW 100 DUP (?)
STACK_SEG ENDS
DODE1 SEGMENT
MAIN PROC FAR
ASSUME CS: CODE1 , DS : DATA , SS : STACK_SEG
START :
MOV AX , STACK_SEG
MOV SS , AX
MOV SP , OFFSET SSTT ; 设置堆栈
____________________________ ( 2 分)
PUSH DS
SUB AX , AX
PUSH AX
MOV AX , DATA
MOV DS , AX
MOV BX , OFFSET ARY
PUSH BX
MOV BX , OFFSET COUNT
PUSH BX
MOV BX , OFFSET SUM
PUSH BX
CALL FAR PTR PROADD
RET
CODE1 ENDS

CODE2 SEGMENT
ASSUME CS : CODE2
STACK_STRC STRUC
SAVE_BP DW ?
SAVE_CS_IP DW 2 DUP (?)
PAR3_ADDR DW ?
PAR2_ADDR DW ?
PAR1_ADDR DW ?
STACK_STRC ENDS
PROADD PROC FAR
PUSH BP
MOV BP , SP
PUSH AX
PUSH CX
PUSH SI
PUSH DI
MOV SI , [BP]. PAR1_ADDR
MOV DI , [BP].PAR2_ADDR
MOV CX , [DI]
____________________________ ( 2 分)
____________________________ ( 2 分)
NEXT :
ADD AX , [SI]
ADD SI , 2
LOOP NEXT
MOV [DI] , AX
POP DI
POP SI
____________________________(2 分 )
POP AX
POP BP
RET 6
PROADD ENDP
END START

2. 以下程序完成对首地址为 A 的 N 字正整数组从小到大排序。填上缺少的指令。
DATA SEGMENT
A DW N DUP (?)
DATA ENDS

CODE SEGMENT
ASSUME CS : CODE , DS : DATA
START :
____________________________ ( 1 分)
____________________________ ( 1 分)
MOV CS , N
____________________________(2 分 )
LOOP1 :
MOV DI , CX
MOV BX , 0
LOOP2 :
MOV AX , A[BX]
CMP AX , A[BX+2]
____________________________(2 分 )
XCHG AX , A[BX+2]
MOV A[BX],AX
CONTINUE :
ADD BX , 2
LOOP LOOP2
____________________________(2 分 )
LOOP LOOP1
MOV AH , 4CH
INT 21H
CODE ENDS
END START