浙江省2001年10月高等教育自学考试汇编语言程序设计试题

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

 

一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 10 分 )

1. 把若干个模块连接起来成为可执行文件的系统程序是 ( )

A. 汇编程序 B. 连接程序 C. 机器语言程序 D. 源代码程序

2. 使汇编程序执行某种操作的命令是 ( )

A. 变量 B. 指令 C. 伪指令 D. 宏指令

3. 串操作指令中,目的操作数的段地址一定在 ( ) 寄存器中

A. CS B. SS C. DS D. ES

4. 在下列语句中, AGAIN 称为 ( )

AGAIN : INC SI

A. 符号 B. 助记符 C. 标号 D. 变量

5.MOV BH , 1000 [ SI ],该指令中源操作数采用的寻址方式是 ( )

A. 立即 B. 直接 C. 寄存器相对 D. 寄存器间接

6.OR AL , AL 是 ( ) 操作指令。

A. 异或 B. 加法 C. 右移 D. 逻辑或

7.DOS 系统功能调用中,显示单个字符的系统调用号是 ( )H 。

A. 01H B. 02H C. 08H D. 09H

8. 使计算机执行某种操作的命令是 ( )

A. 宏指令 B. 指令 C. 伪指令 D. 语句

9. 换码指令的助记符是 ( )

A. XCHG B. LEAS C. ALXT D. MOV

10. 计算机能直接识别并执行的语言是 ( )

A. 汇编语言 B. 机器语言 C. 高级语言 D. 低级语言

二、填空题 (共20分)

1. 假设 BL=0C5H , CL=2,CF=1 ,确定下列各条指令独立执行后, BL 和 CF 中的值,并填入括号中。

A. SHR BL , 1 ; BL=( ) CF=( )

B. SAR BL , CL ; BL=( ) CF=( )

C. ROR BL , 1 ; BL=( ) CF=( )

D. RCL BL , CL ; BL=( ) CF=( )

2. 现有数据定义伪指令如下,写出对应的数据在存储单元中的存放形式。

BUF1 DB 01 , 52H

BUF2 DW 3 DUP(? , 0)

BUF3 DB 2 DUP(0 , 2DUP(1 , 2) , 3)

BUF1

BUF2

BUF3

3. 计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是 ______ 码,称为美国 ______ 码。

4.8086/8088CPU 中,有二个变址寄存器,分别是 ______ 和 ______ ,二个指针寄存器,分别是 ______ 和 ______ 。

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

1. 请指出下列指令错误原因:

A. OR AX ,[ CX ]

B. ADD [ SI ],[ BX ][ DI ]

C. JMP BYTE PTR LOOPS

D. SAR AX , 4

E. RCL DX

2. A. 下面两个语句有何区别 ?

X 1 EQU 1000H

X 2 =1000H

B. 下面的程序段有错吗 ? 若有,请指出错误。

CRAY PROC

PUSH AX

ADD AX , BX

RET

ENDP CRAY

3. 假设程序中的数据定义如下:

ARRAY1 DW ?

ARRAY2 DB 16 DUP(?)

ARRAY3 DD ?

PLENTH EQU $-ARRAY1

问 PLENTH 的值为多少 ? 它表示什么意义 ?

4. 试根据以下要求,分别写出相应的汇编语言指令。

A. 把 AX 寄存器和 BX 寄存器的内容相加,结果存入 AX 中。

B. 用 BX 和 SI 的基址变址寻址方式,把存储器中的一个字节与 DL 的内容相加,并把结果送回 DL 中。

C. 把数 OBEH 与 AH 内容相加,结果送回 AH 中。

D. 用 SI 和位移量 0200H 的寄存器相对寻址方式把存储器中的一个字与 AX 相加,并把结果送回存储单元中。

E. 用位移量 0860H 的直接寻址方式把存储器中一个字与数 2EA0H 相加,结果回送存储器中。

四、程序分析题 (每小题5分,共20分)

1. 试分析下面程序段完成什么功能 ?

CON1 DW ×××× H

CON2 DW ×××× H

MOV AX , CON1

MOV BX , CON2

CMP AX , BX

JGE GREAT

 

LESS

2. 试分析下面程序段完成什么功能 ?

OR AL , AL

JZ L 0

CMP AL , 1

JZ L 1

CMP AL , 2

JZ L 2

JMP STOP

L 0 :  ┇

L 1 :  ┇

L 2 :  ┇

STOP : HLT

3. 试问下面的程序段完成的功能是什么 ? 程序执行后, AX 的内容是什么 ?

XOR AX , AX

MOV BX , 2

MOV CX , 10

L : ADD AX , BX

ADD BX , 2

LOOP L

HLT

4. 试分析下面的程序段完成什么功能 ?

MOV CL , 04

SHL DX , CL

MOV BL , AH

SHL AX , CL

SHR BL , CL

OR DL , BL

五、程序设计 (每小题10分,共30分)

1. 试编写使 AL 寄存器中的无符号数乘 20 的程序段。

2. 编写程序将 ELEMS 中的 100 个字节数据的位置颠倒过来 ( 即第一个字节和第 100 个字节的内容交换,第二个字节和第 99 个字节的内容交换…… ) 。

3. 仔细阅读下列程序段,它是二个 ASCII 码转换为一字节十六进制数的子程序,请回答下列问题:

A. 说明一个 ASCII 码字符转换为一位十六进制数的算法。

B. 程序执行结束后, HEXBUF 字节单元中的内容是什么 ?

C. 对程序进行注释,说明指令执行的工作。

 ┇

ASCBUF DB 38H , 41H

HEXBUF DB ?

 ┇

LEA SI , ASCBUF

LEA DI , HEXBUF

MOV CL , 4

MOV AL ,[ SI ]

CALL ASC-HEX

MOV [ DI ], AL

MOV AL ,[ SI+1 ]

CALL ASC-HEX

OR [ DI ], AL

HLT

ASC_HEX PROC NEAR

CMP AL , 3AH

JC ASC1

SUB AL , 7

ASC1 : SUB AL , 30H

RET

浙江省 2001 年 10 月高等教育自学考试

汇编语言程序设计试题参考答案

课程代码: 02321

一、单项选择题 (每小题1分,共10分)

1.B 2.C 3.D 4.C 5.C

6.D 7.B 8.B 9.C 10.B

二、填空题 (共20分)

1.(8 分 ) A. 62H , 1

B. 0F1H , 0

C. 0E2H , 1

D. 17H , 1

2.(每题2分,共6分)

BUF1

01

BUF2

-

BUF3

0

52

-

1

0

2

0

1

-

2

-

3

0

0

0

1

-

2

-

1

0

2

0

3

3. ASCII 标准信息

4. SI DI SP BP

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

1.A.CX 不能作为间接寻址寄存器

B. 加法指令不能完成存储单元之间的加法运算

C. 转移指令中,转向标号地址的属性说明错

D. 移位指令格式错,当移位次数大于 1 时,需用 CL 给出

E. 指令中应指出移位次数

2.A. 第一个语句中, X1 不能多次赋值,而 X2 可以多次赋值

B. 程序最后一行有错,应写成:

CRAY ENDP

3. 22 它表示 ARRAY1 到 ARRAY3 所占存储单元的字节数

4. A. ADD AX , BX

B. ADD DL ,[ BX ][ SI ]

C. ADD AH , OBEH

D. ADD [ SI+0200H ] ,AX

E. ADD [ 0860H ], 2EA0H

四、程序分析题 (每小题5分,共20分)

1. 比较两个 16 位有符号数,当 (CON1)>=(CON2) 时转 GREAT 处理,否则转 LESS 处理。

2. 判断 AL 中的内容,若 AL=0, 转 L 0 处理;

若 AL=1, 转 L 1 处理;

若 AL=2, 转 L 2 处理;

其它转结束 (STOP) 。

3. 求 2 ~ 20 之间偶数之和 AX=110( 或 6EH) 。

4. 把 DX 、 AX 中的双字左移四位。

五、程序设计 (每小题10分,共30分)

1. MOV AH , 00

MOV BX , AX

MOV CL , 02

SHL AX , CL

MOV DX , AX

MOV AX , BX

MOV CL , 03

SHL AX , CL

ADD AX , AX

ADD AX , DX

2. MOV CX , 50

LEA SI , ELEMS

LEA DI , ELEMS+99

REVERSE : MOV AL ,[ SI ]

XCHG AL ,[ DI ]

MOV [ SI ], AL

INC SI

INC DI

LOOP REVERSE

3.A. 十六进制数的 ASCII 码, 0 ~ 9 对应 30 ~ 39H(ASCII 码 ) , A ~ F 对应 41H ~ 45H(ASCII 码 ) ,此算法是:首先 ASCII 码与 3AH 比较,若小于 3AH ,就是 0 ~ 9 的 ASCII 码,将它减去 30H ,即得十六进制数 0 ~ 9 ;否则,要再减去 7( 如 41H-37H=0AH) ,即可得 A ~ F 的十六进制数。

B. 8AH

LEA SI , ASCBUF ; SI ← ASCBUF 偏移地址

LEA DI , HEXBUF ; DI ← HEXBUF 偏移地址

MOV CL , 04 ; CL ←移位次数 4

MOV AL ,[ SI ]; AL ←第一个 ASCII 码

CALL ASC_HEX ;调用 ASCII 码转换一位十六进制数子程序

SHL AL , CL ;转换后的十六进制一位数移入高位

MOV [ DI ], AL ; HEXBUF 单元←转换十六进制数

MOV AL ,[ SI+1 ]; AL ←第二个 ASCII 码

CALL ASC-HEX ;调用转换子程序

OR [ DI ], AL ;高位与低位组合成一字节十六进制数

HLT

ASC_HEX PROC NEAR ; 子程序名定义

CMP AL , 3AH ; ASCII 码与 3AH 比较

JC ASC1 ;小于,转 ASC1

SUB AL , 7 ;大于, ASCII 码减 7

ASC1 : SUB AL , 30H ; ASCII 码减 30H

RET ;子程序返回指令