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

📄 4228.asm

📁 单片机开发资料光盘-双龙-686M.zip
💻 ASM
字号:
div32s:                  ; 32位/32位带符号除法
        clr r27          ;清除余数
	clr r26
	clr r25
	clr r24
	clr r30          ;清符号位
	cpi r19,$7f      ;判被除数的正负
	brcc	qubus1   ;为负,被除数取补
d32s_1:
        cpi r23,$7f      ;判除数的正负
	brcc	qubus2   ;为负,除数取补
d32s_2:
        ldi r28,33       ;初始化循环计数器
d32s_3: 
        cp r24,r20       ;余数与除数相比较
	cpc r25,r21
	cpc r26,r22
	cpc r27,r23
	brcs	d32s_4   ;进位位为 1,即后者大,跳至d32s_4
	sub r24,r20      ;余数-除数
	sbc r25,r21
	sbc r26,r22
	sbc r27,r23
	sec              ;置进位位
	rjmp	d32s_5
d32s_4: 
        clc              ;清进位位
d32s_5:
        rol r16          ;左移结果(被除数)
	rol r17
	rol r18
	rol r19
	rol r24          ;左移余数(被除数移到除数)
	rol r25
	rol r26
	rol r27
	dec r28          ; 计数器减 1
	brne	d32s_3   ;不为 0 ,跳至d32s_3
	ror r27          ;右移余数
	ror r26
	ror r25
	ror r24
	cpi r30,$01      ;判符号位
	breq 	qubus3   ;为 1 ,代表负,结果取补
d32s_6: 
        ret              ;返回
qubus1:
        inc r30          ;符号位加 1
	com r16          ;取反加 1 (取补)
	com r17
	com r18
	com r19
	subi r16,$ff
	sbci r17,$ff
	sbci r18,$ff
	sbci r19,$ff
	rjmp	d32s_1
qubus2:
        inc r30          ;符号位加 1
	com r20          ;取反加 1 (取补)
	com r21
	com r22
	com r23
	subi r20,$ff
	sbci r21,$ff
	sbci r22,$ff
	sbci r23,$ff
	rjmp	d32s_2
qubus3:  
        com r16          ;取反加 1 (取补)
	com r17
	com r18
	com r19
	subi r16,$ff
	sbci r17,$ff
	sbci r18,$ff
	sbci r19,$ff
	rjmp	d32s_6

⌨️ 快捷键说明

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