⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a0803.lst

📁 电子时钟的单片机设计
💻 LST
📖 第 1 页 / 共 2 页
字号:

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 1





       MCS-51 Family Cross Assembler   A S E M - 5 1   V 1.2
       =====================================================



	Source File:	A0803.ASM
	Object File:	A0803.HEX
	List File:	A0803.LST



 Line  I  Addr  Code            Source

    1:
    2:		N      0000		org     0000h
    3:	  0000	02 00 30	        ljmp    main
    4:
    5:		N      0030	        org     0030h
    6:	  0030	75 90 FF	main:	mov	p1,#0ffh
    7:	  0033	75 2A 00		mov     2Ah,#00h	;2Ah设为标志位
    8:	  0036	75 20 01		mov     20h,#01h	;显示最高位缓冲
    9:	  0039	75 21 02	        mov     21h,#02h
   10:	  003C	75 22 03		mov     22h,#03h
   11:	  003F	75 23 04	        mov     23h,#04h
   12:	  0042	75 24 05	        mov     24h,#05h
   13:	  0045	75 25 06	        mov     25h,#06h
   14:	  0048	75 26 07		mov     26h,#07h
   15:	  004B	75 27 08	        mov     27h,#08h	;显示最地位缓冲
   16:	  004E	12 01 0E	        lcall   dirv
   17:				;-------------------------;
   18:				;         读键            ;
   19:				;-------------------------;
   20:	  0051			kl0:
   21:	  0051	12 01 0E	        lcall dirv
   22:
   23:	  0054	7B 00		        mov   r3,#00h
   24:	  0056	7A CC		        mov   r2,#0cch
   25:	  0058	12 00 83		lcall lh		;量化(转换成um)
   26:	  005B	78 32		        mov   r0,#32h		;被解压BCD码高位存32h
   27:	  005D	79 23		        mov   r1,#23h		;解压后BCD码高位存20h
   28:	  005F	7A 35		        mov   r2,#35h		;被解压BCD码最低位:r2-1
   29:	  0061	12 00 9F	        lcall bcdjy		;BCD码解压缩(5字节)
   30:
   31:	  0064	C0 24			push  24h
   32:	  0066	C0 1F		        push  1fh
   33:	  0068	C0 28			push  28h
   34:
   35:	  006A	7B 03			mov   r3,#03h
   36:	  006C	7A FF		        mov   r2,#0ffh
   37:	  006E	12 00 83		lcall lh		;量化(转换成um)
   38:	  0071	78 32		        mov   r0,#32h		;被解压BCD码高位存32h
   39:	  0073	79 1F		        mov   r1,#1fh		;解压后BCD码高位存20h
   40:	  0075	7A 35		        mov   r2,#35h		;被解压BCD码最低位:r2-1
   41:	  0077	12 00 9F	        lcall bcdjy		;BCD码解压缩(5字节)
   42:
   43:	  007A	D0 28			pop   28h

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 2



 Line  I  Addr  Code            Source

   44:	  007C	D0 1F			pop   1fh
   45:	  007E	D0 24			pop   24h
   46:
   47:	  0080	02 00 51	        ljmp  kl0                ;无键按下继续
   48:
   49:				;---------------------;
   50:				;     量化(转换成um) ;
   51:				;---------------------;
   52:	  0083	12 00 B0	lh:	lcall B16BCD		;二进制到BCD码(双字节)
   53:	  0086	8E 30		        mov   30h,r6		;被乘数十万、万位
   54:	  0088	8D 31			mov   31h,r5		;被乘数干位、百位
   55:	  008A	8C 32			mov   32h,r4		;被乘数十位、个位
   56:	  008C	75 40 00		mov   40h,#00h		;乘数百位、十位
   57:	  008F	75 41 24		mov   41h,#24h		;乘数个位、小数点后第一位(2.443um)
   58:	  0092	75 42 43	        mov   42h,#43h		;乘数小数点后第二位、小数点后第三位
   59:	  0095	78 30			mov   r0,#30h		;被乘数入口指针
   60:	  0097	79 40			mov   r1,#40h		;乘数入口指针
   61:	  0099	7B 03		        mov   r3,#03h		;参加乘法运算的压缩的BCD码位数
   62:	  009B	12 00 CC	        lcall CMUL		;无符号压缩BCD码乘法(CMUL)(积的小数位舍去送显示)
   63:	  009E	22			ret
   64:				;---------------------------------------;
   65:				;     @r0中BCD码解压缩到@r1(r2-r1字节);
   66:				;---------------------------------------;
   67:
   68:	  009F	E6		bcdjy:  mov   a,@r0		;分解一字节高位
   69:	  00A0	54 F0			anl   a,#0f0h
   70:	  00A2	C4		        swap  a
   71:	  00A3	F7			mov   @r1,a
   72:	  00A4	09		        inc   r1
   73:	  00A5	E6			mov   a,@r0		;分解一字节低位
   74:	  00A6	54 0F			anl   a,#0fh
   75:	  00A8	F7		        mov   @r1,a
   76:	  00A9	09		        inc   r1
   77:	  00AA	08		        inc   r0
   78:	  00AB	E8		        mov   a,r0
   79:	  00AC	6A		        xrl   a,r2               ;当前显示是否为"_"
   80:	  00AD	70 F0		        jnz   bcdjy             ;当前显示不为"_"跳
   81:	  00AF	22			ret
   82:				;-------------------------------;
   83:				;     二进制到BCD码(双字节)   ;
   84:				;-------------------------------;
   85:				;    (1)入口,R3R2,(16位无符号二进制整数).
   86:				;    (2)出口:R6(万位)、R5(干位、百位)、R4(十位、个位)存放5位BCD码。
   87:				;2.程序清单
   88:
   89:	  00B0			B16BCD:
   90:	  00B0	E4		        CLR  A      	;BCD码寄存器清零
   91:	  00B1	FC		        MOV  R4,A
   92:	  00B2	FD		        MOV  R5,A
   93:	  00B3	FE		        MOV  R6,A
   94:	  00B4	7F 10		        MOV  R7,#10H	;设循环指针
   95:	  00B6	C3		LP0:    CLR  C		;左移一位,移入c
   96:	  00B7	EA		        MOV  A,R2
   97:	  00B8	33		        RLC  A
   98:	  00B9	FA		        MOV  R2,A
   99:	  00BA	EB		        MOV  A,R3

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 3



 Line  I  Addr  Code            Source

  100:	  00BB	33		        RLC  A
  101:	  00BC	FB		        MOV  R3,A
  102:	  00BD	EC		        MOV  A,R4	;实现(…)X2十ai运算
  103:
  104:	  00BE	3C		        ADDC A,R4
  105:	  00BF	D4		        DA   A
  106:	  00C0	FC		        MOV  R4,A
  107:	  00C1	ED		        MOV  A,R5
  108:	  00C2	3D		        ADDC A,R5
  109:	  00C3	D4		        DA   A
  110:	  00C4	FD		        MOV  R5,A
  111:	  00C5	EE		        MOV  A,R6
  112:	  00C6	3E		        ADDC A,R6
  113:	  00C7	D4		        DA   A
  114:	  00C8	FE		        MOV  R6,A
  115:	  00C9	DF EB		        DJNZ R7,LP0
  116:	  00CB	22		        RET
  117:				;-------------------------------------;
  118:				;     无符号压缩BCD码乘法子程序(CMUL) ;
  119:				;-------------------------------------;
  120:
  121:					;功能:将(R0)指向的n字节压缩的BCD码乘以(R1)指向的n
  122:				  	;字节压缩的BCD码。
  123:					;入口:十进制被乘数存放在addrl—addr+n—1单元,高位在前。
  124:				   	;十进制乘数存放在addr2—acldr2+n—1单元,高位在前。
  125:				   	;(R0):addrl,(R1)=addr2,(R3)=n
  126:					;出口:积存放在addr-addrl+2n—1单元中,(R0)=addrl。
  127:					;使用寄存器:A,R0,R1,n2,R3,R6,R7及标志cy0
  128:					;例如:(R0)=20;(20)=01;(21)=25;(R1)=40;(40)=00;
  129:					;(41)=25;(R3)=02
  130:					;执行后得:(R0)=20;(20)=00;(21)=00;(22)=31; (23)=25
  131:					;程序清单:
  132:	  00CC	EB		CMUL:   MOV    A, R3
  133:	  00CD	FE		        MOV    R6, A
  134:	  00CE	2B		        ADD    A, R3
  135:	  00CF	FA		        MOV    R2, A
  136:	  00D0	EB		        MOV    A, R3
  137:	  00D1	28		        ADD    A, R0
  138:	  00D2	F8		        MOV    R0, A
  139:	  00D3	E9		        MOV    A, R1
  140:	  00D4	2B		        ADD    A, R3
  141:	  00D5	14		        DEC    A
  142:	  00D6	F9		        MOV    R1, A
  143:	  00D7	E4		        CLR    A
  144:	  00D8	F6		CMUL1:  MOV    @ R0, A
  145:	  00D9	08		        INC    R0
  146:	  00DA	DE FC		        DJNZ   R6, CMUL1
  147:	  00DC	EA		        MOV    A, R2
  148:	  00DD	FE		        MOV    R6, A
  149:	  00DE	18		        DEC    R0
  150:	  00DF	E4		CMUL2:  CLR    A
  151:	  00E0	C6		CMUL3:  XCH    A, @R0
  152:	  00E1	C4		        SWAP   A
  153:	  00E2	D6		        XCHD   A, @R0
  154:	  00E3	C6		        XCH    A, @R0
  155:	  00E4	18		        DEC    R0

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 4



 Line  I  Addr  Code            Source

  156:	  00E5	DA F9		        DJNZ   R2,CMUL3
  157:	  00E7	FF		        MOV    R7, A
  158:	  00E8	60 1C		        JZ     CMUL7
  159:	  00EA	EB		CMUIA:  MOV    A, R3
  160:	  00EB	FA		        MOV    R2, A
  161:	  00EC	2B		        ADD    A, R3
  162:	  00ED	28		        ADD    A, R0
  163:	  00EE	F8		        MOV    R0, A
  164:	  00EF	C3		        CLR    C
  165:	  00F0	E6		CMUL5:  MOV    A, @R0
  166:	  00F1	37		        ADDC   A, @R1
  167:	  00F2	D4		 	DA     A
  168:	  00F3	F6		        MOV    @R0,A
  169:	  00F4	18		        DEC    R0
  170:	  00F5	19		        DEC    R1
  171:	  00F6	DA F8		        DJNZ   R2, CMUL5
  172:	  00F8	EB		        MOV    A, R3
  173:	  00F9	FA		        MOV    R2, A
  174:	  00FA	E4		CMUL6:  CLR    A
  175:	  00FB	36		        ADDC   A, @R0
  176:	  00FC	D4		        DA     A
  177:	  00FD	F6		        MOV    @R0,A
  178:	  00FE	18		        DEC    R0
  179:	  00FF	DA F9		        DJNZ   R2, CMUL6
  180:	  0101	EB		        MOV    A, R3
  181:	  0102	29		        ADD    A, R1
  182:	  0103	F9		        MOV    R1, A
  183:	  0104	DF E4		        DJNZ   R7, CMUIA
  184:	  0106	EB		CMUL7:  MOV    A, R3
  185:	  0107	2B		        ADD    A, R3
  186:	  0108	FA		        MOV    R2, A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -