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

📄 2字节除以1字节;3字节除以2字节的【除法子程序】.dt

📁 2字节除以1字节;3字节除以2字节的【除法子程序】,台湾义隆单片机的代码。
💻 DT
字号:
/*多字节二进制除法
被除数为3个字节,在0x20、0x21、0x22单元中,0x22.7为最高位,0x20.0为最低位。
除数为2个字节,在0x30、0x31中。
算法:EM78单片机没有除法指令,而且本例中除法为多字节除法,可采用如下算法。
将被除数扩充一个字节0X23,0X23清0。被除数左移1位,0X23、0X22中数据减去
0X31、0X30中数据,够减则减且0X20.0置1,减出结果存入0X23、0X22;不够减
则0X23、0X22保持不变,0X20.0清0。然后被除数再左移1位,重复上述过程。
共循环16次,最后0X23、0X22中得相减余数,0X21、0X20中得商。注意,
若被除数左移后C标志为1,则不比较0X23、0X22与0X31、0X30数据大小关系而
直接相减。*/
byte	  ==	0x1c
trbuf	 ==	0x1d
r3		==	0x03
	z	 ==	2
	c	 ==	0
		org	0X00
		jmp	main
		org  0x0010
	
main:
		mov a,@0x01 ;除数赋值
		mov 0x2B,a
main0:
		mov a,@0x95 ;被除数赋值
		mov 0x23,a
		mov 0x22,a
		clr 0x21
		mov a,@0x10 ;循环次数为16
		mov byte,a  
		
		
		
		
;==============================================		
;子程序名称:双字节除以单字节除法
;被除数 :  0x22,0x23 ,最高为0x22,7;最高为0x23,0
;除数   :  0x2B
;商     :  0x22,0x23
;余数   :  0x21
;另外占用: 0x21 BYTE 
lop_sub:bc	r3,c   
		rlc	 0x23 ;被除数左移1位
		rlc 	0x22
		rlc 	0x21
		jbc	r3,c
		jmp	same
		mov	a,0x2b
		sub	a,0x21
		jbs	r3,c
		jmp	n_same
same:   mov	a,0x2b
		sub	0x21,a
   	 bs	0x23,0
n_same: djz byte    ;16次循环完成则结束
		jmp lop_sub ;未完成则继续
;==============================================

















		nop
self:   jmp main0










 
/*■■■■■■■■■■■■■下面的是3字节除以2字节,是可以用的。■■■■■■■■■■■■■■■■■■■■■■
;被除数为3个字节,在0x20、0x21、0x22单元中,0x22.7为最高位,0x20.0为最低位。;
;除数为2个字节,在0x30、0x31中。		
main:
		mov a,@0x55 ;被除数赋值
		mov 0x20,a
		mov 0x21,a
		mov 0x22,a
		mov a,@0x0 ;被除数扩充1字节并清0
		mov 0x23,a
		mov a,@0x12 ;除数赋值
		mov 0x30,a
		mov 0x31,a

		mov a,@0x10 ;循环次数为16
		mov 0x32,a
again:
		call rt_sub ;调移位除法子程
		djz 0x32 ;16次循环完成则结束
		jmp again ;未完成则继续

self: 
		jmp self

rt_sub:
		bc  0x03,0 ;c标志清0
		rlc 0x20 ;被除数左移1位
		rlc 0x21
		rlc 0x22
		rlc 0x23
		jbc 0x03,0
		jmp rt3 ;c标志为1则直接相减
		mov a,0x23 ;c标志为0则先比较大小
		mov 0x25,a
		mov a,0x22
		mov 0x24,a
		mov a,0x31 ;先比较高位
		sub 0x25,a
		jbc 0x03,2
		jmp rt1 ;高位相等跳rt1比较低位
		jmp rt2 ;高位不等跳rt2
rt1: 
		mov a,0x30 ;比较低位	
		sub 0x24,a
		jbc 0x03,2
		jmp rt3 ;低位也相等则跳rt3,相减,上1
rt2: 
		jbs 0x03,0
		ret ;减数大则返回,减数小则相减,上1
rt3: 
		bs 0x20,0 ;上1
		call sub_2b ;调2字节减法子程
		ret
	
sub_2b:
		mov a,0x31 ;高字节相减
		sub 0x23,a
		mov a,0x30 ;低字节相减
		sub 0x22,a
		jbc 0x03,2
		ret ;低字节相等,无借位,返回
		jbc 0x03,0
		ret ;无借位,返回
		dec 0x23 ;低字节相减有借位,高字节结果减1
		ret

*/	
	
		

⌨️ 快捷键说明

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