📄 i_div16.asm
字号:
;******************************************************************************
;* I_DIV16.ASM - 16 BIT STATE - V1.16 *
;* Copyright (c) 1995-1997 Texas Instruments Incorporated *
;******************************************************************************
;****************************************************************************
;* I$DIV/I$MOD - DIVIDE TWO SIGNED 32 BIT NUMBERS.
;*
;****************************************************************************
;*
;* o DIVIDEND IS IN r0
;* o DIVISOR IS IN r1
;*
;* o QUOTIENT IS PLACED IN r1
;* o REMAINDER IS PLACED IN r0
;*
;* o DIVIDE BY ZERO RETURNS ZERO
;* o SIGN OF REMAINDER IS THE SIGN OF THE DIVIDEND
;*
;****************************************************************************
.state16
.global I$DIV
.global I$MOD
.global I_DIV
.global I_MOD
dvs .set r2 ; WORK COPY OF THE DIVISOR (SHIFTED)
quo .set r3 ; WORK COPY OF THE QUOTIENT
negs .set r4 ; SAVED COPY OF THE SIGNS
tmp .set r5
I$DIV:
I$MOD:
PUSH {lr}
NOP
BX pc ; Change to 32-bit state
NOP
.align
.state32
BL I_MOD
ADD lr, pc, #0x1
BX lr
.state16
POP {pc}
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -