汇编语言程序设计模拟题 下载本文

数并送入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

7、在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。如果总和值超过AX寄存器的容量,则置AX寄存器内容不变。请在程序中的空格处填入适当指令使其完整。

LEA BX,TABLE

MOV CX,10

MOV SUM,AX

NEXT:(1)

ADC AH,0 JNC DON JC ENDO

(2)

DON:INC BX

(3)

ENDO:HLT

8、BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。 MOV CX,32H LEA SI,BEG MOV DI,SI (1)

DON:MOV AL,[SI] (2)

MOV [SI],AL (3) DEC DI LOOP DON

HLT

9、下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出)

33

FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _______ MOV CX, 8 XOR AX, AX R1:_______ ADD SI, 2 LOOP R1 MOV CL, 8 IDIV CL HLT

10、已知数据段DAT单元存放某一数N(-6≦N≦6)下面的程序段用查表法求数N的平方值,结果送SQR单元,请将程序填写完整。 TABLE DB 0,1,4,9,16,25 DAT DB N SQR DB ?

LEA BX, TABLE MOV AL, DAT _______ JGE NEXT _______

NEXT:XLAT HLT

11、设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。 TEST AX,8000H MOV PLW,BX JMP DONE

K1: DONE:

12、现有下列数据段: DATA SEGMENT

STR1 DB ?ABCDEFGHIJKL? COUNT EQU $-STR1 BUF DB COUNT DUP(0) DATA ENDS

下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。

MOV SI,OFFSET BUF-1 MOV DI,OFFSET BUF MOV CX,COUNT LOOP:MOVSB

34

LOOP LOP

13、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 ___________

14、下面程序段完成将存储单元A1中一个压缩型BCD码拆成二个非压缩型BCD码,高位BCD码存放在A3单元,低位BCD码存放在A2单元,再分别转换为对应的ASCⅡ码。请将程序补充完整。 MOV AL,A1 MOV CL,4 ___________ OR AL,30H MOV A3,AL MOV AL,A1 ___________ OR AL,30H MOV A2,AL

15、下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。

_____________________ AND AH,08H

_____________________ MOV AH,OFFH JMP NEXT

ZERO:MOV AH,0 NEXT:??

16、程序段的功能是依次产生0~9的10个ASCII码,并存入BUF1数据区,请在空白处填上指令(每一空白处仅填一条指令)。

BUF1 DB 10 DUP(?) ??

LEA BX, BUF1 MOV CX,10 XOR AL, AL

LOP: MOV AH,AL ADD AL,30H

35

____________ INC BX ____________ INC AL LOOP LOP

17、下面程序执行后,AL的内容为ARRAY数组中的最小数,请在空白处各填上一条指令。 ARRAY DB 3,5,- 3,- 2,4,5,- 8,6

?? MOV CX,7 MOV DI,0

MOV AL,ARRAY A1: INC DI

JLE A2

MOV AL,ARRAY [DI]

18、下面程序段的功能是把DA1数据区的数0-9转换为对应的ASCII码,并存入ASCI数据区。试完善本程序段。

DA1 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ASCI DB 10 DUP(?) CUNT = ASCI-DA1

??

LEA SI,DA1 LEA DI,ASCI

LOP1:MOV AL,[SI]

MOV [DI],AL INC SI INC DI

LOOP LOP1 六、编制程序题

1、设在数据段中有X,Y两变量(字节单元),试编写程序段计算(只写有关程序功能的指令):

Y= X 当X >=0 Y= 0 当X<0

2、A1单元开始定义了一长度为N的字符串,找出其中所有的小写字母并存放到以A2单元开始的存储区中。统计出小写字母的个数,存放到SL单元中。请编一完整的源程序。 3、已知DAT1字节单元有一个数据,试编制一程序段将该数据的低4位变为1010B,最高位(第7位)置1,其余3位不变,结果送DAT2字节单元。

4、在N1和N2两数据区中,分别有10H个带符号数。试编制一源程序,找出对应项中较小的数据,并将这些较小的数据存入N3数据区中(要求:对应项比较时必须用CMPS指令)。 DATA SEGMENT

36