📄 asm3-3.lst
字号:
A51 MACRO ASSEMBLER ASM3_3 07/20/2005 09:59:52 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN Asm3-3.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE Asm3-3.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;==============================================================
2 ; 文件名称: Asm3-3.asm
3 ; 功能描述: 双字节除法. 使用'移位相减'的算法.
4 ; R7R6÷R5R4-->R7R6(商)......R3R2(余数)
5 ;==============================================================
6
0000 7 ORG 0000H
0000 020100 8 LJMP MAIN
0100 9 ORG 0100H
0100 EC 10 MAIN: MOV A, R4 ;执行程序前为R7R6(被除数), R5R4(除数)赋值
0101 7003 11 JNZ DDIV0 ;除数不为0, 转DDIV0
0103 ED 12 MOV A, R5
0104 6027 13 JZ ERROR ;除数为0, 转ERROR
0106 7A00 14 DDIV0: MOV R2, #00H ;余数寄存器清零
0108 7B00 15 MOV R3, #00H
010A 7910 16 MOV R1, #16 ;循环次数为16
010C C3 17 DDIV1: CLR C ;R3R2R7R6左移1位
010D EE 18 MOV A, R6
010E 33 19 RLC A
010F FE 20 MOV R6, A
0110 EF 21 MOV A, R7
0111 33 22 RLC A
0112 FF 23 MOV R7, A
0113 EA 24 MOV A, R2
0114 33 25 RLC A
0115 FA 26 MOV R2, A
0116 EB 27 MOV A, R3
0117 33 28 RLC A
0118 FB 29 MOV R3, A
0119 EA 30 MOV A, R2 ;部分余数减除数
011A 9C 31 SUBB A, R4 ;低8位相减
011B 4009 32 JC DDIV2 ;不够减, 转DDIV2
011D F8 33 MOV R0, A ;暂存相减结果
011E EB 34 MOV A, R3
011F 9D 35 SUBB A, R5 ;高8位相减
0120 4004 36 JC DDIV2 ;不够减, 转DDIV2
0122 0E 37 INC R6 ;够减, 则商为1
0123 FB 38 MOV R3, A ;相减结果送R3R2中
0124 E8 39 MOV A, R0
0125 FA 40 MOV R2, A
0126 D9E4 41 DDIV2: DJNZ R1, DDIV1 ;16位未除完则继续
0128 C2D5 42 CLR F0 ;除数合法标志
012A 020100 43 LJMP MAIN ;设置断点观察结果, 可继续下一轮运算
44
012D D2D5 45 ERROR: SETB F0 ;除数非法标志
012F 020100 46 LJMP MAIN ;设置断点观察结果, 可继续下一轮运算
47
48 END
A51 MACRO ASSEMBLER ASM3_3 07/20/2005 09:59:52 PAGE 2
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
DDIV0. . . . . . . C ADDR 0106H A
DDIV1. . . . . . . C ADDR 010CH A
DDIV2. . . . . . . C ADDR 0126H A
ERROR. . . . . . . C ADDR 012DH A
F0 . . . . . . . . B ADDR 00D0H.5 A
MAIN . . . . . . . C ADDR 0100H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -