matrixmf.asm

来自「"DIGITAL SIGNAL PROCESSING WITH C AND TH」· 汇编 代码 · 共 28 行

ASM
28
字号
*MATRIXMF.ASM-ASSEMBLY FUNCTION CALLED FROM C PROGRAM
FP       .SET    AR3          ;FRAME POINTER IN AR3
         .GLOBAL _matrixmf    ;GLOBAL REF/DEF
_matrixmf                     ;FUNCTION IN ASSEMBLY
         PUSH    FP           ;SAVE OLD FRAME POINTER
         LDI     SP,FP        ;POINT TO START OF STACK
         PUSH    R4           ;R4 IS A DEDICATED C REGISTER
         PUSH    AR4          ;AR4 IS A DEDICATED C REGISTER
         LDI     *-FP(2),AR0  ;A ARRAY
         LDI     *-FP(3),AR1  ;B ARRAY
         LDI     *-FP(4),AR2  ;POINTER TO IO_OUTPUT
         LDI     3,R4         ;R4 IS LOOPI COUNTER
LOOPI    LDF     0,R0         ;INITIALIZE R0
         LDI     2,AR4        ;AR4 IS LOOPJ COUNTER
LOOPJ    MPYF    *AR0++,*AR1++,R1  ;A[I,J] * B[J] = R1
         ADDF    R1,R0        ;R0 ACCUMULATES RESULT
         DB      AR4,LOOPJ    ;DEC AR4 AND BRANCH TIL AR4<0
         FIX     R0           ;FLOAT TO INTEGER
         STI     R0,*AR2      ;OUTPUT RESULT TO IO_OUT
         LDI     *-FP(3),AR1  ;RELOAD START ADDR OF B ARRAY
         SUBI    1,R4         ;DECREMENT R4
         BNZ     LOOPI        ;BRANCH WHILE  R4 <> 0
         POP     AR4          ;RESTORE AR4
         POP     R4           ;RESTORE R4
         POP     FP           ;RESTORE FP
         RETS                 ;RETURN FROM SUBROUTINE

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?