📄 minidx.asm
字号:
;***********************************************************
; Version 2.20.01
;***********************************************************
;****************************************************************
; Function: minidx
; Description: index of the minimum element of a vector
;
; Copyright Texas instruments Inc, 1998
;----------------------------------------------------------------
; Revision History:
; 1.00, R. Piedra, 8/31/98 - Original release.
;****************************************************************
.mmregs
; Far-mode adjustment
.if __far_mode
offset .set 1 ; far mode uses one extra location for ret addr ll
.else
offset .set 0
.endif
.asg (2), ret_addr ; stack description
; x in A
.asg (3 + offset), arg_n
; register usage
.asg ar0, ar_x
.asg ar2, ar_idx ; hold the min index
.asg ar3, ar_cnt ; index counter
;****************************************************************
.def _minidx
.text
_minidx
PSHM ST0 ; 1 cycle
PSHM ST1 ; 1 cycle
RSBX OVA ; 1 cycle
RSBX OVB ; 1 cycle
; Get arguments and set modes
; ---------------------------
ssbx sxm ; sign extension on (1)
ld *sp(arg_n),b ; b = n (1)
sub #1,b ; b = n-1 (2)
stlm b,brc ; brc = n-1 (1)
stlm a, ar_x ; pointer to x (1)
stm #0ffffh,ar_cnt ; clear index counter (2)
stm #0,ar_idx ; clear index register (2)
ld *ar_x+, b ; b = new element (1)
rptbd eloop-1 ; (2)
ld #7fffh,a ; a = most negative q15 value (2)
min a ; compare a with b and store (1)
; min value in a.
; C=1 if b(new element)<a
mar *ar_cnt+ ; (1)
ld *ar_x+, b ; b = new element (1)
xc 1, C ; (1)
mvmm ar_cnt,ar_idx ; (1)
eloop
ldm ar_idx,a ; return index pointer in A (1)
POPM ST1
POPM ST0
.if __far_mode
fret ; (6)
.else
ret ; (6)
.endif
;end of file. please do not remove. it is left here to ensure that no lines of code are removed by any editor
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -