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

📄 shuzi.asm

📁 数字多用表程序,供大家学习参考,使用时根据自己的系统修改.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
         CLR EX1 
           RET       
 DUSHU:MOVX A,@DPTR
          MOV  @R0,A
          INC R0
          DJNZ R7,NT0 
          SETB  06H 
     NT0: 
           RETI
           
 ;;;将片内RAM30H-42H中的数据按从小到大的顺序排序
 



QUE:CLR 00H
    MOV R3,#18         ;;;;18个数据循环次数
    MOV R0,#30H
    MOV A,@R0
 L2:INC R0
    MOV R2,A
    SUBB A,@R0
    MOV A,R2
    JC L1
    SETB 00H
    XCH A,@R0
    DEC R0
    XCH A,@R0
    INC R0
 L1:MOV A,@R0
    DJNZ R3,L2
    JB 00H,QUE
    RET 
JIAO:MOV R0,#31H
     MOV  R7,#16
     MOV 45H,#00H
     MOV 46H,#00H    
KP1: MOV A,@R0
     ADD A,46H
     MOV 46H,A               
     MOV A,#00H
     ADDC A,45H
     MOV  45H,A
     INC  R0
     DJNZ  R7,KP1 
     RET 
PINJUN:                          ;LCALL  QUE
       LCALL  JIAO
       
       MOV R3,#00H
       MOV R4,45H
       MOV R5,46H
       MOV R7,#10H
       LCALL DV31               ;OV=0 时,双字节商在R4、R5中,OV=1 时溢出。
       
       RET 
       
    ;(21)标号:  BH2   功能:双字节BCD码整数转换成双字节十六进制整数

;入口条件:待转换的双字节BCD码整数在R2、R3中。
;出口信息:转换后的双字节十六进制整数仍在R2、R3中。
;影响资源:PSW、A、B、R2、R3、R4    堆栈需求:  4字节

BH2:	MOV	A,R3	;;将低字节转换成十六进制
	LCALL	BCDH
	MOV	R3,A
	MOV	A,R2	;;将高字节转换成十六进制
	LCALL	BCDH
	MOV	B,#100	;;扩大一百倍
	MUL	AB
	ADD	A,R3	;;和低字节按十六进制相加
	MOV	R3,A
	CLR	A
	ADDC	A,B
	MOV	R2,A
	RET
      
   ; (20)标号:BCDH    功能:单字节BCD码整数转换成单字节十六进制整数

;入口条件:待转换的单字节BCD码整数在累加器A中。
;出口信息:转换后的单字节十六进制整数仍在累加器A中。
;影响资源:PSW、A、B、R4    堆栈需求:  2字节

BCDH:	MOV	B,#10H	;;分离十位和个位
	DIV	AB
	MOV	R4,B	;;暂存个位
	MOV	B,#10	;;将十位转换成十六进制
	MUL	AB
	ADD	A,R4	;;按十六进制加上个位
	RET

           
            ; ; (9)  标号:  DV31    功能:三字节二进制无符号数除以单字节二进制数

;入口条件:被除数在R3、R4、R5中,除数在R7中。
;出口信息:OV=0 时,双字节商在R4、R5中,OV=1 时溢出。
;影响资源:PSW、A、B、R2~R7    堆栈需求:  2字节

DV31:	CLR	C
	MOV	A,R3
	SUBB	A,R7
	JC	DV30
	SETB	OV	             ;;商溢出
	RET
DV30:	MOV	R2,#10H	           ;;求R3R4R5/R7-→R4R5
DM23:	CLR	C
	MOV	A,R5
	RLC	A
	MOV	R5,A
	MOV	A,R4
	RLC	A
	MOV	R4,A
	MOV	A,R3
	RLC	A
	MOV	R3,A
	MOV	F0,C
	CLR	C
	SUBB	A,R7
	ANL	C,/F0
	JC	DM24
	MOV	R3,A
	INC	R5
DM24:	DJNZ	R2,DM23
	MOV	A,R3	                           ;;四舍五入
	ADD	A,R3
	JC	DM25
	SUBB	A,R7
	JC	DM26
DM25:	INC	R5
	MOV	A,R5
	JNZ	DM26
	INC	R4
DM26:	CLR	OV
	RET                                       ;;商在R4R5中 
	
	
    ;(5)  标号: MULD    功能:双字节二进制无符号数乘法

;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:乘积在R2、R3、R4、R5中。
;影响资源:PSW、A、B、R2~R7    堆栈需求:  2字节

MULD:	MOV	A,R3	;;计算R3乘R7
	MOV	B,R7
	MUL	AB
	MOV	R4,B	;;暂存部分积
	MOV	R5,A
	MOV	A,R3	;;计算R3乘R6
	MOV	B,R6
	MUL	AB
	ADD	A,R4	;;;累加部分积
	MOV	R4,A
	CLR	A
	ADDC	A,B
	MOV	R3,A
	MOV	A,R2	;;计算R2乘R7
	MOV	B,R7
	MUL	AB
	ADD	A,R4	;;累加部分积
	MOV	R4,A
	MOV	A,R3
	ADDC	A,B
	MOV	R3,A
	CLR	A
	RLC	A
	XCH	A,R2	;;计算R2乘R6
	MOV	B,R6
	MUL	AB
	ADD	A,R3	         ;;累加部分积
	MOV	R3,A
	MOV	A,R2
	ADDC	A,B
	MOV	R2,A
	RET
  ;  (7)  标号:  DIVD    功能:双字节二进制无符号数除法

;入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。
;出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
;影响资源:PSW、A、B、R1~R7    堆栈需求:  2字节

DIVD:	CLR	C	                     ;;比较被除数和除数
	MOV	A,R3	
	SUBB	A,R7
	MOV	A,R2
	SUBB	A,R6
	JC	DVD1
	SETB	OV      ;	;溢出
	RET
DVD1:	MOV	B,#10H	            ;;计算双字节商
DVD2:	CLR	C	               ;;部分商和余数同时左移一位
	MOV	A,R5
	RLC	A
	MOV	R5,A
	MOV	A,R4
	RLC	A
	MOV	R4,A
	MOV	A,R3
	RLC	A
	MOV	R3,A
	XCH	A,R2
	RLC	A
	XCH	A,R2
	MOV	F0,C	             ;;保存溢出位
	CLR	C
	SUBB	A,R7	          ;;计算(R2R3-R6R7)
	MOV	R1,A
	MOV	A,R2
	SUBB	A,R6
	ANL	C,/F0	              ;;结果判断
	JC	DVD3
	MOV	R2,A	          ;;够减,存放新的余数
	MOV	A,R1
	MOV	R3,A
	INC	R5	                   ;;商的低位置一
DVD3:	DJNZ	B,DVD2	;;计算完十六位商(R4R5)
	MOV	A,R4           ;	;将商移到R2R3中
	MOV	R2,A
	MOV	A,R5
	MOV	R3,A
	CLR	OV	  ;;设立成功标志
	RET

;;;入口条件:待转换的双字节十六进制整数在R6、R7中。
;;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。
;;影响资源:PSW、A、R2~R7    堆栈需求:  2字节

HB2:CLR	A	;;;BCD码初始化
	MOV	R3,A
	MOV	R4,A
	MOV	R5,A
	MOV	R2,#10H	;;;转换双字节十六进制整数
HB3:MOV	A,R7	;;;从高端移出待转换数的一位到CY中
	RLC	A
	MOV	R7,A
	MOV	A,R6
	RLC	A
	MOV	R6,A
	MOV	A,R5	;;;BCD码带进位自身相加,相当于乘2
	ADDC	A,R5
	DA	A	;;;十进制调整
	MOV	R5,A
	MOV	A,R4
	ADDC	A,R4
	DA	A
	MOV	R4,A
	MOV	A,R3
	ADDC	A,R3
	MOV	R3,A	;;;双字节十六进制数的万位数不超过6,不用调整
	DJNZ	R2,HB3    ;;	;处理完16bit
	RET


          

    
      
SEACH:MOV      DPTR,#A8279_1   
       MOVX     A,@DPTR
       ANL A,#07H
       JZ  RETUN4
       LJMP  KEY
       
RETUN4:RET 
 
   

   
  
 TRANS:MOV R0,#52H
       MOV R1,53H
       MOV R6,#03H
  LAST:MOV      A,@R0
       ANL      A,#0FH
       MOV      @R1,A
       MOV      A,@R0
       ANL      A,#0F0H
       SWAP     A
       INC  R1
       MOV      @R1,A
       INC  R1
       DEC R0
       DJNZ R6,LAST
       RET 
   
  
  

LED:MOV DPTR,#A8279_1
    MOV      A,#90H
    MOVX      @DPTR,A
    MOV      R0,#54H
    MOV  R7,#08H
    MOV  DPTR,#A8279_2
LOOP2:    MOV A,@R0
    MOVX     @DPTR,A
    INC      R0 
    DJNZ     R7,LOOP2
    RET 
                      
LED_1:MOV R0,53H
      MOV R7,#06H
      MOV DPTR,#TAB
LOOP1:MOV A,@R0
      MOVC A,@A+DPTR
      MOV @R0,A
      INC  R0
      DJNZ R7,LOOP1
      RET
  TAB:DB       3FH,06H,5BH,4FH,66H,6DH
      DB       7DH,07H,7FH,6FH,77H,7CH
      DB       39H,5EH,79H,71H         


;***********三角函数值表*************************
 TAB1:	   DB    99H,99H,98H,97H,95H,92H,89H,85H
	     	DB    80H,75H,69H,63H,56H,48H,40H,31H
	     	DB    21H,11H,00H,89H,77H,64H,51H,37H
	     	DB    23H,08H,92H,76H,59H,42H,24H,05H
	     	DB    86H,67H,46H,25H,03H,81H,58H,35H
	     	DB    11H,86H,61H,35H,09H,82H,54H,26H
	     	DB    98H,69H,39H,08H,78H,46H,14H,81H
	     	DB    48H,15H,80H,45H,10H,74H,38H,01H
	     	DB    63H,25H,86H,47H,07H,67H,26H,85H
	     	DB    43H,01H,58H,15H,71H,26H,81H,36H
	     	DB    90H,44H,97H,49H,02H,53H,04H,55H
	     	DB    05H,55H,04H,53H,01H,49H,96H,43H
	     	DB    90H,36H,81H,26H,71H,15H,59H,03H
	     	DB    45H,88H,30H,72H,13H,54H,94H,35H
	     	DB    74H,14H,52H,91H,29H,67H,04H,41H
	     	DB    78H,14H,50H,86H,21H,56H,90H,24H
	     	DB    58H,92H,25H,58H,90H,23H,55H,86H
	     	DB    18H,49H,79H,10H,40H,70H,99H,29H
	     	DB    58H,87H,15H,43H,71H,99H,27H,54H
	     	DB    81H,08H,35H,61H,87H,13H,39H,65H
	     	DB    90H,15H,40H,65H,90H,14H,39H,63H
	     	DB    87H,11H,34H,58H,81H,05H,28H,51H
	     	DB    74H,97H,19H,42H,64H,87H,09H,31H
	     	DB    53H,75H,97H,19H,41H,63H,85H,06H
	     	DB    28H,50H,71H,93H,14H,36H,57H,79H
	     	DB    00H
	     	DW    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
            DW    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  TAB2:     DB    99H,99H,99H,99H,99H,99H,99H,99H
	     	DB    99H,99H,99H,99H,99H,99H,99H,99H
	     	DB    99H,99H,99H,98H,98H,98H,98H,98H
	     	DB    98H,98H,97H,97H,97H,97H,97H,97H
	     	DB    96H,96H,96H,96H,96H,95H,95H,95H
	     	DB    95H,94H,94H,94H,94H,93H,93H,93H
	     	DB    92H,92H,92H,92H,91H,91H,91H,90H
	     	DB    90H,90H,89H,89H,89H,88H,88H,88H
	     	DB    87H,87H,86H,86H,86H,85H,85H,84H
	     	DB    84H,84H,83H,83H,82H,82H,81H,81H
	     	DB    80H,80H,79H,79H,79H,78H,78H,77H
	     	DB    77H,76H,76H,75H,75H,74H,73H,73H
	     	DB    72H,72H,71H,71H,70H,70H,69H,69H
	     	DB    68H,67H,67H,66H,66H,65H,64H,64H
	     	DB    63H,63H,62H,61H,61H,60H,60H,59H
	     	DB    58H,58H,57H,56H,56H,55H,54H,54H
	     	DB    53H,52H,52H,51H,50H,50H,49H,48H
	     	DB    48H,47H,46H,46H,45H,44H,43H,43H
	     	DB    42H,41H,41H,40H,39H,38H,38H,37H
	     	DB    36H,36H,35H,34H,33H,33H,32H,31H
	     	DB    30H,30H,29H,28H,27H,27H,26H,25H
	     	DB    24H,24H,23H,22H,21H,21H,20H,19H
	     	DB    18H,17H,17H,16H,15H,14H,14H,13H
	     	DB    12H,11H,10H,10H,09H,08H,07H,07H
	     	DB    06H,05H,04H,03H,03H,02H,01H,00H
	     	DB    00H
	     	DW    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	     	DW    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
;		**********THE PROGRAMME END**********
	END     



END 




 LED:MOV      DPTR,#A8279_1
       MOV      A,#90H
       MOVX      @DPTR,A
       MOV      R1,#54H
       MOV      R7,#06H
       MOV      DPTR,#A8279_2
  LOOP:MOV      A,@R1
       ADD      A,#05H
       MOVC     A,@A+PC
       MOVX     @DPTR,A
       INC      R1
       DJNZ     R7,LOOP
       RET
       DB       3FH,06H,5BH,4FH,66H,6DH
       DB       7DH,07H,7FH,6FH,77H,7CH
       DB       39H,5EH,79H,71H   

END        






    
     

⌨️ 快捷键说明

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