************************************************************** * exp4c54_5.asm - An assembly program for C5000 CCS simulator * Rounding y = rnd(x1*x2) in Section 4.6.5 * ************************************************************** * Section allocation * .def x,y,init x .usect "vars",2 ; reserve 2 locations for x y .usect "vars",1 ; reserve 1 location for y yh .usect "vars",1 .sect "table" init .int 8520, 26214 ; value of x .text ; create code section .def start ; label of the beginning of code * Copy data to vector x using indirect addressing mode start: NOP copy: STM #x,AR1 ; AR0 pointing to x0 RPT #1 ; repeat next instruction 8 times MVPD init,*AR1+ ; copy 8 data to x scale: .mmregs ;RSBX OVM ; if OVM is not set, overflow will occur SSBX OVM ; OVM Is set STM #x, AR2 STM #(x+1), AR3 LD *AR3, T MPY *AR2, A ; Can try with MPYR and MPY ... STL A, *(y) STH A, *(yh) end NOP B end ; stop here