Noriah bt Mustafa
POLITEKNIK SULTAN HAJI AHMAD SHAH
CHAPTER 2 – Part 2
EC501 EMBEDDED SYSTEM APPLICATIONS
Know PIC Assembly Language fundamental
PIC - "Peripheral Interface Controller”
How to use PIC microcontroller?
Software - programming
Machine language – machine code
High level language C, C++, Basic
Assembly language is programming language
use to write programs using instructions that are
the symbolic code called mnemonic.
Assembly language programs must to be
translated into machine code by a program
To program in assembly language, the
programmer must know all the registers of the
CPU and the size of each, as well as other
Assembling and linking process
First use a text editor to type program in assembly
language. In the case of PIC microcontrollers, we use the
The “asm” source file is fed into PIC assembler. The
assembler converts the instructions into machine code.
The third step is called linking. The link program takes
one or more object files and produces a hex file, a list
file, a map file, an intermediate abject file and a debug
After a successful link, the hex file is ready to be burned
into PIC’s program ROM and is downloaded into PIC
While instruction tell the CPU what to do, directives
(also called pseudo-instructions) give direction to the
Assembler directives are instruction used to tell the
CPU what to do.
Examples of assembler directive :
EQU – equate (use to define value or a fixed address)
ORG – origin (use to indicate the beginning of the address for
code or data)
END – indicate the end of the source (asm) file.
1. What is the purpose of pseudo-instructions?
2. _____________ are translated by the assembler into
machine code, whereas _____________are not.
3. True or false. Assembly language is a high- level
4. Pseudo- instruction are also called __________.
5. True or false. Assembler directives are not used by the
CPU itself. /they are simply guide to the assembler.
6. Which one the following is an assembler directive?
a) MOVLW 25H b) ADDLW 12 c) ORG 200H d) GOTO HERE
Data Format Representation
The following are data type and data format
using for PIC microcontrollers.
Data Type Data Format
PIC18F instruction set.
incorporate the standard set of 75 core instructions.
MOVLW Instruction moves 8-bit data into WREG
register. It has the following format:
MOVLW K ;move literal value K into WREG
Example: Load the WREG register with value 25H.
MOVLW 25H ;move value 25H into WREG (WREG = 25H)
Operation: k → W
The MOVWF instruction tells the CPU to move (in reality,
copy) the source register of WREG to a destination
register in file register (F).
Example: Load value 66H into Port B, C and D.
MOVLW 66H ;move the value 66H to WREG (WREG = 66H)
MOVWF PORTB ; move the value in WREG to PORTB (PORTB = 66H)
MOVWF PORTC ;PORTC = 66H
MOVWF PORTD ;PORTD = 66H
MOVWF Move W to f Operation: (W) → f
Write assembly instruction to make the I/O port as
a) RB4 and RB5 as input
b) PORTC as output
a) MOVLW B’00110000’
b) MOVLW B’00110000’
Instructions for performing 8-bit addition,
subtraction and multiplication operation.
These ADD instructions are design to perform 8-
The execution result of the ADD instruction will
affect all flag bits of the STATUS register.
Operation: (W) + k → W
Write a program that add the hexadecimal numbers 0x20
and 0x30. Store the sum in data register at 0x50.
• PIC18 microcontroller has two SUBTRACT
instructions. Subtract instruction will also affect all the
flag of STATUS register.
SUBLW Subtract W from Literal Operation: k – (W) → W
SUBWF Subtract W from f Operation: (f) – (W) → dest
Write a program to subtract 5 from 40H. Identify the
flag bit in status register.
The logical instruction allow user to perform AND, OR,
exclusive-OR and complementing on 8-bit numbers.
Write assembly statement for the operation 0XFF ||
MOVLW 0XFF ;move the value 0xFFin to WREG
IORLW 0X55 ;OR the value in WREG with value 0x55
The bit operations set, clear and toggle
test only a single bit. The bit oriented
instructions available to PIC family are
BCF, BSF, BTFSC, BTFSS and BTG.
BCF Bit Clear f
Operation: 0 → f<b>
BSF Bit Set f Operation: 1 → f<b>
Write an assembly statement to make RB4 as
input an RC7 as output using bit addressable.
BSF TRISB,4 ; set RB4 as input
BCF TRISC,7 ; make RC7 as output
PIC 18 families has four rotate instructions. Figure 2.
Illustrates this four rotate instructions.
RLCF Rotate Left f through Carry
RLNCF Rotate Left f (No Carry)
RRCF Rotate Right f through Carry
RRNCF Rotate Right f (No Carry)
One of the most widely used applications of the
rotate instructions. Data serialization is a process of
sending a byte of data, one bit at a time through a
single pin of microcontroller.
The characteristic of data serialization are:
Using the serial port.
Using a programming technique to transfer data
one bit at a time and control the sequence of data
and spaces between them.
Write a program to bring in a byte of data serially via
pin RC7 and save it in file register location 0x21. The byte
comes in with the LSB first.
RCNT EQU 0x20
MYREG EQU 0x21
AGAIN BTFSC PORTC 7
DECF RCNT F