📄 bcd sub.lst
字号:
A51 MACRO ASSEMBLER BCD_SUB 07/22/2006 15:32:30 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN BCD Sub.OBJ
ASSEMBLER INVOKED BY: E:\Keil\C51\BIN\A51.EXE BCD Sub.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0000 1 ORG 00H
0000 753057 2 MOV 30H,#57H
0003 753182 3 MOV 31H,#82H
0006 753264 4 MOV 32H,#64H;设置被减数为578264
0009 753438 5 MOV 34H,#38H
000C 753565 6 MOV 35H,#65H
000F 753629 7 MOV 36H,#29H;设置减数为386529
0012 7F03 8 MOV R7,#03H
0014 7830 9 MOV R0,#30H
0016 7934 10 MOV R1,#34H
0018 120028 11 BCDB: LCALL NEG1 ;减数[R1]十进制取补
001B 120046 12 LCALL BCDA ;按多字节BCD码加法处理
001E B3 13 CPL C ;将补码加法的进位标志转换成借位标志
001F 92D5 14 MOV F0,C ;保护借位标志
0021 120028 15 LCALL NEG1 ;恢复减数[R1]的原始值
0024 A2D5 16 MOV C,F0 ;恢复借位标志
0026 80FE 17 SJMP $
0028 E8 18 NEG1: MOV A,R0 ;[R1]十进制取补子程序入口
0029 C9 19 XCH A,R1 ;交换指针
002A C8 20 XCH A,R0
002B 120032 21 LCALL NEG ;通过[R0]实现[R1]取补
002E E8 22 MOV A,R0
002F C9 23 XCH A,R1 ;换回指针
0030 C8 24 XCH A,R0
0031 22 25 RET
0032 EF 26 NEG: MOV A,R7 ;取(字节数减一)至R2中
0033 14 27 DEC A
0034 FA 28 MOV R2,A
0035 E8 29 MOV A,R0 ;保护指针
0036 FB 30 MOV R3,A
0037 C3 31 NEG0: CLR C
0038 7499 32 MOV A,#99H
003A 96 33 SUBB A,@R0 ;按字节十进制取补
003B F6 34 MOV @R0,A ;存回[R0]中
003C 08 35 INC R0 ;调整数据指针
003D DAF8 36 DJNZ R2,NEG0 ;处理完(R2)字节
003F 749A 37 MOV A,#9AH ;最低字节单独取补
0041 96 38 SUBB A,@R0
0042 F6 39 MOV @R0,A
0043 EB 40 MOV A,R3 ;恢复指针
0044 F8 41 MOV R0,A
0045 22 42 RET
0046 EF 43 BCDA: MOV A,R7 ;取字节数至R2中
0047 FA 44 MOV R2,A
0048 28 45 ADD A,R0 ;初始化数据指针
0049 F8 46 MOV R0,A
004A EA 47 MOV A,R2
004B 29 48 ADD A,R1
004C F9 49 MOV R1,A
004D C3 50 CLR C
004E 18 51 BCD1: DEC R0 ;调整数据指针
004F 19 52 DEC R1
0050 E6 53 MOV A,@R0
0051 37 54 ADDC A,@R1 ;按字节相加
0052 D4 55 DA A ;十进制调整
0053 F6 56 MOV @R0,A ;和存回[R0]中
0054 DAF8 57 DJNZ R2,BCD1 ;处理完所有字节
0056 22 58 RET
A51 MACRO ASSEMBLER BCD_SUB 07/22/2006 15:32:30 PAGE 2
59 END
A51 MACRO ASSEMBLER BCD_SUB 07/22/2006 15:32:30 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
BCD1 . . . . . . . C ADDR 004EH A
BCDA . . . . . . . C ADDR 0046H A
BCDB . . . . . . . C ADDR 0018H A
F0 . . . . . . . . B ADDR 00D0H.5 A
NEG. . . . . . . . C ADDR 0032H A
NEG0 . . . . . . . C ADDR 0037H A
NEG1 . . . . . . . C ADDR 0028H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -