Overview of Input and Output operations of 8086/8088 Assembly

Transcription

Overview of Input and Output operations of 8086/8088 Assembly
Microprocessor Systems (EE 271)
Lab Manual #1
4th Semester (Session 2011)
Name: ________________________________________Reg. #:2011 -EE-_________ _Date: _______________________
Overview of Input and Output operations of 8086/8088 Assembly Language
INTRODUCTION
The objective of this lab session is to introduce the students with taking input and
output using DOS INT 21H function calls and get another step further in learning the structure of
assembly language by learning the usage of
1.
Variable declaration using: DB, DW, DD
2.
Constant declaration using: EQU
3.
Offset operator
4.
Familiarization with friendly Emulator, Emu8086.
After this lab you will be able to
Take input from key board using functions calls 01 and 08 of INT 21H
Show output on the screen using function calls 02 and 09 of INT 21H
Familiar with the usage of emulator 8086.
OVERVIEW
The instruction INT 21h stands for “Call Interrupt no. 21”. For the time being let’s take interrupts like
a function or a subroutine placed in memory and being called from another program. The parameters
to that function or subroutine are passed by using different CPU registers mostly AH, AL or DX.
Functionality of that subroutine depends upon those parameters;
Functionality
Output in
Value of
AH
Function
Call No.
Reads a character from keyboard, stores it in AL and
display it (echoes it) on screen.
Display the content of register DL on screen in ASCII
form.
Read character from keyboard without echoing it on
screen
Display the string that is terminated by”$” sign.
AL
01h
01h
Screen
02h
02h
AL
08h
08h
Screen
09h
09h
DOS Function02h:
To display a single ASCII character at the current cursor position, use the following sequence
of instructions.
MOV AH, 02H
MOV DL, Character Code
INT 21H
The Character Code may be the ASCII code of the character taken from the ASCII table or the
character itself written between quotes.
1/6
Microprocessor Systems (EE 271)
Lab Manual #1
4th Semester (Session 2011)
The following code displays number 2 using its ASCII code:
MOV AH, 02H
MOV DL, 32H
INT 21H
This code also displays 2:
MOV AH, 02H
MOV DL, ‘2’
INT 21H
Function 01H and 08H:
To read single character and have it echoed (displayed) on the screen, use the following code:
MOV AH, 01H
INT 21H
AL contains now the ASCII code of the character read from the keyboard.
If the character is to be read without echo, such as reading a password, use the following code:
MOV AH, 08H
INT 21H
AL contains now the ASCII code of the character read.
DOS Functions 09h:
This function is used to display a string of characters ended with a ‘$’ sign. The following code
displays the string MESSAGE defined as:
.DATA
MESSAGE DB
‘This is the Message to be displayed’, ‘$’
.CODE
MOV DX, OFFSET MESSAGE
MOV AH, 09H
INT 21H
Or
.DATA
MESSAGE DB
‘This is the Message to be displayed’, ‘$’
.CODE
LEA DX,, MESSAGE
MOV AH, 09H
INT 21H
2/6
Microprocessor Systems (EE 271)
Lab Manual #1
4th Semester (Session 2011)
Introduction to emu8086
a) Open the emu8086 present on your desktop. Following window will appear
b) Select "new" from the above window. A new small window will appear. Select "empty work space"
and press OK.
c) A code
window will appear.
Just write your
specific code in this
space.
3/6
Microprocessor Systems (EE 271)
Lab Manual #1
4th Semester (Session 2011)
d) After writing your code, go to the file menu and save your code with an appropriate name
(The .asm extension is by default, you don't have to write it explicitly).
e) After saving your code, compile by pressing compile menu and remove the errors if there are any.
Otherwise click "close".
f)
Now emulate your program from the menu and see the values of registers step by step and also get
familiar with relevant things shown by the emulator.
g) Now you can use "single step" or "run" option.
4/6
Microprocessor Systems (EE 271)
Lab Manual #1
4th Semester (Session 2011)
Program1:
.MODEL SMALL
.STACK 100H
.CODE
MOV AH, 01H
INT 21H
MOV BL, AL
MOV AH, 02H
MOV DL, 0DH
INT 21H
MOV DL, 0AH
INT 21H
MOV DL, BL
INT 21H
MOV AH, 4CH
INT 21H
END
; Character input with echo
; Character in AL
; Save in BL
; Display character function
; carriage return
; line feed
; Get character stored in BL and display
Program2:
.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
MOV AX,@DATA
MOV DS, AX
LEA DX, MSG1
MOV AH, 9
INT 21H
MOV AH, 1
INT 21H
; get first message
; display string function
; read character function
5/6
Microprocessor Systems (EE 271)
Lab Manual #1
SUB AL, 20H
MOV CHAR, AL
; convert it to upper case
; store in AL
LEA DX, MSG2
MOV AH, 9
INT 21H
; get second message
; display string
4th Semester (Session 2011)
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
Lab Assignment:
a) Write an assembly language program that prompts you to enter a password of 3 characters in
length. The password should not be echoed to the screen rather it should show xxx. The
program then displays your name and ID number on the screen (Which you have to display by
simple LEA instruction).
b) Write a program to read one of the hex digits A-F, and display on the next line in decimal.
Sample:
Enter a hex digit: A
In decimal it is: 10
Note: Go through this lab manual before coming into lab.
6/6