C8051F360/1/2/3/4/5/6/7/8/9
11.7.2. Multiply Only Example
The example below implements the equation:
4660 × –292 = –1360720
MOV
MOV
MOV
MOV
MOV
NOP
NOP
MAC0CF, #01h
MAC0AH, #12h
MAC0AL, #34h
MAC0BH, #FEh
MAC0BL, #DCh
; Use integer numbers, and multiply only mode (add to zero)
; Load MAC0A register with 1234 hex = 4660 decimal
; Load MAC0B register with FEDC hex = -292 decimal
; This line initiates the Multiply operation
; After this instruction, the Accumulator should be equal to
; FFFFEB3CB0 hex = -1360720 decimal. The MAC0STA register should
; be 0x01, indicating a negative result.
NOP
; After this instruction, the Rounding register is updated
11.7.3. MAC0 Accumulator Shift Example
The example below shifts the MAC0 accumulator left one bit, and then right two bits:
MOV
MOV
MOV
MOV
MOV
MOV
NOP
NOP
MOV
MOV
NOP
NOP
MAC0OVR, #40h
MAC0ACC3, #88h ; 4088442211 Hex.
MAC0ACC2, #44h
MAC0ACC1, #22h
MAC0ACC0, #11h
; The next few instructions load the accumulator with the value
MAC0CF, #20h
; Initiate a Left-shift
; After this instruction, the accumulator should be 0x8110884422
; The rounding register is updated after this instruction
; Initiate a Right-shift
; Initiate a second Right-shift
; After this instruction, the accumulator should be 0xE044221108
; The rounding register is updated after this instruction
MAC0CF, #30h
MAC0CF, #30h
Rev. 1.0
121