?? div_s.asm
字號(hào):
***************************************************************************
** Description: div_s() in basicop2.c
**
** Inputs:
**
** AR1: Word16 var1
** AR2: Word16 var2
**
** Outputs:
**
** Return value:
**
** AL: Word16 var_out
**
** Attribute: Cycles: 125 Pm: 17
**
** Modified Registers: ACC, P
**
** Programmer: Liu Yang
**
** Complete time: 2003 3 11
*****************************************************************************
.global _div_s
_div_s:
CMP AR1,#0 ; if (var1 == 0)
SB B1,NEQ
MOV AL,#0 ; var_out = 0
LRETR
B1: MOV AL,@AR1 ; if (var1 == var2)
CMP AL,@AR2
SB B2,NEQ
MOV AL,#0x7FFF ; var_out = MAX_16
LRETR
B2: MOV ACC,@AR1 << #15 ; ACC = 0x8000 * var1
MOVL P,ACC ; Load P register with the numerator 0x8000 * var1
MOVZ AR2,@AR2 ; Move denominator var2 to XAR2
MOVB ACC,#0 ; Clear ACC to perform the division.
NOP
NOP
NOP
RPT #31
||SUBCUL ACC,@XAR2 ; Divide numerator var1 by the denominator var2
; the quotient var_out is in P and the remainder is in ACC
MOVL ACC,@P ; Load the quotient var_out into ACC
LRETR
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -