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