第四章汇编语言程序设计题库

4、简述汇编语言的指令语句和伪指令语句的区别。 5、汇编语言的标号代表什么?有哪三种属性?

6、汇编语言中变量的用哪条伪指令进行定义?有哪三种属性? 7、已知有如下定义的数据段:

DATA SEGMENT ORG 0100H TABLE DW 0FF00H DATA ENDS

试分别分析以下两条指令的执行结果?并指出区别。 8、有如下定义的变量: DATA SEGMENT

ARRAY DW 1000H,2000H,3000H,4000H,5000H BUF DW ? DATA ENDS

请分别完成以下操作:

将ARRAY的偏移地址送BX;将ARRAY的第一字节把内容送AL;

9、已知某数据段中有 COUNT1 EQU 16H COUNT2 DW 16H

下面两条指令有何异同点: MOV AX,COUNT1 MOV BX,COUNT2

10、某程序设置的数据区如下: DATA SEGMENT

DB1 DB 12H,34H,0,56H

DW1 DW 78H,90H,0AB46H,1234H ADR1 DW DB1 ADR2 DW DW1 AAA DW $-DB1 BUF DB 5 DUP(0) DATA ENDS

列出该数据段内容在内存中的存放形式(要求用十六进制补码表示,按字节组织)。

11、请用DEBUG调试软件的汇编命令,在DEBUG 下编写利用DOS功能2显示字符b的一段小程序,要求汇编到2060:100H开始的内存中。 12、什么是标号?什么是变量?

13、为了保证用户执行完程序能正常返回DOS,可以采用什么方法? 14、设数据段定义如下: ORG 0020H D1 DW 1234H D2 DB 32 DUP(?) CONT EQU $-D1

问D1,D2,CONT的值各为多少?它表示什么含义?

15、读下列指令,回答问题:X和Y的含义有什么不同?两条指令的作用有什么不同? X EQU 20H Y DB 50H ...

MOV AL,X MOV AH,Y

16、对于给定的数据定义,变量R1和R2的值分别是多少? DA1 DB 1,2,3,’ABC’ DA2 DW 0

R1 EQU DA2-DA1 K1 DW ?

K2 DB 6 DUP(?) K3 DD ? R2 EQU $-K1

17、设有三个变量VAR1,VAR2,VAR3,其内容VAR1=3C46H,VAR2=F678H,VAR3=0059H。设计一个数据段,定义这三个变量并赋以初值。 18、说明下面两条指令的区别:

MOV AX,VAR1 与 MOV AX,OFFSET VAR1 19、说明下面两条指令的异同:

MOV AX,OFFSET VAR1 与 LEA AX,VAR1

20、用三种不同大方法实现将1000H存入DA1字单元(可以用指令性语句或伪指令语句)。 五、分析程序题(共6题)

1、阅读程序,回答问题

BLOCK DB 20H,1FH,08H,81H,0FFH,… RES DB ? …

START: LEA SI,BLOCK MOV CX,[SI] INC SI

MOV AL,[SI] LOP1: CMP AL,[SI+1] JNG NEXT

MOV AL,[SI+1] NEXT: INC SI LOOP LOP1 MOV RES,AL HLT

(1)该程序的功能是什么?

(2)该程序的循环次数是多少次?

2、下列程序的功能是什么? DATA SEGMENT A DB 12H,34H

B DB 12H,34H DATA ENDS CODE SEGMNET

ASSUME DS:DATA,CS:CODE START :

MOV AX,DATA MOV DS,AX MOV SI,0 MOV AL,A[SI] ADD AL,B[SI] MOV A[SI],AL INC SI

MOV AL,A[SI] ADC AL,B[SI] MOV A[SI],AL MOV AH,4CH INT 21H CODE ENDS

END START

答:将内存单元中定义的两个变量A=3412H和B=3412H 相加,结果人存放在A中。

3、在下面程序的括号中,分别填入指令(1)LOOP LP (2)LOOPNE LP (3) LOOPE LP,分析在这三种情况下程序各执行多少次?程序执行完后,AX,BX,CX,DX中的内容是什么? CODE SEGMENT

ASSUME CS:CODE ORH 100H BEGIN: MOV AX,01 MOV BX,02 MOV DX,03 MOV CX,04 LP: INC AX ADD BX,AX SHR DX,1 ( ) MOV AH,4CH INT 21H CODE ENDS

END BEGIN

4、下面程序的功能是什么?DAT1单元的值是什么?DAT2单元的值是什么?

DAT1 DB 1AH,78H DAT2 DB 3CH,6BH DATA3 DW ? DATA3 DW ? …

MOV SI,OFFSET DAT1 LEA DI,DAT2 MOV AX,[SI CMP AX,[DI] JC DONE MOV BX,[DI] MOV [DI],AX MOV [SI],BX NODE: HLT

5、说明下面程序段完成的功能?程序执行后AL=? VAR DB -18,32,0,5,-51,19,’$” ...

MOV BX,OFFSET VAR MOV AL,[BX] MOV CX,5 NEXT: INC BX ADD AL,[BX] LOOP NEXT

6、阅读下面程序,找出其中存在的语法错误并修改:

DATA SEGMENT

A: DB 35,01000111B,24H,’XYZ’ B: DB N DUP(0) N: EQU $-A

ENDS CODE SEGMENT

START: MOV AX,DATA MOV DSMAX LEA SI,A LEA DI,B MOV CX,N LOP MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP LOP MOV AH,4CH INT 21H ENDS

END START

修改后说明程序的功能? 六、编程题(共15题)

1、从BUF地址处起,存放有100个字节的字符串,设其中有一个以上的A字符,编程查找

出第一个A字符相对起始地址的距离,并将其存入LEN单元。

2、试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放在CHAR2开始的内存单元中。

3、以BUF1和BUF2开头的两个字符串,其长度均为LEN,试编程实现:将BUF1开头的字符串传送到BUF2开始的内存空间。

4、试编写一程序,编程计算(A*B+C-70)/A,其中A、B、C均为字节变量。

5、 试编写一程序,将一组以BUF为首地址的N个8位无符号二进制数按递增顺序排列。 6、试编写一程序,找出BUF数据区中带符号数的最大数和最小数。 7、若AL中的内容为2位压缩的BCD数,即6AH,试编程:

(1)将其拆开成非压缩的BCD码,高低位分别存入BH和BL中。

(2)将上述已求出的2位BCD码变换成对应的ASCII码,并存入CH和CL中。

8、从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其他字符,并给出相应的提示信息。

9、编写一个程序,将内存1000H开始的100个字节送往2000H开始的100个字节内存单元中。

10、编程实现由键盘输入一个字符的ASCII码,并将其显示在屏幕上。

11、编写一个程序实现从键盘输入一个数字0-9,并通过查表的方式将其平方值送至AL中保存。

12、编程实现计算AX寄存器中‘1’的个数,将结果存在BL中。

13、已知数据段4000H开始有16个字类型数据,查找其中0的个数,将结果存放在BL中。 14、编程计算1至50的和。

15、编程实现显示BX寄存器的最高位。

七、程序填空题(共6题)

1、下面程序是查找STRING中是否有“A”这个字符,如果有则转向YES去执行;没有则转向NO去执行。请将程序填充完整。

MOV CX,20 ;假设STRING的长度为20 MOV BX,-1 MOV AL,'A' NEXT:(1) BX

CMP AL,STRING[Bx] (2)NEXT JNZ (3) YES: .......

JMP (4) NO: ?? EXIT:RET

2、下列程序段是比较AX,BX,CX中带符号数的大小,将最大的数放在AX中。请将

程序填充完整。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4