📄 距离计算.lst
字号:
A51 MACRO ASSEMBLER 綺离计算 05/21/2008 08:55:33 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN 距离计算.OBJ
ASSEMBLER INVOKED BY: E:\Program Files\KeiL\C51\BIN\A51.EXE 距离计算.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;显示缓冲单元在40H~43H
2 ;使用内存44H、45H、46H用于计算距离
3 ;20H用于标志
4
5 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
6 ;显示缓冲单元在44H~47H
7 ;使用内存50H、51H、52H用于计算距离
8 ;20H用于标志
9 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
10
11 ;**************************************************
12 ;* 距离计算程序(=计算值×17/1000cm) 近似 *
13 ;**************************************************
0000 14 ORG 0000H
0000 8000 15 JMP MAIN
16
0002 17 MAIN:
0002 755105 18 MOV 51H,#05H
0005 75509F 19 MOV 50H,#9FH
20
21
22
0008 C0E0 23 WORK:PUSH ACC
000A C0D0 24 PUSH PSW
000C C0F0 25 PUSH B
000E 75D018 26 MOV PSW, #18H ;RS1=1,RS0=1
0011 AB51 27 MOV R3, 51H
0013 AA50 28 MOV R2, 50H
0015 7900 29 MOV R1, #00D
0017 7811 30 MOV R0, #17D ;与17相乘
0019 12006C 31 LCALL MUL2BY2 ;R7R6R5R4<=R3R2*R1R0
001C 7B03 32 MOV R3, #03H
001E 7AE8 33 MOV R2, #0E8H
0020 12009B 34 LCALL DIV4BY2 ;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)
0023 12009B 35 LCALL DIV4BY2 ;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)
0026 8C44 36 MOV 44H, R4
0028 E544 37 MOV A, 44H
002A 7003 38 JNZ JJ0 ;A不等于0时,跳转
002C 75440A 39 MOV 44H, #0AH ;最高位为0,不点亮
40
002F E8 41 JJ0: MOV A, R0
0030 FC 42 MOV R4, A
0031 E9 43 MOV A, R1
0032 FD 44 MOV R5, A
0033 7B00 45 MOV R3, #00D
0035 7A64 46 MOV R2, #100D
0037 12009B 47 LCALL DIV4BY2
003A 8C45 48 MOV 45H, R4
003C E545 49 MOV A, 45H
003E 7009 50 JNZ JJ1
0040 E544 51 MOV A, 44H ;此高位为0,先看最高位是否为不亮
0042 940A 52 SUBB A, #0AH
0044 7003 53 JNZ JJ1
0046 75450A 54 MOV 45H, #0AH ;最高位不亮,次高位也不亮
55
0049 E8 56 JJ1: MOV A, R0
004A FC 57 MOV R4, A
004B E9 58 MOV A, R1
A51 MACRO ASSEMBLER 綺离计算 05/21/2008 08:55:33 PAGE 2
004C FD 59 MOV R5, A
004D 7B00 60 MOV R3, #00D
004F 7A0A 61 MOV R2, #10D
0051 12009B 62 LCALL DIV4BY2
0054 8C46 63 MOV 46H, R4
0056 E546 64 MOV A, 46H
0058 7009 65 JNZ JJ2
005A E545 66 MOV A, 45H ;次高位为0,先看次高位是否为不亮
005C 940A 67 SUBB A, #0AH
005E 7003 68 JNZ JJ2
0060 75460A 69 MOV 46H, #0AH ;次高位不亮,次高位也不亮
70
0063 8847 71 JJ2: MOV 47H, R0
0065 D0F0 72 POP B
0067 D0D0 73 POP PSW
0069 D0E0 74 POP ACC
75
006B 22 76 RET
77
78 ;************************************
79 ;* 两字节无符号数乘法程序 *
80 ;************************************
81 ;R7R6R5R4<=R3R2*R1R0
82
006C E4 83 MUL2BY2: CLR A
006D FF 84 MOV R7, A
006E FE 85 MOV R6, A
006F FD 86 MOV R5, A
0070 FC 87 MOV R4, A
0071 755210 88 MOV 52H, #10H
0074 C3 89 MULLOOP1:CLR C
0075 EC 90 MOV A, R4
0076 33 91 RLC A
0077 FC 92 MOV R4, A
0078 ED 93 MOV A, R5
0079 33 94 RLC A
007A FD 95 MOV R5, A
007B EE 96 MOV A, R6
007C 33 97 RLC A
007D FE 98 MOV R6, A
007E EF 99 MOV A, R7
007F 33 100 RLC A
0080 FF 101 MOV R7, A
0081 E8 102 MOV A, R0
0082 33 103 RLC A
0083 F8 104 MOV R0, A
0084 E9 105 MOV A, R1
0085 33 106 RLC A
0086 F9 107 MOV R1, A
0087 500E 108 JNC MULLOOP2
0089 EC 109 MOV A, R4
008A 2A 110 ADD A, R2
008B FC 111 MOV R4, A
008C ED 112 MOV A, R5
008D 3B 113 ADDC A, R3
008E FD 114 MOV R5, A
008F EE 115 MOV A, R6
0090 3400 116 ADDC A, #00H
0092 FE 117 MOV R6, A
0093 EF 118 MOV A, R7
0094 3400 119 ADDC A, #00H
0096 FF 120 MOV R7, A
0097 D552DA 121 MULLOOP2:DJNZ 52H, MULLOOP1
122
009A 22 123 RET
124
A51 MACRO ASSEMBLER 綺离计算 05/21/2008 08:55:33 PAGE 3
125
126 ;**************************************
127 ;* 四字节/两字节无符号数除法程序 *
128 ;**************************************
129 ;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)
130
009B 755220 131 DIV4BY2: MOV 52H, #20H
009E 7800 132 MOV R0, #00H
00A0 7900 133 MOV R1, #00H
134
00A2 EC 135 DIVLOOP1:MOV A, R4
00A3 33 136 RLC A
00A4 FC 137 MOV R4, A
00A5 ED 138 MOV A, R5
00A6 33 139 RLC A
00A7 FD 140 MOV R5, A
00A8 EE 141 MOV A, R6
00A9 33 142 RLC A
00AA FE 143 MOV R6, A
00AB EF 144 MOV A, R7
00AC 33 145 RLC A
00AD FF 146 MOV R7, A
00AE E8 147 MOV A, R0
00AF 33 148 RLC A
00B0 F8 149 MOV R0, A
00B1 E9 150 MOV A, R1
00B2 33 151 RLC A
00B3 F9 152 MOV R1, A
00B4 C3 153 CLR C
00B5 E8 154 MOV A, R0
00B6 9A 155 SUBB A, R2
00B7 F5F0 156 MOV B, A
00B9 E9 157 MOV A, R1
00BA 9B 158 SUBB A, R3
00BB 4003 159 JC DIVLOOP2
00BD A8F0 160 MOV R0, B
00BF F9 161 MOV R1, A
162
00C0 B3 163 DIVLOOP2:CPL C
00C1 D552DE 164 DJNZ 52H, DIVLOOP1
00C4 EC 165 MOV A, R4
00C5 33 166 RLC A
00C6 FC 167 MOV R4, A
00C7 ED 168 MOV A, R5
00C8 33 169 RLC A
00C9 FD 170 MOV R5, A
00CA EE 171 MOV A, R6
00CB 33 172 RLC A
00CC FE 173 MOV R6, A
00CD EF 174 MOV A, R7
00CE 33 175 RLC A
00CF FF 176 MOV R7, A
177
00D0 22 178 RET
179
180
181
182 END
A51 MACRO ASSEMBLER 綺离计算 05/21/2008 08:55:33 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
DIV4BY2. . . . . . C ADDR 009BH A
DIVLOOP1 . . . . . C ADDR 00A2H A
DIVLOOP2 . . . . . C ADDR 00C0H A
JJ0. . . . . . . . C ADDR 002FH A
JJ1. . . . . . . . C ADDR 0049H A
JJ2. . . . . . . . C ADDR 0063H A
MAIN . . . . . . . C ADDR 0002H A
MUL2BY2. . . . . . C ADDR 006CH A
MULLOOP1 . . . . . C ADDR 0074H A
MULLOOP2 . . . . . C ADDR 0097H A
PSW. . . . . . . . D ADDR 00D0H A
WORK . . . . . . . C ADDR 0008H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -