+ All Categories
Home > Documents > MPI Assembly LAB TASKS

MPI Assembly LAB TASKS

Date post: 16-Jan-2023
Category:
Upload: ciitlahore
View: 0 times
Download: 0 times
Share this document with a friend
19
1 | Page COMSATS-Lancaster Dual Degree Programme . CIIT, 1.5KM Defence Road, Off Raiwind Road, Lahore. Name : Ahmed Daud Registration Number : CIIT/DDP-FA10-BTE-002/LHR Email : [email protected] Semester : 6 Section : DDP Department : Electrical Engineering Course Title : Lab - Microprocessor Systems & Interfacing Course Code : EEE342 Lab Task : Performance Lab Topic : Assembly Language Programming Submitted To : Engr. Mr. Usman Rafique
Transcript

1 | P a g e

COMSATS-Lancaster Dual Degree Programme .

CIIT, 1.5KM Defence Road, Off Raiwind Road, Lahore.

Name : Ahmed Daud

Registration Number : CIIT/DDP-FA10-BTE-002/LHR

Email : [email protected]

Semester : 6

Section : DDP

Department : Electrical Engineering

Course Title : Lab - Microprocessor Systems & Interfacing

Course Code : EEE342

Lab Task : Performance

Lab Topic : Assembly Language Programming

Submitted To : Engr. Mr. Usman Rafique

2 | P a g e

TABLE OF CONTENTS

LAB Task PAGE #

Lab No. 1 3

Lab No. 2 5

Lab No. 3 7

Lab No. 4 10

Lab No. 5 13

References 19

3 | P a g e

Introduction with Assembly Language,

Assembler and EMU8086

4 | P a g e

LAB TASK # 1

Introduction with Assembly Language, Assembler and EMU8086

;MPI_LAB_1.ASM

ORG 100H

MYVAR DB ? ; CS=0700, DS=0700, IP=0101

BYTEVAR DB 03H

WORDVAR DW 0006H

CHR DB 'A'

STR DB 'THIS IS STRING'

MOV AL, CHR ; CS=0700, DS=0700, IP=0116, AL=41

ADD AL, BYTEVAR ; CS=0700,DS=0700,IP=011A,AL=44

MOV BYTEVAR, AL

XCHG AL, AH ; CS=0700,DS=0700,IP=011F,AL=FF,AH=44

MOV AX, WORDVAR ; CS=0700,DS=0700,IP=0122,AX=0006

MOV AX, 0B800H ; CS=0700,DS=0700,IP=0125,AX=B800

MOV DS, AX ; CS=0700,DS=B800,IP=0127,AX=B800

MOV CL,'A' ; CS=0700,DS=B800,IP=0129,CL=41

MOV CH, 1101_1111B ; CS=0700,DS=B800,IP=012B,CH=DF

MOV BX, 15EH ; CS=0700,DS=B800,IP=012E,BX=015E

MOV [BX], CX ; CS=0700,DS=B800,IP=0130,AX=B800

RET ; CS=0700,DS=B800,IP=0000,AX=B800

5 | P a g e

Processor Status/Flags Register

6 | P a g e

LAB TASK # 1

Processor Status/Flags Register

; MPI_LAB_2.ASM

ORG 100H

MOV AX, 4000H ; AX=4000,IP=0103,CF=0,ZF=0,SF=0,OF=0,PF=0,AF=0,IF=1

ADD AX, AX ; AX=8000,IP=0105,CF=0,ZF=0,SF=1,OF=1,PF=1,AF=0,IF=1

SUB AX, 0FFFFH ; AX=8001,IP=0108,CF=1,ZF=0,SF=1,OF=0,PF=0,AF=1,IF=1

NEG AX ; AX=7FFF,IP=010A,CF=1,ZF=0,SF=0,OF=0,PF=1,AF=1,IF=1

INC AX ; AX=8000,IP=010B,CF=1,ZF=0,SF=1,OF=1,PF=1,AF=1,IF=1

MOV AX, 512CH ; AX=512C,IP=010E,CF=1,ZF=0,SF=1,OF=1,PF=1,AF=1,IF=1

MOV BX, 4185H ; BX=4185,IP=0111,CF=1,ZF=0,SF=1,OF=1,PF=1,AF=1,IF=1

ADD AX, BX ; AX=92B1,IP=0113,CF=0,ZF=0,SF=1,OF=1,PF=1,AF=1,IF=1

MOV AX, 0FE12H

MOV BX, 1ACBH

ADD AX, BX

MOV AX, 6389H

MOV BX, 1176H

ADD AX, BX

MOV AX, 2143H

MOV BX,-1986H

SUB AX, BX

MOV AX, 0002H

MOV BX, 0FE0FH

SUB AX, BX

RET

7 | P a g e

Input Output Instructions

8 | P a g e

LAB TASK # 1

Input Output Instructions

; LAB NO. 3

; Input Output Instructions

; MPI_LAB_3.EXE

; TASK # 1

.MODEL SMALL

.STACK 100H

.DATA

CR EQU 0DH

LF EQU 0AH

MSG1 DB 'Enter A Lower Case Letter:$'

MSG2 DB 0DH,0AH,'In upper case it is:'

CHAR DB ?,'$'

.CODE

MAIN PROC

;INITIALIZE DS

MOV AX,@DATA ;GET DATA SEGMENT

MOV DS,AX ;INITIALIZE DS

;PRINT USER PROMPT

LEA DX,MSG1 ;GET FIRST MESSAGE

MOV AH,9 ;DISPLAY STRING FUNCTION

INT 21H ;DISPLAY FIRST MESSAGE

;INPUT A CHARACTER AND CONVERT TO UPPER CASE

9 | P a g e

MOV AH,1 ;READ CHARACTER FUNCTION

INT 21H ;READ A SMALL LETTER INTO AL

SUB AL,20H ;CONVERT IT TO UPPER

MOV CHAR,AL ;AND STORE IT

; DISPLAY ON THE NEXT LINE

LEA DX,MSG2

MOV AH,9 ; GET SECOND MESSAGE

INT 21H ; DISPLAY STRING FUNCTION

; DOS EXIT ; DISPLAY MESSAGE AND UPPER CASE

MOV AH,4CH ;DOS EXIT

INT 21H

MAIN ENDP

END MAIN

10 | P a g e

8086/8088 Addressing

Modes

11 | P a g e

LAB TASK # 1

8086/8088 Addressing Modes

;MPI_LAB4A.EXE

.MODEL SMALL

.STACK 100H

.DATA

RRAY DB 41H,42H,43H,44H

.CODE

MAIN PROC

MOV DX,@DATA

MOV DS,DX

MOV SI,[1234H]

MOV BX,3

MOV DI,SI

ADD DI,BX

MOV AL,[SI]

XCHG AL,[DI]

MOV [SI],AL

INC SI

DEC DI

MOV AL,[SI]

XCHG AL,[DI]

MOV [SI],AL

INC SI

DEC DI

12 | P a g e

MOV AL,[SI]

XCHG AL,[DI]

MOV [SI],AL

MOV AH,4CH

INT 21H

MAIN ENDP

END MAIN

13 | P a g e

Looping and Simple

Conditional Jumps

14 | P a g e

LAB TASK # 1

Looping and Simple Conditional Jumps

.MODEL SMALL

.STACK 100H

.DATA

.CODE

MAIN PROC

MOV AX,@DATA ;INITOALIZE DATA SEGMENT

MOV DS,AX

MOV AH,2 ;PREPARE TO DISPLAY CHARACTER

MOV DL, '?' ;CHARACTER TO DISPLAY

INT 21H

MOV AH,1 ;PREPARE TO READ CHARACTER

INT 21H ;READ FIRST CHARACTER

MOV BL,AL ;SAVE FIRST CHARACTER IN BL

INT 21H ;READ SECOND CHARACTER

;IF AL <= BL

CMP AL,BL ;AL<=BL

JNBE ELSE_ ;NO EXECUTE ELSE_PART

;THEN

MOV AH,2

MOV DL,AL ;DISPLAY CHARACTER IN AL

INT 21H

MOV AH,2

MOV DL,BL ;DISPLAY CHARACTER IN BL

15 | P a g e

INT 21H

JMP EXIT

ELSE_:

MOV AH,2

MOV DL,BL ;DISPLAY CHARACTER IN BL

INT 21H

EXIT:

MOV AH,04CH ;EXIT TO DOS FUNCTION

INT 21H

MAIN ENDP

END MAIN

16 | P a g e

LAB TASK # 2

.MODEL SMALL

.STACK 100H

.DATA

.CODE

MAIN PROC

MOV AX,@DATA ;INITIALIZE DATA SEGMENT

MOV DS,AX

MOV CX,80 ;NUMBER OF STARS TO DISPLAY

MOV AH,2 ;DISPLAY CHARACTER FUNCTION

MOV DL, "*" ;CHARACTER TO DISPLAY

TOP:

INT 21H ;DISPLAY A *

LOOP TOP ;REPEAT 80 TIMES

MOV AH,04CH ;EXIT TO DOS FUNCTION

INT 21H

MAIN ENDP

END MAIN

17 | P a g e

LAB TASK # 3

.MODEL SMALL

.STACK 100H

.DATA

.CODE

MAIN PROC

MOV AX,@DATA ;INITIALIZE THE DATA SEGMENT

MOV DS,AX

MOV DX,0 ;DX COUNTS THE CHARACTERS

MOV AH,1 ;PREPARE TO READ THE CHARACTER

INT 21H ;READ A CHARACTER

WHILE_:

CMP AL,0DH ;CR?

JE END_WHILE ;YES,EXIT

INC DX ;NOT CR,INCREMENT COUNT

INT 21H ;READ A CHARACTER

JMP WHILE_ ;LOOP BACKS

END_WHILE:

MOV AH,04CH

INT 21H

MAIN ENDP

END MAIN

18 | P a g e

LAB TASK # 4

MODEL SMALL

.STACK 100H

.DATA

.CODE

MAIN PROC

MOV AX,@DATA ;INITIALIZE DATA SEGMENT

MOV DS,AX

MOV DX,0 ;DX COUNTS CHARACTER

MOV AH,1 ;PREPARE TO READ CHARACTER

REPEAT:

INT 21H ;READ A CHARACTER

INC DX ;INCREMENT COUNT

CMP AL,0DH

JNE REPEAT ;NOT CR GO TO REPEAT

MOV AH,04CH

INT 21H

MAIN ENDP

END MAIN

19 | P a g e

REFERENCES

Assembly language programming and organization of the IBM PC by Ytha Y. Yu, Charles Marut

The 80x86 IBM PC and compatible computers: Assembly language, design, and interfacing by

Muhammad Ali Mazidi, Janice Gillispie Mazidi

Assembly Language for Intel-Based Computers by Kip R. Irvine

The Intel Microprocessors: 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Pentium

Pro, and Pentium II Processors : Architecture, Programming, and Interfacing by Barry B. Brey

Assembly language programming for the Intel 80XXX family by William B. Giles

The 80x86 IBM PC and Compatible Computers (Vol 1 and Vol 2)

Microcomputer Systems: The 8086/8088 Family

Online Materials

Intel Developers website http://developer.intel.com

AIX-86 (8086) Datasheet

www.google.com

www.wikipedia.com

http://ocw.mit.edu/

http://see.stanford.edu/

http://mycourses.med.harvard.edu/public/


Recommended