MOV DPTR #0040H; MOV R0 #60H; MOV R2 #20; LOOP1: MOVX A @DPTR; MOVX @R0 A; INC R0; INC DPTR;
DJNZ R2 LOOP1; SJMP $ END
第四章
一、填空
1. 保护;恢复
2. 机器语言
3.
0500H;0505H;01H;0507H
3. 求连续存放在20H中的8个单字节无符号数之和,并求其平均值存放在R2中 解: ORG 0200H MOV R7,#07H MOV R3,#0 MOV A, 20H MOV R0, #21H CLR C
16
LOOP: ADD A, @R0
JNC NEXT INC R3
NEXT: INC R0 DJNZ R7, LOOP MOV 51H, R3 MOV 50H, A MOV R2,#03H LOOP1: CLR C
MOV A, 51H RRC A MOV 51H,A MOV A, 50H
RRC A MOV 50H, A DJNZ R2,LOOP1 MOV R2, 50H
4. 设内部RAM从21H单元开始存有一组带符号数,数据长度存于20H单元,要求把改组中正数,负数分别求和,并存放在寄存器R6和R7中。 MOV R0, #21H MOV R1, 20H
17
CLR C
MOV R7, #00H MOV R6, #00H LOOP: MOV A, @R0
JB ACC.7, STEP ADD A, R6 MOV R6, A INC R0
SJMP HERE
STEP: ADD A, R7 MOV R7, A INC R0 HERE: DJNZ R1, LOOP END
5. 设内部RAM从LIST单元开始存有一组符号数据,数据个数为30,变成找出其中的最大数,并存入BIG单元中。
解: LIST EQU 42H BIG EQU 41H ORG 0000H
MOV R0, #LIST
18
MOV BIG, @R0 MOV R2, #30 DEC R2 NEXT: INC R0
MOV A , @R0
CJNE A , BIG , COMP
COMP: JC CON
MOV BIG, A CON: DJNZ R2, NEXT RET
6.设内RAM从20H单元开始存有40H个无符号数,试编制程序将它们按从大到小的顺序排列,结果仍存放在原存贮区域内。 ORG 0000H
LJMP MAIN ORG 0100H MAIN: MOV R1,#20H
MOV R2,#39 CLR 10H
LOOP1: MOV A,@R1
19
INC R1
MOV 70H,@R1 CJNE A,70H,LOOP2 LOOP2: JNC LOOP3 MOV @R1,70H DEC R1
MOV @R1,A INC R1 SETB 10H LOOP3: DJNZ R2,LOOP1
JB 10H,MAIN SJMP END
7. 编写程序把累加器A中的二进制数变换成3位BCD码,并将百位,十位和个位BCD码分别放在内RAM50H,51H和52H单元。
MOV B , #10 DIV AB MOV 52H , B MOV B , #10 DIV AB MOV 51H , B
20