MOV B,A
ISST2: INC R1
MOV A,@R1 CLR C SUBB A,B JC ISST3 MOV A,@R1 MOV R2,A MOV B,@R1
ISST3: DJNZ R6,ISST2
MOV A,B XCH A,@R1 MOV B,R2 MOV @R1,B MOV @R1,A DJNZ R7,ISST1 MOV R0,BLOCK
MOV @R0,#0 ;去掉最低分 MOV A,BLOCK ADD A,#9 MOV R0,A
MOV @R0,#0 ;去掉最高分
AD: MOV R0,BLOCK
INC RO MOV R1,#8 CLR A CLR C MOV B,#0
ADL: ADD A,@R0
DA A MOV R2,A ADDC A,#0 MOV B,A MOV A,R2 DJNZ R1,ADL MOV R5,0 MOV R4,B MOV R3,A MOV R2,#0 MOV R1,#8
R5R4R3/R2R1 MOV R1,#00H MOV R2,#0FH MOV R3,#04H MOV R4,#05H MOV R5,#06H LCALL _DIV
AJMP $
_DIV: ;{ CLR C MOV 30H,#0 MOV 31H,#0
MOV 32H,#0
_DIV_LOOP: CLR C MOV A,R3 SUBB A,R1 MOV R3,A
MOV A,R4
= R4R3
SUBB A,R2 MOV R4,A MOV A,R5 SUBB A,#0 MOV R5,A JC _DIV_END
_INC_SHANG: CLR C
MOV A,30H ADDC A,#1 MOV 30H,A MOV A,31H ADDC A,#0 MOV 31H,A MOV A,32H ADDC A,#0 MOV 32H,A LJMP _DIV_LOOP
_DIV_END: CLR C
MOV A,R1 ADDC A,R3 MOV A,R2 ADDC A,R4 MOV R3,30H MOV R4,31H END
7、编写将一个十六进制数转换为十进制数的子程序。 > 0000 78FE 2 0002 7930 3
MOV R0,#FEH MOV R1,#30H
MOV A,R0
0004 E8 4 HEXBCD:
0005 75F064 5 MOV B,#100
0008 84 6 0009 F7 7 000A 740A 8 000C C5F0 9 000E 84 10 000F 09 11 0010 F7 12 0011 09 13 0012 A7F0 14
DIV AB MOV @R1,A MOV A,#10 XCH A,B DIV AB INC R1 MOV @R1,A INC R1 MOV @R1,B 15
RET
8、在内部RAM的BLOCK开始的单元中有一无符号数据块,数据长度为LEN。试编程求其中最大的数并存入MAX中。 MCS51
1 2 3
ORG 0H
LEN EQU #10 ;数据块长度 MAX EQU #40H
; BLOCK首地址
0000 7830 4 0002 790A 5 0004 19 6 0005 C3 7
MOV R0,#30H MOV R1,LEN
DEC R1 ; 循环次数 CLR C
0006 E6 8 LOOP: MOV A,@R0 0007 08 9 0008 96 10 0009 4002 11 000B 8002 12
INC R0 SUBB A,@R0 JC EXCHANG SJMP NEXT
000D 86F0 13 EXCHANG: MOV B,@R0 000F C3 14 NEXT: CLR C 0010 D9F4 15
DJNZ R1,LOOP