CCS PCM Output 004 - Multiply two UInt8
From Pigmeo Development Wiki
C language
#include <16F716.h> unsigned int8 A; unsigned int8 B; unsigned int8 C; void main() { C=A*B; }
Assembly language
ROM used: 57 words (3%) Largest free fragment is 1991 RAM used: 8 (6%) at main() level 10 (8%) worst case Stack: 1 locations 0000 3000 00001 MOVLW 00 0001 008A 00002 MOVWF 0A 0002 2829 00003 GOTO 029 0003 0000 00004 NOP 0000 00005 .................... #include <16F716.h> 0000 00006 .................... //////// Standard Header file for the PIC16F716 device //////////////// 0000 00007 .................... #device PIC16F716 0000 00261 .................... #list 0000 00262 .................... 0000 00263 .................... 0000 00264 .................... unsigned int8 A; 0000 00265 .................... unsigned int8 B; 0000 00266 .................... unsigned int8 C; 0000 00267 .................... 0000 00268 .................... void main() { 0029 0184 00269 CLRF 04 002A 301F 00270 MOVLW 1F 002B 0583 00271 ANDWF 03,F 002C 1683 00272 BSF 03.5 002D 141F 00273 BSF 1F.0 002E 149F 00274 BSF 1F.1 002F 151F 00275 BSF 1F.2 0000 00276 .................... C=A*B; 0030 1283 00277 BCF 03.5 0031 0825 00278 MOVF 25,W ;load A onto stack 0032 00A8 00279 MOVWF 28 0033 0826 00280 MOVF 26,W ;load B onto stack 0034 00A9 00281 MOVWF 29 0035 2804 00282 GOTO 004 ;call multiplication macro 0036 0821 00283 MOVF 21,W ;copy _RETURN_ to C 0037 00A7 00284 MOVWF 27 0000 00285 .................... } 0038 0063 0286 SLEEP Configuration Fuses: Word 1: 3FF3 RC NOWDT PUT NOPROTECT BORV40 BROWNOUT SYMBOL TABLE LABEL VALUE CCP_1 00000015 CCP_1_LOW 00000015 CCP_1_HIGH 00000016 _RETURN_ 00000021 A 00000025 B 00000026 C 00000027 main 00000029
1: //////// Standard Header file for the PIC16F716 device //////////////// 2: #device PIC16F716 004 01A0 CLRF 0x20 005 01A1 CLRF 0x21 006 0828 MOVF 0x28, W 007 1003 BCF 0x3, 0 008 1829 BTFSC 0x29, 0 009 07A0 ADDWF 0x20, F 00A 0CA0 RRF 0x20, F 00B 0CA1 RRF 0x21, F 00C 18A9 BTFSC 0x29, 0x1 00D 07A0 ADDWF 0x20, F 00E 0CA0 RRF 0x20, F 00F 0CA1 RRF 0x21, F 010 1929 BTFSC 0x29, 0x2 011 07A0 ADDWF 0x20, F 012 0CA0 RRF 0x20, F 013 0CA1 RRF 0x21, F 014 19A9 BTFSC 0x29, 0x3 015 07A0 ADDWF 0x20, F 016 0CA0 RRF 0x20, F 017 0CA1 RRF 0x21, F 018 1A29 BTFSC 0x29, 0x4 019 07A0 ADDWF 0x20, F 01A 0CA0 RRF 0x20, F 01B 0CA1 RRF 0x21, F 01C 1AA9 BTFSC 0x29, 0x5 01D 07A0 ADDWF 0x20, F 01E 0CA0 RRF 0x20, F 01F 0CA1 RRF 0x21, F 020 1B29 BTFSC 0x29, 0x6 021 07A0 ADDWF 0x20, F 022 0CA0 RRF 0x20, F 023 0CA1 RRF 0x21, F 024 1BA9 BTFSC 0x29, 0x7 025 07A0 ADDWF 0x20, F 026 0CA0 RRF 0x20, F 027 0CA1 RRF 0x21, F 028 2836 GOTO 0x36 --- C:\...\sample.c 1: #include <16F716.h> 000 3000 MOVLW 0 001 008A MOVWF 0xa 002 2829 GOTO 0x29 003 0000 NOP 2: 3: unsigned int8 A; 4: unsigned int8 B; 5: unsigned int8 C; 6: 7: void main() { 029 0184 CLRF 0x4 02A 301F MOVLW 0x1f 02B 0583 ANDWF 0x3, F 02C 1683 BSF 0x3, 0x5 02D 141F BSF 0x1f, 0 02E 149F BSF 0x1f, 0x1 02F 151F BSF 0x1f, 0x2 8: C=A*B; 030 1283 BCF 0x3, 0x5 031 0825 MOVF 0x25, W 032 00A8 MOVWF 0x28 033 0826 MOVF 0x26, W 034 00A9 MOVWF 0x29 035 2804 GOTO 0x4 036 0821 MOVF 0x21, W 037 00A7 MOVWF 0x27 038 0063 SLEEP
Category: CCS PCM Outputs

