Você está na página 1de 3

LAB REPORT

EEE 316 : MICROPROCESSOR AND INTERFACING LAB

EXPERIMENT 4
PROCEDURES, STACKS AND ARRAYS IN ASSEMBLY LANGUAGE

SECTION: B-2
GROUP: 06
DEPARTMENT: EEE
L3 / T2

NAME : MD IQBAL HOSSAIN


STUDENT NO. 0706111

DATE OF PERFORMANCE:03 /04/2011


DATE OF SUBMISSION: 10/04/2011

PARTNERS’ ST. NO.


0706109
0706110
0706112
Objectives:
The objectives of this experiment are:
To be familiar with stack operations.
Calling and executing functions with assembly language programs
Arrays in assembly language programming.
Programs:
a) Program 1: LCM of 4 numbers
CODE SEGMENT
ASSUME CS:CODE, DS:CODE

MOV AX, 1H
MOV BX, 2H
MOV CX, 3H
MOV DX, 4H
MOV [1500H], AX
CALL LCM

MOV BX, CX
XCHG AX, BX
MOV [1500H], AX
CALL LCM

MOV BX, DX
XCHG AX, BX
MOV [1500H], AX
CALL LCM
HLT

LCM PROC
PUSH CX
PUSH DX
MOV CX, AX

DO: MOV DX, 0H


DIV BX
CMP DX, 0H
JE LAST
ADD CX, [1500H]
MOV AX, CX
JMP DO

LAST: MOV AX, CX


POP DX
POP CX
RET

LCM ENDP

CODE ENDS
END
Result of emulation:
AX=000C BX=0006 CX=0003 DX=0004 SP=FFFE BP=0000 SI=0000 DI=0000 DS=0100
ES=0100 SS=0100 CS=0100 IP=0024 NV UP EI PL ZR NA PE NC 0100:0024 F4 HLT
b) Program 2: Division by shifting
CODE SEGMENT
ASSUME CS:CODE, DS:CODE

MOV AX, 200


MOV [1500H], 2 ; 200 / 2 = 100 = 64H
MOV CX, 16 ; 16 = size of 1 word
LEV: ROL AX, 1
PUSH AX
AND AX, 1 ; gives the LSB of AX
SHL BX, 1
ADD BX, AX
POP AX
CMP BX, [1500H]
JAE CHANGE

SHL DX, 1
AND DX, 0FFFEH
JMP LAST
CHANGE: SUB BX, [1500H]
SHL DX, 1
ADD DX, 1 ; DX contains result
JMP LAST
LAST: LOOP LEV
MOV AX, DX
HLT
CODE ENDS
END
Result of emulation:
AX=0064 BX=0000 CX=0000 DX=0064 SP=FFFE BP=0000 SI=0000 DI=0000 DS=0100
ES=0100 SS=0100 CS=0100 IP=0032 NV UP EI PL NZ AC PO NC 0100:0032 F4 HLT

c) Program 3: Mean of an array


.DATA
NUMBERS DW 9, 6, 1, 4, 5, 6, 7
.CODE
MOV AX, @DATA
MOV CX, 7 ; 7 = Size of the array
PUSH CX
LEA SI, NUMBERS
ADDS: ADD AX, [SI]
ADD SI, 2
LOOP ADDS

POP CX ; CX = 7
DIV CX
HLT
CODE ENDS
END
Result of emulation:
AX=0005 BX=0007 CX=0000 DX=0003 SP=FFFC BP=0000 SI=000E DI=0000 DS=0100
ES=0100 SS=0100 CS=0100 IP=0028 NV UP EI PL NZ NA PO NC 0100:0028 F4 HLT
Comments:
This code gives mean of an array in integer form. Actual result = AX + ( DX / BX )

Você também pode gostar