LOCAL Example
Directives highlighted in this example are:
Program Functional Description
This code demonstrates the utility of
localdirective, which declares that the specified data elements are to be considered in local context to the macro.Commented Code Listing
list p=16f877 ;Select the device.
#include <p16f877.inc> ;Include standard header file
;for the selected device.
incr equ 2 ;Assembler variable incr is set
;equal to 2.
add_incr macro ;Declaration of macro 'add_incr'.
local incr ;Local assembler variable 'incr'.
incr set 3 ;Local 'incr' is set to 3, in
;contrast to 'incr' value
;of 2 in main code.
clrw ;w register is set to zero
addlw incr ;w register is added to incr and
;result placed back
endm ;in w register.
RST CODE H'0' ;The code section named RST is
;placed at H'0'. The instruction
;'goto start' is placed in code
;section RST.
goto start ;Jumps to the location labelled
;'start'.
INTRT CODE H'4' ;The code section named INTRT is
;placed at H'4' The instruction
;'goto service_int' is placed in
;code section INTRT.
goto service_int ;Jumps to the location labelled
;'service_int'.
PGM CODE ;This is the begining of the code
;section named 'PGM'. It is a
;relocatable code section since
;no absolute address is given along
;with directive 'CODE'
start
clrw ;W register set to zero.
addlw incr ;W register is added with the
;value of incr which is now equal
;to 2.
add_incr ;W register is added with the
;value of incr which is now equal
;to 3 (value set locally in the
;macro add_incr).
clrw ;W register is set to zero again.
addlw incr ;incr is added to W register and
;result placed in W register.
;incr value is again 2, not
;affected by the value set in the
;macro.
goto $
service_int
retfie
end
|
Microchip Technology Inc. Microchip's Web Site Voice: (480) 792-7200 Fax: (480) 899-9210 Microchip's E-mail Address |
![]()
|

