Académique Documents
Professionnel Documents
Culture Documents
(code segment). SS (stack segment). DS (data segment). ES (extra segment). FS, GS (supplemental segments available on 386s, 486s and Pentiums.
Every instruction and directive must correspond to a segment. Normally a program consists of three segments: the stack, the data, and the code segments.
Segment Definition
widely used memory model. The code must fit in 64k. The data must fit in 64k.
.MODEL MEDIUM
The
.MODEL COMPACT
The
Segment Definition
.MODEL LARGE
Both
code and data can exceed 64k. No single set of data can exceed 64k.
.MODEL HUGE
Both
code and data can exceed 64k. A single set of data can exceed 64k.
.MODEL TINY
Used
with COM files. Both code and data must fir in a single 64k segment.
Segment Definition
The Simplified segment definition uses the following directives to define the segments:
.STACK .DATA .CODE These
Segment Definition
The full segment definition uses the following directives to define the segments:
Label
SEGMENT [options] ;Statements belonging to the segment. Label ENDS The label must follow naming conventions previously discussed.
Segment Definition
;S IM P L IF IE D S E G M E N T D E F IN IT IO N .M O D E L S M A L L .S T A C K 6 4 STSEG SEG M EN T D B 6 4 D U P (? ) STSEG EN D S D TSEG N 1 N 2 SU M D TSEG SEG M D W D W D W EN D S EN T 1432H 4365H 0H ;F U L L S E G M E N T D E F IN IT IO N
.D A T A N 1 D W N 2 D W SU M D W
1432H 4365H 0H
.C O D E B E G IN
PR O C FA R M O V A X ,@ D A T A M O V D S ,A X M O V A X ,N 1 A D D A X ,N 2 M O V S U M ,A X M O V A H ,4 C H IN T 2 1 H EN D P E N D B E G IN
B E G IN
Addressing Modes
These are the different ways in which data may be accessed by the microprocessor.
Immediate. Register. Memory.
Direct. Register indirect. Register relative. Based indexed. Relative based indexed.
Immediate
Directly accessible to the EU. The address is part of the instruction. Useful in initializations. MOV EAX,1111000B MOV CL, 0F1H
Register
Directly accessible to the EU. Most compact and fastest executing instructions. Operands are encoded in the instruction. MOV EBX,EDX MOV AL,CL
Memory
When reading or writing to memory the execution unit passes an offset value, the effective address, to the bus interface unit which then computes the physical address. Memory.
Direct. Register indirect. Register relative. Based indexed. Relative based indexed.
Direct
EA = {[operand]} PA = {DS} 16 + {[operand]}
Simplest memory addressing mode. Access to simple variables. MOV EAX,DS:SUM MOV CL,DS:COUNT+5 MOV DS:[500H],EDX
Register Indirect
(EBX ) EA = (EDI ) (ESI )
Register Relative
(EBX ) (EBP ) 8 bit displaceme nt EA = + ( ) EDI 16 bit displaceme nt (ESI ) DS (EBX ) SS (EBP ) 8 bit displaceme nt PA = 16 + + ( ) DS EDI 16 bit displaceme nt DS (ESI )
Used to access two dimensional arrays or arrays contained in structures. MOV DS:ARRAY[EBX][EDI],EAX
Accessing Arrays
Accessing Arrays
A ssum e the follow ing array definition: ARRAY DD 00112233H , 44556677H , 88990011H B egin: LE A E B X ,D S:A R R A Y L1: M O V EA X ,D S:[EB X ] IN C E B X JM P L1
Alignment
It is best to align words with even numbered addresses, and double words to addresses divisible by four, but this is not necessary. The alignment allows for more efficient memory access, but it is less flexible.
Immediate - Memory
When reading or writing to memory using immediate addressing mode, the programmer must specify the data size otherwise the assembler will default to the largest possible data size that processor handles. Use the following directives:
Byte
Procedures
Also known as subroutines, these sets of instructions usually perform a single task. They are reusable code, that can be executed as often as needed by calling it. Procedures save memory, but the calling of a procedure takes a small amount of time.
Procedures
Format
Global procedures are defined as FAR. Local procedures are defined as NEAR.
Procedures
CALL destination
Calls a subroutine at location destination. Different addressing modes may be used for destination. CALL DELAY CALL EBX CALL ARRAY[BX] Returns execution of program to location stored in stack. NEAR or FAR is dependent on procedure definition.
RET