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