i_div16.asm

来自「OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI」· 汇编 代码 · 共 49 行

ASM
49
字号
;******************************************************************************
;* 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 + =
减小字号Ctrl + -
显示快捷键?