📄 51.lst
字号:
189 ; (6)标号: MUL2 功能:双字节二进制无符号数平方
190
A51 MACRO ASSEMBLER 51 06/29/2007 15:34:54 PAGE 4
191 ;入口条件:待平方数在R2、R3中。
192 ;出口信息:结果在R2、R3、R4、R5中。
193 ;影响资源:PSW、A、B、R2~R5 堆栈需求: 2字节
194
0076 EB 195 MUL2: MOV A,R3 ;计算R3平方
0077 F5F0 196 MOV B,A
0079 A4 197 MUL AB
007A ACF0 198 MOV R4,B ;暂存部分积
007C FD 199 MOV R5,A
007D EA 200 MOV A,R2 ;计算R2平方
007E F5F0 201 MOV B,A
0080 A4 202 MUL AB
0081 CB 203 XCH A,R3 ;暂存部分积,并换出R2和R3
0082 C5F0 204 XCH A,B
0084 CA 205 XCH A,R2
0085 A4 206 MUL AB ;计算2×R2×R3
0086 C3 207 CLR C
0087 33 208 RLC A
0088 C5F0 209 XCH A,B
008A 33 210 RLC A
008B 5001 211 JNC MU20
008D 0A 212 INC R2 ;累加溢出量
008E 213 MU20:
008E C5F0 214 XCH A,B ;累加部分积
0090 2C 215 ADD A,R4
216
0091 FC 217 MOV R4,A
0092 EB 218 MOV A,R3
0093 35F0 219 ADDC A,B
0095 FB 220 MOV R3,A
0096 E4 221 CLR A
0097 3A 222 ADDC A,R2
0098 FA 223 MOV R2,A
0099 22 224 RET
225
226 ;(7) 标号:DIVD 功能:双字节二进制无符号数除法
227
228 ;入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。
229 ;出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
230 ;影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节
231
009A 232 DIVD:
009A C3 233 CLR C ;比较被除数和除数
009B EB 234 MOV A,R3
009C 9F 235 SUBB A,R7
009D EA 236 MOV A,R2
009E 9E 237 SUBB A,R6
009F 4003 238 JC DVD1
00A1 D2D2 239 SETB OV ;溢出
00A3 22 240 RET
00A4 241 DVD1:
00A4 75F010 242 MOV B,#10H ;计算双字节商
243
00A7 244 DVD2:
00A7 C3 245 CLR C ;部分商和余数同时左移一位
00A8 ED 246 MOV A,R5
00A9 33 247 RLC A
00AA FD 248 MOV R5,A
00AB EC 249 MOV A,R4
00AC 33 250 RLC A
00AD FC 251 MOV R4,A
00AE EB 252 MOV A,R3
00AF 33 253 RLC A
00B0 FB 254 MOV R3,A
00B1 CA 255 XCH A,R2
00B2 33 256 RLC A
A51 MACRO ASSEMBLER 51 06/29/2007 15:34:54 PAGE 5
00B3 CA 257 XCH A,R2
00B4 92D5 258 MOV F0,C ;保存溢出位
00B6 C3 259 CLR C
00B7 9F 260 SUBB A,R7 ;计算(R2R3-R6R7)
00B8 F9 261 MOV R1,A
00B9 EA 262 MOV A,R2
00BA 9E 263 SUBB A,R6
00BB B0D5 264 ANL C,/F0 ;结果判断
00BD 4004 265 JC DVD3
00BF FA 266 MOV R2,A ;够减,存放新的余数
00C0 E9 267 MOV A,R1
00C1 FB 268 MOV R3,A
00C2 0D 269 INC R5 ;商的低位置一
00C3 270 DVD3:
00C3 D5F0E1 271 DJNZ B,DVD2 ;计算完十六位商(R4R5)
00C6 EC 272 MOV A,R4 ;将商移到R2R3中
273
00C7 FA 274 MOV R2,A
00C8 ED 275 MOV A,R5
00C9 FB 276 MOV R3,A
00CA C2D2 277 CLR OV ;设立成功标志
00CC 22 278 RET
279
280 ; (8) 标号:D457 功能:双字节二进制无符号数除以单字节二进制数
281
282 ;入口条件:被除数在R4、R5中,除数在R7中。
283 ;出口信息:OV=0 时,单字节商在R3中,OV=1 时溢出。
284 ;影响资源:PSW、A、R3~R7 堆栈需求: 2字节
285
00CD C3 286 D457: CLR C
00CE EC 287 MOV A,R4
00CF 9F 288 SUBB A,R7
00D0 4003 289 JC DV50
00D2 D2D2 290 SETB OV ;商溢出
00D4 22 291 RET
00D5 292 DV50:
00D5 7E08 293 MOV R6,#8 ;求平均值(R4R5/R7-→R3)
00D7 294 DV51:
00D7 ED 295 MOV A,R5
00D8 33 296 RLC A
00D9 FD 297 MOV R5,A
00DA EC 298 MOV A,R4
299
00DB 33 300 RLC A
00DC FC 301 MOV R4,A
00DD 92D5 302 MOV F0,C
00DF C3 303 CLR C
00E0 9F 304 SUBB A,R7
00E1 B0D5 305 ANL C,/F0
00E3 4001 306 JC DV52
00E5 FC 307 MOV R4,A
00E6 308 DV52:
00E6 B3 309 CPL C
00E7 EB 310 MOV A,R3
00E8 33 311 RLC A
00E9 FB 312 MOV R3,A
00EA DEEB 313 DJNZ R6,DV51
00EC EC 314 MOV A,R4 ;四舍五入
00ED 2C 315 ADD A,R4
00EE 4003 316 JC DV53
00F0 9F 317 SUBB A,R7
00F1 4001 318 JC DV54
00F3 319 DV53:
00F3 0B 320 INC R3
00F4 321 DV54:
00F4 C2D2 322 CLR OV
A51 MACRO ASSEMBLER 51 06/29/2007 15:34:54 PAGE 6
00F6 22 323 RET
324
325 ;(9)标号: DV31 功能:三字节二进制无符号数除以单字节二进制数
326
327 ;入口条件:被除数在R3、R4、R5中,除数在R7中。
328 ;出口信息:OV=0 时,双字节商在R4、R5中,OV=1 时溢出。
329 ;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
330
00F7 331 DV31:
00F7 C3 332 CLR C
00F8 EB 333 MOV A,R3
00F9 9F 334 SUBB A,R7
00FA 4003 335 JC DV30
00FC D2D2 336 SETB OV ;商溢出
00FE 22 337 RET
00FF 338 DV30:
00FF 7A10 339 MOV R2,#10H ;求R3R4R5/R7-→R4R5
0101 340 DM23:
0101 C3 341 CLR C
0102 ED 342 MOV A,R5
0103 33 343 RLC A
0104 FD 344 MOV R5,A
0105 EC 345 MOV A,R4
0106 33 346 RLC A
0107 FC 347 MOV R4,A
0108 EB 348 MOV A,R3
0109 33 349 RLC A
010A FB 350 MOV R3,A
010B 92D5 351 MOV F0,C
010D C3 352 CLR C
010E 9F 353 SUBB A,R7
010F B0D5 354 ANL C,/F0
0111 4002 355 JC DM24
0113 FB 356 MOV R3,A
0114 0D 357 INC R5
0115 358 DM24:
0115 DAEA 359 DJNZ R2,DM23
0117 EB 360 MOV A,R3 ;四舍五入
0118 2B 361 ADD A,R3
0119 4003 362 JC DM25
011B 9F 363 SUBB A,R7
011C 4005 364 JC DM26
011E 365 DM25:
011E 0D 366 INC R5
011F ED 367 MOV A,R5
0120 7001 368 JNZ DM26
369
0122 0C 370 INC R4
0123 371 DM26:
0123 C2D2 372 CLR OV
0125 22 373 RET ;商在R4R5中
374
375
376 ; (10)标号:MULS 功能:双字节二进制有符号数乘法(补码)
377
378 ;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
379 ;出口信息:乘积在R2、R3、R4、R5中。
380 ;影响资源:PSW、A、B、R2~R7 堆栈需求:4字节
381
0126 382 MULS:
0126 7C00 383 MOV R4,#0 ;清零R4R5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -