The 8085 CPU communicates with other units using a 16-bit address bus, 8-bit data bus, and control bus. It has 16 address lines that can access up to 64K memory locations. The data bus is bidirectional and has 8 lines. The 8085 also has internal registers like the accumulator, flag bits, program counter, and stack pointer to perform operations and sequence instruction execution. It uses different addressing modes like immediate, register, and memory to specify the source and destination operands.
1. 1
The 8085 Bus Structure
The 8-bit 8085 CPU (or MPU â Micro Processing Unit) communicates with the other
units using a 16-bit address bus, an 8-bit data bus and a control bus.
2. 2
The 8085 Bus Structure
Address Bus
ď§ Consists of 16 address lines: A0 â A15
ď§ Operates in unidirectional mode: The address bits are always sent from
the MPU to peripheral devices, not reverse.
ď§ 16 address lines are capable of addressing a
total of 216 = 65,536 (64k) memory locations.
ď§ Address locations: 0000 (hex) â FFFF (hex)
3. 3
The 8085 Bus Structure
Data Bus
ď§ Consists of 8 data lines: D0 â D7
ď§ Operates in bidirectional mode: The data bits are sent from the
MPU to peripheral devices, as well as from the peripheral devices to
the MPU.
ď§ Data range: 00 (hex) â FF (hex)
Control Bus
ď§ Consists of various lines carrying the control signals such as read /
write enable, flag bits.
4. The 8085: CPU Internal Structure
The internal architecture of the 8085 CPU is
capable of performing the following operations:
ď§ Store 8-bit data (Registers, Accumulator)
ď§ Perform arithmetic and logic operations (ALU)
ď§ Test for conditions (IF / THEN)
ď§ Sequence the execution of instructions
ď§ Store temporary data in RAM during execution
4
5. The 8085: CPU Internal Structure
5
Simplified block diagram
7. The 8085: CPU Internal Structure
Registers
ď§ Six general purpose 8-bit registers: B, C, D, E, H, L
ď§ They can also be combined as register pairs to
perform 16-bit operations: BC, DE, HL
ď§ Registers are programmable (data load, move, etc.)
Accumulator
ď§ Single 8-bit register that is part of the ALU !
ď§ Used for arithmetic / logic operations â the result is always stored in
the accumulator.
7
8. The 8085: CPU Internal Structure
Flag Bits
ď§ Indicate the result of condition tests.
ď§ Carry, Zero, Sign, Parity, etc.
ď§ Conditional operations (IF / THEN) are executed based on the condition of
these flag bits.
Program Counter (PC)
ď§ Contains the memory address (16 bits) of the instruction that will be
executed in the next step.
Stack Pointer (SP)
8
12. RReeggiisstteerrss OOrrggaanniissaattiioonn
⢠16-Bit General Purpose Registers
â can access all 16-bits at once
â can access just high (H) byte, or low (L)
byte
only the General
Purpose registers
allow access as
8-bit High/Low
sub-registers
12 12
15. RReeggiisstteerrss OOrrggaanniissaattiioonn ((ccoonnttiinnuueedd))
16-Bit Control/Status Registers
- IP Instruction Pointer (Program Counter
for execution control)
- FLAGS 16-bit register
⢠It is not a 16-bit value but it is a
collection of 9 bit-flags (six are unused)
⢠Flag is set when it is equal to 1
⢠Flag is clear when it is equal to 0
15 15
17. AArrcchhiitteeccttuurree ((ccoonnttiinnuueedd))
⢠The 8086 has two parts, the Bus Interface Unit
(BIU) and the Execution Unit (EU).
⢠The BIU fetches instructions, reads and writes
data, and computes the 20-bit address
⢠The EU decodes and executes the instructions
using the 16-bit ALU.
17 17
18. AArrcchhiitteeccttuurree ((ccoonnttiinnuueedd))
⢠The BIU contains the following registers
- IP - the Instruction Pointer
- CS - the Code Segment Register
- DS - the Data Segment Register
- SS - the Stack Segment Register
- ES - the Extra Segment Register
18 18
19. AArrcchhiitteeccttuurree ((ccoonnttiinnuueedd))
⢠The BIU fetches instructions using the CS and
IP, written CS:IP, to construct the 20-bit
address. Data is fetched using a segment
register (usually the DS) and an effective
address (EA) computed by the EU depending
on the addressing mode
19 19
20. AArrcchhiitteeccttuurree ((ccoonnttiinnuueedd))
⢠The EU contains the following 16-bit general
purpose registers:
Âť AX - the Accumulator
Âť BX - the Base Register
Âť CX - the Count Register
Âť DX - the Data Register
Âť SP - the Stack Pointer defaults to
Âť BP - the Base Pointer / Stack segment
Âť SI - the Source Index Register
Âť DI - the Destination Register
20 20
22. AArrcchhiitteeccttuurree ((ccoonnttiinnuueedd))
ES
CS
SS
DS
IP
AH
BH
CH
DH
AL
BL
CL
DL
SP
BP
SI
DI
FLAGS
AX
BX
CX
DX
22 22
Extra Segment
Code Segment
Stack Segment
Data Segment
Instruction Pointer
Accumulator
Base Register
Count Register
Data Register
Stack Pointer
Base Pointer
Source Index Register
Destination Index Register
BIU registers
(20 bit adder)
EU registers
16 bit arithmetic
23. GGeenneerraall ppuurrppoossee RReeggiisstteerrss
⢠AX
â Accumulator Register
â Preferred register to use in arithmetic, logic and
data transfer instructions because it generates
the shortest Machine Language Code
â Must be used in multiplication and division
operations
â Must also be used in I/O operations
23 23
24. GGeenneerraall ppuurrppoossee RReeggiisstteerrss ((ccoonnttii....))
⢠BX
â Base Register
â Also serves as an address register
â Used in array operations
â Used in Table Lookup operations (XLAT )
24 24
25. GGeenneerraall ppuurrppoossee RReeggiisstteerrss ((ccoonnttii....))
⢠CX
â Count register
â Used as a loop counter
â Used in shift and rotate operations
⢠DX
â Data register
â Used in multiplication and division
â Also used in I/O operations
25 25
26. PPooiinntteerr && IInnddeexx RReeggiisstteerrss
⢠Contain the offset addresses of memory
locations
⢠Can also be used in arithmetic and other
operations
⢠SP: Stack pointer
â Used with SS to access the stack segment
26 26
27. Pointer && IInnddeexx RReeggiisstteerrss ((ccoonnttiinnuueedd))
⢠BP: Base Pointer
â Primarily used to access data on the stack
â Can be used to access data in other segments
⢠SI: Source Index register
â is required for some string operations
â When string operations are performed, the SI
register points to memory locations in the data
segment which is addressed by the DS register.
Thus, SI is associated with the DS in string
operations.
27 27
28. Pointer && IInnddeexx RReeggiisstteerrss ((ccoonnttiinnuueedd))
⢠DI: Destination Index register
â is also required for some string operations.
â When string operations are performed, the DI
register points to memory locations in the data
segment which is addressed by the ES register.
Thus, DI is associated with the ES in string
operations.
⢠The SI and the DI registers may also be used to
access data stored in arrays
28 28
29. SSeeggmmeenntt RReeggiisstteerrss
⢠Are Address registers
⢠Store the memory addresses of instructions
and data
⢠Memory Organization
â Each byte in memory has a 20 bit address starting
with 0 to 220-1 or 1 meg of addressable memory
29 29
30. SSeeggmmeenntt RReeggiisstteerrss ((ccoonnttiinnuueedd))
â Addresses are expressed as 5 hex digits from
00000 - FFFFF
â Problem: But 20 bit addresses are TOO BIG to fit
in 16 bit registers!
â Solution: Memory Segment
⢠Block of 64K (65,536) consecutive memory bytes
⢠A segment number is a 16 bit number
30 30
31. SSeeggmmeenntt RReeggiisstteerrss ((ccoonnttiinnuueedd))
⢠Segment numbers range from 0000 to FFFF
⢠Within a segment, a particular memory
location is specified with an offset
⢠An offset also ranges from 0000 to FFFF
31 31
35. FFllaagg RReeggiisstteerr
35 35
Carry flag
Parity flag
Auxiliary flag
Zero
Overflow
Direction
Interrupt enable
Trap
Sign
6 are status flags
3 are control flag
37. What is the Addressing Mode ?
add dest, source ; dest +sourceâdest
add ax,bx ; ax +bxâax
The addressing mode means where and how the
CPU gets the operands when the instruction is
executed.
37
39. 39
AAddddrreessssiinngg mmooddeess ffoorr SSeeqquueennttiiaall
CCoonnttrrooll
TTrraannssffeerr IInnssttrruuccttiioonnss
Three types of 8086 addressing modes
⢠Immediate Addressing Mode
---CPU gets the operand from the instruction
⢠Register Addressing Mode
---CPU gets the operand from one of the internal registers
⢠Memory Addressing Mode
---CPU gets the operand from the memory location(s)
42. 3. Memory Addressing Mode
⢠Specify an offset address (effective address) using expressions of the form (different parts of
expression are optional):
â [ Base Register + Index Register+ Displacement]
⢠1) Base Register---BX, BP
⢠2) Index Register---SI, DI
⢠3) Displacement ---constant value
⢠Example: 1) add ax,[20h] 2) add ax,[bx]
42
3) add ax,[bx+20h] 4) add ax, [bx+si]
5) add ax, [bx+si+20h]
43. 43
3. Memory Addressing Mode
â´ Direct Addressing Mode
Exp: MOV AL, [1064H]
Machine code:A06410H
⢠The offset address of the operand is provided in the
instruction directly;
⢠The physical address can be calculated using the content
of DS and the offset :
PA = (DS)*10H+Offset
45. 3. Memory Addressing Mode
âľ Register Indirect Addressing Mode
⢠The address of memory location is in a register
(SI,DI,or BX only)
⢠The physical address is calculated using the content of DS
and the register(SI,DI,BX)
45
PA = (DS)*10H+(SI)/(DI)/(BX)
47. âś Register Relative Addressing
47
EA=
(BX)
(BP)
(DI)
(SI)
+ Displacement
For physical address calculation:
DS is used for BX,DI,SI;
SS is used for BP
PA=(DS)*10H+(BX)/(DI)/(SI)+Disp
OR
PA=(SS)*10H+(BP)+Disp
49. ⡠Based Indexed Addressing
49
EA=
(BX)
(BP) +
(DI)
(SI)
⢠Base register(bx or bp) determines which segment(data or stack) the operand is
stored;
⢠if using BX, the operand is defaultly located in Data segment,then:
PA=(DS)*10H+(BX)+(DI)/(SI)
⢠if using BP, the operand is defaultly located in stack segment,then:
PA=(SS)*10H+(BP)+(DI)/(SI)
51. ⸠Based Indexed Relative Addressing
51
EA=
(BX)
(BP) +
(DI)
(SI) + Displacement
if using BX, the operand is defaultly located in Data segment,then:
PA=(DS)*10H+(BX)+(DI)/(SI)+disp
if using BP, the operand is defaultly located in stack segment,then:
PA=(SS)*10H+(BP)+(DI)/(SI)+disp
53. Summary on the 8086 memory addressing modes
1. Direct Addressing [disp] disp DS CS ES SS
2. Register [BX]/[SI] /[DI] Content of the R DS CS ES SS
Indirect Addressing
53
operand offset address Default Overridden
ďźeffective address ďź Segment Register Segment
Register
3. Register [SI/DI/BX/BP+disp] (SI)/(DI)/(BX)/(BP)+disp DS CS ES SS
Relative Addressing
4. Based Indexed [BX+SI/DI] (BX)+disp DS CS ES SS
Addressing [BP+SI/DI] (BP)+disp SS CS ES DS
5. Based Indexed [BX+SI/DI+disp] (BX)+(SI)/(DI)+disp DS CS ES SS
Relative Addressing [BP+SI/DI+disp] (BP)+(SI)/(DI)+disp SS CS ES DS
62. 62
Programming in 8088/8086
Three levels of languages available to program a microprocessor:
Machine Languages, Assembly Languages, and High-level
Languages.
Machine Language
ďA sequence of binary codes for the instruction to be executed by
microcomputers.
ďLong binary bits can be simplified by using Hexadecimal format
ďIt is difficult to program and error prone.
ďDifferent uP (micro-processor) uses different machine codes.
63. Programming in 8088/8086 (cont.)
Assembly Language
To simplify the programming, assembly language (instead of machine language) is
used.
Assembly language uses 2- to 4-letter mnemonics to represent each instruction
type. E.g. âSubtractionâ is represented by SUB
Four fields in assembly language statement:
Label, OP Code, Operand and Comment fields.
Programs will be âtranslatedâ into machine language, by Assembler, so it can be
loaded into memory for execution.
High-Level Language
High level languages, like C, Basic or Pascal, can also be used to program
microcomputers.
An interpreter or a compiler is used to âtranslateâ high level language statement to
machine code. High level language is easier to read by human and is more suitable
when the programs involves complex data structures.
63
64. 64
Assemblers
Programming the instructions directly in machine code is possible but
every machine codes depending on how the data is stored.
The process of converting the microprocessor instructions to the
binary machine code can be performed automatically by a computer
program, called an ASSEMBLER. Popular assemblers include IBM
macro Assembler, Microsoft Macro Assembler (MASM) and Borland
Turbo Assembler(installed on IE NT Network).
Most assemblers accept an input text file containing lines with a
rigorously defined syntax split into four fields.
Not all fields need to be present in a line. Eg. A line can be just a
comment line if it starts with semicolon;
65. 65
Source Codes, Object Codes and Linking
ďSource code is the text written by the programmer
in assembly language
(or any other programming language)
ď Object code is the binary code obtained after
running the assembler (
Or compiler if the source is in a high level language).
ď Modules of a program may be written separately
and linked together to
form a executable program using a linker.
ď The linker joins the object code of the different
modules into one large
object file which is executable. Most assemblers on
IBM PCs produce
object files which must be linked ( even if there are
no separate modules).
67. 67
Fields in Assembler
<label> <Mnemonic or directive> <operands> <;comment>
Comment field contains internal program documentation to improve
human readability -use meaningful comments
Operand field contains data or address used by the instruction.
The following conventions typically apply:
68. 68
Fields in Assembler (Contd.,)
<label> <Mnemonic or directive> <operands> <;comment>
Mnemonic/directive field contains the abbreviation for the processor
instruction (eg. MOV) or an assembler DIRECTIVE. Adirective produces no
object code but is used to control how the assembler operates.
Examples of directives include:
END -indicate the end of a program listing,
FRED LABEL NEAR - define âFREDâ as a near label
TOM EQU 1000H -define âTOMâ as the number 1000H
Label field contains a label which is assigned a value equal to the address
where the label appears.
69. 69
Why Program in Assembler?
ďAssembler language instruction has a one-to-one correspondence with the
binary machine code: the programmer controls precisely all the operations
performed by the processor (a high level language relies on a compiler or
interpreter to generate the instructions).
ď Assembler can generate faster and more compact programs
ď Assembler language allows direct access and full control of input/output
operations
ď However, high-level language programs are easier to write and develop than
assembler language programs
70. 70
Advantages of High-level languages
ďBlock structure code: programs are most readable when they are
broken into âlogical blocksâ that perform specific function.
ďProductivity: easier to program
ďLevel of complexity: no need to know the hardware details
ďSimple mathematics formula statement
ďPortability: only need to change the compiler when it is ported to other machine
ďAbstract data types: different data types like floating-point value,
record and array, and high precision value.
ďReadability
71. 71
Intel 8086 Instruction Set Overview
ďIntel 8088 has ninety basic ( ie not counting addressing mode
variants) instructions
ďInstructions belong to one of the following groups: data
transfer, arithmetic, logic, string manipulation, control
transfer and processor control.
72. Converting Assembly Language Instructions to
Machine Code
⢠An instruction can be coded with 1 to 6 bytes
⢠Byte 1 contains three kinds of information
â Opcode field (6 bits) specifies the operation (add, subtract, move)
â Register Direction Bit (D bit) Tells the register operand in REG field in byte
2 is source or destination operand
1: destination 0: source
-Data Size Bit (W bit) Specifies whether the operation will be performed on 8-
bit or 16-bit data
72
0: 8 bits 1: 16 bits
73. ⢠Byte 2 has three fields
â Mode field (MOD)
â Register field (REG) used to identify the register for the first operand
â Register/memory field (R/M field)
73
74. 2-bit MOD field and 3-bit R/M field together specify the second operand
74
Mode Field encoding
Register/memory (R/M) Field Encoding
75. Examples
MOV BL,AL (88C316)
Opcode for MOV = 100010
D = 0 (AL source operand)
W bit = 0 (8-bits)
Therefore byte 1 is 100010002=8816
⢠MOD = 11 (register mode)
⢠REG = 000 (code for AL)
⢠R/M = 011 (destination is BL)
Therefore Byte 2 is 110000112=C316
75
76. Examples:
MOV BL, AL = 10001000 11000011 = 88 C3h
ADD AX, [SI] = 00000011 00000100 = 03 04 h
ADD [BX] [DI] + 1234h, AX = 00000001 10000001 __ __ h =
76
01 81 34 12 h
78. (abbreviations below: d=destination, s=source)
General Data Movement Instructions
MOV d,s - moves byte or word; most commonly used instruction
PUSH s - stores a word (register or memory) onto the stack
POP d - removes a word from the stack
XCHG d,s - exchanges data, reg.-reg. Or memory to register
XLAT - translates a byte using a lookup table (has no operands)
IN d,s - moves data (byte or word) from I/O port to AX or AL
OUT d,s - moves data (byte or word) from AX or AL to I/O port
LEA d,s - loads effective address (not data at address) into register
LDS d,s - loads 4 bytes (starting at s) to pointer (d) and DS
LES d,s - loads 4 bytes (starting at s) to pointer (d) and ES
LAHF - loads the low-order bytes of the FLAGS register to AH
SAHF - stores AH into the low-order byte of FLAGS
PUSHF - copies the FLAGS register to the stack
POPF - copies a word from the stack to the FLAGS register
78
I. Data Movement Instructions (14)
79. Instructions for moving strings
String instructions are repeated when prefixed by the REP mnemonic (CX
contains the repetition count)
MOVS d,s - (MOVSB, MOVSW) memory to memory data transfer
LODS s - (LODSB and LODSW) copies data into AX or AH
STOS d - (STOSB, STOSW) stores data from AH or AX
79
80. 80
Data movement using MOV
MOV d, s
d=destination (register or effective memory address),
s=source (immediate data, register or memory address)
MOV can transfer data from:
ďany register to any register (except CS register)
ďmemory to any register (except CS)
ďimmediate operand to any register (except CS)
ďany register to a memory location
ďimmediate operand to memory
MOV cannot perform memory to memory transfers (must use a register as an intermediate
storage).
MOV moves a word or byte depending on the operand bit-lengths; the source
and destination operands must have the same bit length.
MOV cannot be used to transfer data directly into the CS register.
81. The stack The stack
The stack is a block of memory reserved for temporary storage of data and
registers. Access is LAST-IN, FIRST OUT (LIFO)
The last memory location used in the stack is given by the effective
address calculated from the SP register and the SS register:
Example:
81
82. The stack
ďData may be stored onto the stack using the PUSH instruction âthis
automatically decrements SP by 2 (all stack operations involve words).
ďThe POP instruction removes data from the stack (and increments SP by 2).
ďThe stack may be up to 64K-bytes in length.
82
83. 83
PUSH and POP instructions
Examples:
PUSH AX ;stores AX onto the stack
POP AX ;removes a word from the stack and loads it into AX
PUSHF ;stores the FLAGS register onto the stack
POPF ; removes a word from the stack and loads it into FLAGS
ďPUSH may be used with any register to save a word (the register
contents) onto the stack. The usual order (e.g. as with MOV) of
storing the lower order byte in the lower memory location is used.
ďPUSH may also be used with immediate data, or data in memory.
ď POP is the inverse of the PUSH instruction; it removes a word
from the top of the stack. Any memory location or 16-bit register
(except CS) may be used as the destination of a POP instruction.
PUSHF and POPF saves and loads the FLAGS register to/from the
stack,respectively.
84. 84
Exchange Instruction (XCHG)
ďXCHG exchanges the contents of two registers or a register and memory. Both
byte and word sized exchanges are possible.
Examples:
XCHG AX,BX; exchange the contents of AX and BX
XCHG CL,BL; exchange CL and BL contents
XCHG DX,FRED; exchanges content of DX and memory
DS:FRED
ď Memory to Memory exchanges using XCHG are NOT allowed.
85. 85
Translate Instruction (XLAT)
ďMany applications need to quickly convert byte sized codes to other values
mapping one byte value to another (e.g. mapping keyboard binary codes to ASCII
code)
ď XLAT can perform a byte translation using a look-up table containing up to 256
elements
ďXLAT assumes that the 256-byte table starts at the address given by DS:BX (i.e.
effective address formed by the DS and BX registers). AL is used as an index to
point to the required element in the table prior to the execution of XLAT. The result
of XLAT instruction is returned in the same register (AL).
AAddddrreessss DDaattaa TTaabbllee
86. 86
LEA &LDS
LEA loads the offset of a memory address into a 16-bit register. The offset address
may be specified by any of the addressing modes.
Examples (with BP=1000H):
LEA AX,[BP+40H];=>SS:[1000H+40H] =SS:[1040H];load 1040H into AX
LEA BX,FRED; load the offset of FRED (in data segment) to BX
LEA CX,ES:FRED; loads the offset of FRED (in extra segment) to CX
LDS -Load data and DS
LDS reads two words from the consecutive memory locations and loads them into the
specified register and the DS segment registers.
Examples (DS=1000H initially)
LDS BX,[2222H]; copies content of 12222H to BL, 12223H to BH, and 12224 and
12225 to DS register
LDS is useful for initializing the SI and DS registers before a string operation. E.g.
LDS SI, sting_pointer
The source for LDS can be displacement, index or pointer register (except SP).
87. 87
LES -Load data and ES
LES reads two words from memory and is very similar to LDS except that the second
word is stored in ES instead of DS.
LES is useful for initializing that DI and ES registers for strings operation.
Example (with DS=1000H):
LES DI, [2222H]; loads DI with contents stored at 12222H and 12223H and loads ES
with contents at 12224 and 12225H
88. 88
LAHF, SAHF
ďLAHF (load AH with the low-order byte of the FLAGS register) and SAHF
(Store AH into the low-order byte of the FLAG register)
ďvery rarely used instructions -originally present to allow translation of 8085
programs to 8086.
89. 89
IN, OUT
Examples:
IN AX, 0C8h ;reads port address at C8h (8 bit address) and loads into AX
IN AL, DX ;reads the port address given by DX and loads into AL
OUT p8 ,AX ;sends the data in AX to port p8
OUT DL, AX ; sends the data in AX to port given by DL
ďIN reads data from the specified IO port (8-bit or 16-bit wide) to the accumulator (
AL or AX).
ď The IO port can be an immediate address (8-bit only) or specified by a variable
or register (8 or 16-bit address). (Seems only DX can be used.)
OUT sends data from the accumulator register to the specified I/O port. Both byte and
word sized data may be sent using IN and OUT.
94. 94
ASCII adjust for Addition (AAA)
ASCII codes for the numbers 0 to 9 are 30H to 39H respectively.
ď The ascii adjust instructions convert the sum stored in AL to two-byte unpack BCD number
which are placed in AX.
ď When 30H is added to each byte, the result is the ASCII codes of the digits representing the
decimal for the original number in AL.
Example: Register AL contains 31H (the ASCII code for 1), BL contains 39H (the ASCII code for 9).
ADD AL, BL ; produces the result 6AH which is kept in AL.
AAA ; converts 6AH in AL to 0100H in AX
Addition of 30H to each byte of AX produces the result 3130H (the ASCII code
for 10 which is the result of 1+9)
132. 133
Program Data and Storage
⢠Assembler directives for data storage
â DB - byte(s)
â DW - word(s)
â DD - doubleword(s)
â DQ - quadword(s)
â DT - tenbyte(s)
133. 134
Arrays
⢠Any consecutive storage locations of the
same size can be called an array
X DW 40CH,10B,-13,0
Y DB 'This is an array'
Z DD -109236, FFFFFFFFH, -1, 100B
⢠Components of X are at X, X+2, X+4, X+8
⢠Components of Y are at Y, Y+1, âŚ, Y+15
⢠Components of Z are at Z, Z+4, Z+8, Z+12
134. 135
DUP
⢠Allows a sequence of storage locations to
be defined or reserved
⢠Only used as an operand of a define
directive
DB 40 DUP (?)
DW 10h DUP (0)
DB 3 dup ("ABC")
db 4 dup(3 dup (0,1), 2 dup('$'))
135. 136
Word Storage
⢠Word, doubleword, and quadword data are
stored in reverse byte order (in memory)
Directive Bytes in Storage
DW 256 00 01
DD 1234567H 67 45 23 01
DQ 10 0A 00 00 00 00 00 00 00
X DW 35DAh DA 35
Low byte of X is at X, high byte of X is at X+1
136. 137
EQU Directive
⢠name EQU expression
â expression can be string or numeric
â Use < and > to specify a string EQU
â these symbols cannot be redefined later in the
program
sample EQU 7Fh
aString EQU <1.234>
message EQU <This is a message>