📄 ssmul.asm
字号:
;********************SSMUL********************
;本程序实现单字节有符号数乘法。
;入口参数:被乘数在SOU中,乘数在RLT中。
;出口参数:结果在SOUH:SOU中。
;占用资源:W,STATUS,023H~026H,028H,029H,一重堆栈。
IFNDEF SSMUL1
#DEFINE SSMUL1
SSMUL MOVLW 8
MOVWF CNT ;计数初值
CLRF TEMP2
CLRF SOUH
MOVF RLT,W
XORWF SOU,W
MOVWF TEMP1 ;暂存相乘后的符号位
BTFSS SOU,7
GOTO PLUS5
COMF SOU,F ;负数取相反数
INCF SOU,F
PLUS5 BTFSS RLT,7
GOTO LOOP4
COMF RLT,F
INCF RLT,F ;负数取相反数
LOOP4 MOVF RLT,W
RRF SOU,F
BTFSC STATUS,C
ADDWF SOUH,F
RRF SOUH,F
RRF TEMP2,F
DECFSZ CNT,F
GOTO LOOP4
BTFSS TEMP1,7
GOTO DONE12 ;结果是正数则返回
COMF TEMP2,F
COMF SOUH,F
INCF TEMP2,F
BTFSC STATUS,Z
INCF SOUH,F ;结果为负则取绝对值
DONE12 MOVF TEMP2,W
MOVWF SOU
RETLW 0
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -