Title: Memory model
1Memory model
2Data Segment
- Contain all variable declaration
- To declare data segment, directive .DATA,
followed by variable or constant declaration - E.g.
- .DATA
- WORD1 DW 2
- WORD2 DW 5
- MSG DB INI ADALAH MESEJ
- MASK EQU 10010010B
3Stack Segment
- Is used to reserve one memory block to store
stack - Definition syntax
- .STACK size (size is optional)
- E.g .STACK 100H
- The above statement will prepare 100h byte for
stack area
4Code Segment
- Contain program instructions
- Syntax declaration
- .CODE name where name is
- the chosen of the segment
- Instruction is in procedure form
5- Simple procedure declaration
- name PROC
- procedure body
- name ENDP
- where name (procedure name) PROC and ENDP
(pseudo-op which describe procedure)
6- Eg
- .CODE
- MAIN PROC
- main procedure instruction
- MAIN ENDP
- other procedure starts here
7Combination of segments
- One general form programming model using memory
model. .SMALL can be constructed - .MODEL SMALL
- STACK 100H
- .DATA
- data declaration starts here
- .CODE
- MAIN PROC
- instruction starts here
- MAIN ENDP
- other procedures starts here
- END MAIN
- Last line must be END, followed by main procedure
name
88086 Instruction Set
9Instruction Types
- Data transfer instruction
- Arithmetic instruction
- Bit control instruction
- Compare instruction
- Jump/branch instruction
- Loop instruction
10Data Transfer Instruction
- Used to transfer data
- Between one internal register with other internal
register - Between internal register with one storage
location in memory - Between one internal register with immediate
value - Instructions such as MOV and XCHG
11MOV (MOVe)
- Transfer from source operand to destination
operand - Format
- MOV OD, OS where OS source operand
- ODdestination operand
- Execution example
12Valid source and destination operand
13- To transfer both source and destination operand
which is the memory space can be done with
instruction - MOV AX,BETA copy BETA content into AX
- MOV ALPHA,AX copy AX content into ALPHA
- Transger must be between equivalent data size,
example - MOV AL,1234H is not allowed because
insert data with 16-bit size into
8-bit size register
14- Example copy MOV instruction with register
addressing mode and direct addressing mode - Register addressing mode
- MOV AX,BX ? (BX) ? (AX)
- Direct addressing mode
- MOV CX,ABCD ? ((DS)OHABCD) ? (CL)
- ((DS)OHABCD1)?(CH)
15XCHG (EXCHange)
- Exchangfe between source operand with destination
operand - Format
- XCHG OD,OS where ODdestination
operand OSsource operand - Instruction execution XCHG AX,DX
16- Can involve 8 and 16 bit data but size must be
equivalent - For instruction involve memory space like
- XCHG SUM,BX
- exchange is as
- XCHG SUM,BX ? ((DS)OHSUM)??BX
17Exchange 2 variable
title Exchange Two Variables     (Exchange.asm) .m
odel small .stack 100h .data value1 db 0Ah value2Â
db 14h .code main proc     mov  ax,_at_data       in
itialize DS register     mov  ds,ax     mov  al,va
lue1      load the AL register     xchg value2,al
      exchange AL and value2     mov  value1,al Â
    store AL back into value1     mov  ax,4C00hÂ
      exit program     int  21h main endp end mai
n
18Arithmetic Instruction
- Involve additional instruction (ADD), subtraction
(SUB), multiplication (MUL) and division (DIV) - Also contain this instruction variation
- For instruction such as ADC instruction including
carry flag instruction
19ADD (ADDition)
- Perform addition between source operand and
destination operand and result is stored in
operand destination - Format
- ADD OD,OS where ODdestination
operand - OSsource operand
- ADD OD,OS
- ODOS ?OD
- (if there is a carry, carry flag,
- CF1)
20ADD instruction
- Source operand can be register, immediate value
or memory - Destination operand can be register or memory
- Only one operand can be memory operand
21ADD Instruction Examples
.data membyte db 25 memword dw 36 doubleVal
dd 12340000h .code add al,5 add bx,ax add
eax,edx add membyte,al add memword,bx add
doubleVal,edx
22- Valid destination operand and source operand
combination
23Instruction example
- If AX1234H, BX0001H, therefore
- ADD AX,BX is as in the table below
24SUB Instruction
- Format SUB OD, OS where OS source operand
- OD
destination operand - Subtract source operand from destination operand
- Source operand can be register, immediate value
or memory - Destination operand can be register or memory
- Only one operand can be memory operand
25SUB Instruction Example
.data membyte db 25 memword dw 36 doubleVal
dd 12340000h .code sub al,5 sub bx,ax sub
eax,edx sub membyte,al sub memword,bx sub
doubleVal,edx