51单片机汇编语言学习记录4

;********单片机汇编实现双字节除法*******
;********2019-6-3 DXZ*********


      
      DIVRA1  DATA    20H               ;除数(低八位)
	  DIVRA2  DATA    21H
	  DIVDB1  DATA    22H               ;被除数
	  DIVDB2  DATA    23H
	  QUOT2   DATA    24H               ;商
	  QUOT1   DATA    25H    
	  REMAIN2 DATA    26H               ;余数
	  REMAIN1 DATA    27H
		
      HIGHB   DATA    28H               ;移位子函数传递参数
      LOWB    DATA    29H	
		  
	  STOREC  BIT     7EH                  ;保存C的状态
	   

      ORG    0000H
      LJMP   MAIN
      ORG    0030H
		  
MAIN: MOV    DIVRA1, #32H            ;输入要计算的数
      MOV    DIVRA2, #1FH      
	  MOV    DIVDB1, #20H
	  MOV    DIVDB2, #6EH
	  
	  MOV    QUOT1,   #00H           ;余数,商清零	
	  MOV    QUOT2,   #00H
	  MOV    REMAIN1, #00H
	  MOV    REMAIN2, #00H
	  
	  MOV    R7, #16
	  
 STAT: MOV   A,REMAIN2    ;余数移位
       MOV   HIGHB, A
	   MOV   A, REMAIN1
	   MOV   LOWB, A
	   LCALL TWORL         ;移位子函数
	   MOV   A, HIGHB
       MOV   REMAIN2, A
	   MOV   A, LOWB
	   MOV   REMAIN1, A
	  
       MOV    C, DIVDB2.7   ;被除数移入余数
	   MOV    REMAIN1.0, C
	   MOV    HIGHB, A
	   MOV    A, DIVDB1
	   MOV    LOWB, A
	   LCALL  TWORL
	   MOV    A, HIGHB
	   MOV    DIVDB2, A
	   MOV    A, LOWB
	   MOV    DIVDB1, A
	  
	   MOV    A, REMAIN2   ;比较余数和除数的大小
	   CJNE   A, DIVRA2,SB  ;判断高位是否相等	  
	   MOV    A, REMAIN1    ;相等则比较低位
	   CJNE   A, DIVRA1,$+3
		  
   SB:MOV    STOREC, C     ;不相等执行,先保存C的状态
	  MOV    A, QUOT2
	  CLR    C
	  RLC    A
	  MOV    QUOT2, A
	  MOV    C, QUOT1.7
	  MOV    QUOT2.0,C
	  CLR    C
	  MOV    A, QUOT1
	  RLC    A
	  MOV    QUOT1, A
	  MOV    C, STOREC   ;还原C 
	  JC     ANTHOR      ;判断余数与除数大小
	  SETB   QUOT1.0
	  MOV    A, REMAIN1
	  SUBB   A,DIVRA1
	  MOV    REMAIN1, A
	  MOV    A, REMAIN2
	  SUBB   A, DIVRA2
	  MOV    REMAIN2, A
	  DJNZ   R7, STAT
	  
	  SJMP   $

ANTHOR: CLR   QUOT1.0     ;余数比除数小,跳转
		DEC    R7
		LJMP   STAT
       

TWORL: MOV   A, HIGHB                ;双字节移位子函数
       CLR   C
	   RLC   A
	   MOV   HIGHB, A
	   MOV   C, LOWB.7
	   MOV   HIGHB.0, C
	   MOV   A, LOWB
	   CLR   C
	   RLC   A
	   MOV   LOWB, A 
	   RET
	   
	  END
	  
	  
	  
posted @ 2023-03-30 10:24  NNV  阅读(21)  评论(0)    收藏  举报  来源