280 likes | 534 Views
Memory model. Data 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. Stack Segment.
E N D
Data 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
Stack 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
Code Segment • Contain program instructions • Syntax declaration .CODE name ;where name is ;the chosen of ;the segment • Instruction is in procedure form
Simple procedure declaration: name PROC ; procedure body name ENDP where name (procedure name); PROC and ENDP (pseudo-op which describe procedure)
Eg: .CODE MAIN PROC ;main procedure instruction MAIN ENDP ;other procedure starts here
Combination 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
Instruction Types • Data transfer instruction • Arithmetic instruction • Bit control instruction • Compare instruction • Jump/branch instruction • Loop instruction
Data 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
MOV (MOVe) • Transfer from source operand to destination operand • Format • MOV OD, OS ;where OS= source ;operand • ;OD=destination ;operand • Execution example
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
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)OH+ABCD) (CL) • ((DS)OH+ABCD+1)(CH)
XCHG (EXCHange) • Exchangfe between source operand with destination operand • Format XCHG OD,OS ;where OD=destination ;operand ;OS=source operand • Instruction execution XCHG AX,DX
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)OH+SUM)BX
Exchange 2 variable • title Exchange Two Variables (Exchange.asm) • .model small • .stack 100h • .data • value1 db 0Ah • value2 db 14h • .code • main proc • mov ax,@data ; initialize DS register • mov ds,ax • mov al,value1 ; 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 main
Arithmetic 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
ADD (ADDition) • Perform addition between source operand and destination operand and result is stored in operand destination • Format ADD OD,OS ;where OD=destination ;operand ;OS=source operand ADD OD,OS OD+OS OD (if there is a carry, carry flag, CF=1)
ADD instruction • Source operand can be register, immediate value or memory • Destination operand can be register or memory • Only one operand can be memory operand
ADD 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
Instruction example • If AX=1234H, BX=0001H, therefore ADD AX,BX is as in the table below
SUB 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
SUB 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