芯海单片机除法运算

文章正文
发布时间:2024-09-11 18:14
;============================================
; filename: 除法运算.asm
; chip : CSU1182B
; author :胡琴
; date : 2013-02-21
;完整代码下载:
;============================================
include CSU1182B.inc
;============================================
; program start
;============================================
ORG 000h
GOTO CF01
ORG 015H
CF01:
MOVLW 0FFH ;
MOVWF 0B7H ;被除数高8位
MOVLW 0FFH ;
MOVWF 0B8H ;被除数低8位

MOVLW 00H ;
MOVWF 0B9H ;余数高位(被除数处理数据寄存器)
MOVLW 00H ;
MOVWF 0BAH ;余数低位(被除数处理数据寄存器)

MOVLW 00H ;
MOVWF 0BBH ;商低8位
MOVLW 00H ;
MOVWF 0BCH ;商高8位

MOVLW 03H ;
MOVWF 0BDH ;除数低8位
MOVLW 0E8H ;
MOVWF 0BEH ;除数高8位

MOVLW 16 ;
MOVWF 0BFH ;位数寄存器
CF02:
RLF 0B8H,1 ;带进位左移被除数
RLF 0B7H,1 ;
RLF 0BAH,1 ;带进位处理被除数数据
RLF 0B9H,1 ;

BCF STATUS,C ;清C
MOVFW 0BEH ;
SUBWF 0BAH,0 ;用处理出来的被除数减除数
MOVWF 0C1H ;

MOVFW 0BDH ;
SUBWFC 0B9H,0 ;用处理出来的被除数减除数
MOVWF 0C0H ;

BTFSS STATUS,C ;判断处理出来的被除数是否比除数大
GOTO CF03 ;

MOVFW 0C1H ;是则保存商到被除数处理数据寄存器
MOVWF 0BAH ;
MOVFW 0C0H ;
MOVWF 0B9H ;
CF03:
RLF 0BCH,1 ;将相减后的C左移进商寄存器
RLF 0BBH,1 ;
DECFSZ 0BFH,1 ;判断是否完成运算
GOTO CF02 ;

GOTO $
end
;============================================