• 沒有找到結果。

一、选择题

1.在汇编语言程序设计中,伪指令 OFFSET 表达的含义是回送变量或标号的( )。

A.段地址值 B.偏移地址值

C.物理地址值 D.操作数

2.DEC BYTE PTR[BX]中的操作数的数据类型是( )。

A.字 B.双字 C.字节 D.四字

3.将数据 5618H 存放在存储单元中的伪指令是( )。

A.DATA1 DW 1856H B.DATA1 DB 18H,56H

C.DATA1 EQU 5618H D.DATA1 DB 18H,00H,56H,00H 4.要在程序中定义缓冲区 BUF,保留 9 个字节存储空间的语句是( )。

A.BUF DW 9 B.BUF DB 9

C.BUF DB 9 DUP(?) D.BUF DW 9 DUP(?)

5.有定义 NUM DB '12345' ,汇编后,NUM 占有( )字节存储单元。

A.1 B.5 C.6 D.7

6.BUF DW 10H DUP(3 DUP(2,10H),3,5)汇编后,为变量 BUF 分配的存储单元字节 数是( )。

A.80H B.100H C.124 D.192

7.若定义 DAT DW 'A',则 DAT 和 DAT+1 两个相邻的内存单元中存放的数据是( )。

A.00H41H B.41H00H C.XXH41H

D.41HXXH(选项 C、D 中的 XX 表示任意数据)

8.已定义数据段:

DATA SEGMENT ORG 0213H

DA1 DB 15H,34H,55H ADR DW DA1 DATA ENDS

能使AX中数据为偶数的语句是( )。

A.MOV AX,WORD PTR DA1 B.MOV AL,DA1+2

C.MOV AL,BYTE PTR ADR+1 D.MOV AX,WORD PTR DA1+2 9.下列指令序列执行后完成的运算,正确的算术表达式应是( )。

MOV AL,BYTE PTR X SHL AL,1

DEC AL

MOV BYTE PTR Y,AL

A.Y=X*2+1 B.X=Y*2+1 C.X=Y*2-1 D.Y=X*2-1

10.对于下列程序段:

AGAIN: MOV AL,[SI]

MOV ES:[DI],AL INC SI

INC DI LOOP AGAIN

也可用( )指令完成同样的功能。

A.REP MOVSB B.REP LODSB C.REP STOSB D.REPE SCASB 二、简答题

1.写出完成下列要求的变量定义语句:

(1)在变量 var1 中保存 3 个字变量:1234H、-10、80/6。

(2)在变量 var2 中保存字符串'BYTE'。

(3)在缓冲区 buf1 中留出 10 个字节的存储空间。

(4)在变量 var3 中保存缓冲区 buf1 的长度。

(5)在缓冲区 buf2 中,保存 2 个字节的 22H,再保存 3 个字节的 33,并将这一过程 重复5 次。

(6)在变量 pointer 中保存变量 var1 和缓冲区 buf1 的偏移地址。

2.已知一数据段中的数据如下,画出该数据段数据存储分配图:

DATA SEGMENT

BUF DB 'AB',0DH,0AH

M DB 2 DUP(1),2 DUP(2,'B') VAR4 DW 'AB', 'CD'

ORG 100H

TABLE DB 10,3*4,10H ADDRESS DD TABLE DATA ENDS

3.试分析下列程序段的功能:

CMP AL, 'A' JC OTHER CMP AL, 'Z'+1 JNC OTHER JMP LETTER

… OTHER:

… LETTER:

4.分析下列子程序 FUNC1,并回答相应的问题。

FUNC1 PROC NEAR XOR CX,CX MOV DX,01 MOV CL,X JCXZ A20

INC DX INC DX DEC CX JCXZ A20 A10: MOV AX,02

SHL AX,CL ADD DX,AX LOOP A10 A20: MOV Y,DX RET FUNC1 ENDP

若该子程序的入口参数为X(0≤X≤10),其输出参数为 Y,则:

(1)该子程序的功能是 Y=f(X)=________。

(2)若 X=0,则 Y=________;若 X=3,则 Y=________;若 X=5,则 Y=________。

5.x86 系列 CPU 有哪几种工作模式,Win32 汇编程序工作于其中哪种模式?该模式有哪 些特点?

6.Win32 汇编程序设计具有哪些不同于 DOS 汇编的特点?

7.一个完整的 Win32 汇编程序包括哪些部分,这些部分的作用是什么?

8.动态链接库是否可以直接执行?它和静态链接库有什么区别?

9.请查阅相关资料,进一步深入了解 Win32 编程中的消息处理机制,并简要叙述之。

10.C/C++和汇编混合编程时应考虑哪些原则?在进行混合编程时有哪些不利因素应注意 避免?

11.函数调用规范主要规定哪些方面的内容?常用的函数调用规范有哪些?请查阅相关资 料,简要叙述它们之间的主要区别。

三、程序填空题

1.以 BUF 为首址的字节单元中,存放了 COUNT 个无符号数,以下程序段是找出其中最 大的数并送入MAX 中。

BUF DB 5,6,7,58H,62,45H,127

COUNT EQU $-BUF ;COUNT 等于变量 BUF 的字节数 MAX DB ?

MOV BX,OFFSET BUF MOV CX,COUNT-1

MOV AL,[BX]

LOP1: INC BX

________

JAE NEXT

MOV AL,[BX]

NEXT: DEC CX ________

MOV MAX,AL

2.DA1 数据区中有 50 个字节数据,下面程序段将每个数据的低四位变反,高四位不变,

并依次存入DA2 数据区中。请将程序补充完整。

MOV CX,50 LEA SI,DA1 LEA DI,DA2 K1: MOV AL,[SI]

________

MOV [DI],AL

INC SI

INC DI

DEC CX

________

3.在数据段 ADDR1 地址处有 200 个字节数据,要传送到数据段地址 ADDR2 处。

MOV AX, SEG ADDR1 MOV DS, AX

MOV ES, ________

MOV SI, ________

MOV DI, OFFSET ADDR2 MOV ________ , 200 CLD

REP ________

4.下列子程序统计字符串的长度,入口参数 DI 为字符串首地址,字符串以 0DH 结束;

返回参数CX 中为统计得到的字符串长度。

STRLEN PROC

PUSH AX

PUSH DI

MOV CX,0

REPEAT: MOV AL,[DI]

________

JE EXIT

________

INC DI

________

EXIT: POP DI

________

RET STRLEN ENDP 四、编程题

1.试编程求解表达式 S=(23000-(X*Y+Z))/Z,其中 X=600,Y=25,Z=-2000。

2.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

3.编写一个程序段,其功能为:将两个四字节无符号数 X、Y 相加,结果存入 RESULT 中。

4.根据用户输入的数字(0~6),显示星期(0:SUNDAY、1:MONDAY、2:TUESDAY、

3:WEDNESDAY、4:THURSDAY、5:FRIDAY、6:SATURDAY),试用地址表法编写程序。

5.统计 AX 寄存器中为 1 位数的,并将统计结果放在 CL 寄存器中。

6.编写程序,比较两个字符串 MSG1 和 MSG2 所含字符是否完全相同,若相同则显示

“EQUAL”,若不同则显示“DIFFERENT”。

7.定义一条宏指令,实现将指定数据段的段地址传送到段寄存器 ES 或 DS 的功能。

8.从键盘上读入一个正整数 N(0≤N≤65535),存入 AX,再转换成十六进制数并在屏 幕上显示出来。要求分别定义两个子过程D_B_I 和 B_H_O,前者用来实现以十进制形式输入 数据,后者用来实现以十六进制形式显示数据,然后在主程序中调用这两个子过程。

9.存储器数据段从 BUF 开始存放一个字数组,数组中第一个字中存放该数组的长度 N,

编制一个程序使此数组中的数据按照从小到大的次序排列。

10.在单独的模块中编写一远程过程:SEARCH,完成在一个字节数组中查找给定的字节,

如找到则将其在数组中的下标(即数组中的偏移量)返回给变量VAR1;如没有找到则给变量 VAR1 返回–1。变量 VAR1 和数组均为外部标识符(可在主程序模块中定义)。请同时写出调 用此过程的主程序模块。

相關文件