Segments and
Pseudo Operations
Program Development
1
Format of the source code
Each line of code is divided into fields:
Label Field
Operation Field
Operand Field
Comment Field
2
Code and Data Segments
We can organize the code into blocks called
segments
Segments specify sections of code, data, and
reserved areas of memory
Segments are useful for modularized program
development
3
Segments
4
Pseudo-Instructions (1)
Pseudo-instructions are directives for the Assembler
We have already seen some of them
ORG - defines the absolute address of a segment
ORG $9000 ;set origin of text segment to $9000
EQU - defines an equivalent symbol for a value
ONE EQU $01
PORTB EQU $1004
END – delimits the end of the assembly
RMB – stands for “reserve memory byte(s)”. It allocates a
specified number of bytes.
varname RMB 2
DS – stands for “define space”. It is the same as RMB
varname DS 2
5
Pseudo Instructions (2)
FCB – stands for “form constant byte(s)”. It allocates byte(s) of
storage with initialized values
addrfirstval FCB $01,250,@373,%111001101
FCB $23
DB – stands for define byte(s). It is the same as FCB
FDB – stands for “form double byte(s)”. It is a 16-bit version of
FCB
FDB $0001,$1234,$FFFA
DW – stands for “define word”. It is the same as FDB
FCC – stands for “form constant character(s)” and it is used to
allocate and initialize memory for storage of a string
addrfirstchar FCC “some string”
FCC “Alarm 5A high!”
6
Example
* program to drive a stepper motor
size equ 4
PORTB equ $1004
org $9000
main
ldaa #size
ldx #steps
step
ldab 0,x
inx
stab PORTB
deca
bne step
bra main
steps
fcb 5,6,10,9
;PB3-PB0 to stepper
;address at which $05 is located
; step the motor
;output sequence
org $FFFE
fdb main
end
7
Pseudo Instructions (3)
FILL – sets a number of bytes to a specified value
FILL $FF 16
ZMB – stands for “Zero Memory Bytes” and initialize a
specified number of memory bytes to zero
ZMB 16
BSZ – stands for “Block Store Zeros and it the same
as ZMB
BSZ 16
8
Assembly two-pass Process
For an assembler to understand labels and
symbols, it must work through the source code
twice . It follows as a two-pass process
After the first step the assembler build a “symbol
table” that gives the address of each label and
symbol.
9
Assembler options and preprocessor
directives
Assembler options and preprocessor directives are
assembler specific
Assembler options must occur at the beginning of the
source code, and start in column one of the code with
a $ sign.
The preprocessor directives follows the assembler
options and begin with a %. The preprocessor
directives tell the assembler to do something before
beginning the assembly process
%INCLUDE “d:\include\iolib.h”
10