Date post: | 16-Jan-2023 |
Category: |
Documents |
Upload: | ciitlahore |
View: | 0 times |
Download: | 0 times |
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
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
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
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
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
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/