46
21/11/2005 CAP241 1 Input & Output Instructions • CPU communicates with the peripherals through I/O registers called I/O ports . • There are 2 instructions, IN & OUT, that access the ports directly. • These instructions are used when fast I/O is essential ……. in a game program.

Input & Output Instructions

  • Upload
    huyen

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

Input & Output Instructions. CPU communicates with the peripherals through I/O registers called I/O ports . There are 2 instructions, IN & OUT , that access the ports directly. These instructions are used when fast I/O is essential ……. in a game program. IN & OUT. - PowerPoint PPT Presentation

Citation preview

Page 1: Input & Output Instructions

21/11/2005CAP2411

Input & Output Instructions

• CPU communicates with the peripherals through I/O registers called I/O ports.

• There are 2 instructions, IN & OUT, that access the ports directly.

• These instructions are used when fast I/O is essential ……. in a game program.

Page 2: Input & Output Instructions

21/11/2005CAP2412

IN & OUT

• Most application programs do not use IN and OUT instructions.

• Why?

1) port addresses vary among computer models

2) easier to program I/O with service routines

Page 3: Input & Output Instructions

21/11/2005CAP2413

2 categories of I/O service routine

1. The BIOS routines.

2. The DOS routines.

Page 4: Input & Output Instructions

21/11/2005CAP2414

BIOS routines

• Are stored in ROM and interact directly with I/O ports.

• Used to carry basic screen operations such as moving the cursor & scrolling the screen.

Page 5: Input & Output Instructions

21/11/2005CAP2415

DOS routines

• Can carry out more complex tasks.

• Printing a character string…. They use the BIOS routines to perform direct I/O operations.

Page 6: Input & Output Instructions

21/11/2005CAP2416

The INT Instruction.

• To invoke a DOS or BIOS routine , the INT (interrupt) instruction is used.

• FORMAT

INT interrupt_number

is a number that specifies a routine.

Page 7: Input & Output Instructions

21/11/2005CAP2417

Example

• INT 16h

invokes a BIOS routine that performs

keyboard input.

• We will use a particular DOS routine

INT 21h

Page 8: Input & Output Instructions

21/11/2005CAP2418

INT 21h

• Used to invoke a large number of DOS functions.

• Put the function number in AH register and then invoke INT 21h

Page 9: Input & Output Instructions

21/11/2005CAP2419

FUNCTIONS

Function number Routines

1 single-key input

2 single-character output

9 character string output

Page 10: Input & Output Instructions

21/11/2005CAP24110

INT 21h functions

• Input values are to be in certain registers & return output values in other registers.

Page 11: Input & Output Instructions

21/11/2005CAP24111

Function 1

• Single-Key Input

Input : AH = 1Output : AL = ASCII code if character key is

pressed.

= o if non-character is pressed.

Page 12: Input & Output Instructions

21/11/2005CAP24112

Example

MOV AH,1 ; input key function

INT 21h ; ASCII code in AL

Page 13: Input & Output Instructions

21/11/2005CAP24113

Example

• If character k is pressed, AL gets its ASCII code; the character is also displayed on the screen

• If Arrow key or F1-F10, AL will contain 0

• The instructions following the INT 21h can examine AL and take appropriate action.

Page 14: Input & Output Instructions

21/11/2005CAP24114

Function 2

• INT 21h, function 1 …. doesn’t prompt the user for input, he might not know whether the computer is waiting for input or it is occupied by some computation.

• Function 2 can be used to prompt the user

Page 15: Input & Output Instructions

21/11/2005CAP24115

Function 2• Display a character or execute a control function

Input : AH = 2

DL = ASCII code for the display character

or control character

Output : AL = ASCII code of the display character

or control character

Page 16: Input & Output Instructions

21/11/2005CAP24116

Example

MOV AH,2 ; display character function

MOV DL, ‘?’ ; character is ‘?’

INT 21h ; display character

• After the character is displayed, the cursor advances to the next position on the line.

Page 17: Input & Output Instructions

21/11/2005CAP24117

Control functions

• Function 2 may also be used to perform control functions.

• If DL contains the ASCII code of a control character, INT 21h causes the control function to be performed.

Page 18: Input & Output Instructions

21/11/2005CAP24118

Control functions

ASCII code (hex) Symbol Function

7 BEL beep

8 BS backspace

9 HT tab

A LF line feed (new

line)

D CR carriage return

(start of current

line)

Page 19: Input & Output Instructions

21/11/2005CAP24119

A First Program

Read a character and display it at the beginning of the next line

1-We start by displaying a question mark:MOV AH,2 ; display character function

MOV DL,'?‘ ; character is ‘?’

INT 21H ; display character

Move 3Fh, the ASCII code for “?” , into DL

Page 20: Input & Output Instructions

21/11/2005CAP24120

Read a character

MOV AH,1 ; read character function

INT 21H ; character in AL

Page 21: Input & Output Instructions

21/11/2005CAP24121

Display the character on next line

• First , the character must be saved in another register.

MOV BL , AL ; save it in BL

• This because the INT 21h , function 2 , changes AL

Page 22: Input & Output Instructions

21/11/2005CAP24122

Display the character on next line

-Move cursor to the beginning of the next line:

• Execute carriage return & line feed.

• Put their ASCII codes in DL & execute INT 21h.

Page 23: Input & Output Instructions

21/11/2005CAP24123

Move cursor to the beginning of the next line

MOV AH , 2 ; display character function

MOV DL , 0Dh ; carriage return

INT 21h ; execute carriage return

MOV DL , 0Ah ; line feed

INT 21h ; execute line feed

Page 24: Input & Output Instructions

21/11/2005CAP24124

Display the character

MOV DL , BL ; get character

INT 21h ; and display it

Page 25: Input & Output Instructions

21/11/2005CAP24125

Program ListingTITLE PGM4_1 : Echo PROGRAM

.MODEL SMALL.STACK 100H

.CODEMAIN PROC

;display promptMOV AH,2

MOV DL'?',INT 21H

;input a characterMOV AH,1INT 21HMOV BL,AL

;go to a new lineMOV AH,2MOV DL,0DHINT 21HMOV DL,0AHINT 21H

;display charactersMOV DL,BLINT 21H

;return to DOSMOV AH,4CHINT 21HMAIN ENDPEND MAIN

Page 26: Input & Output Instructions

21/11/2005CAP24126

When a program terminates, it should return control to DOS

MOV AH,4CH ; DOS exit function

INT 21H ; exit to DOS

Page 27: Input & Output Instructions

21/11/2005CAP24127

Displaying a string

INT 21h , Function 9:

Display a string

Input : DX = offset address of string.

The string must end with a ‘$’ character.

Page 28: Input & Output Instructions

21/11/2005CAP24128

• If the string contains the ASCII code of a control character , the control function is performed.

Page 29: Input & Output Instructions

21/11/2005CAP24129

Example

• Print HELLO! on the screen.

MSG DB ‘HELLO!$’

Page 30: Input & Output Instructions

21/11/2005CAP24130

The LEA instruction

• INT 21h, function 9, expects the offset address of the character string to be in DX.

• To get it there, we use

LEA destination , source

Page 31: Input & Output Instructions

21/11/2005CAP24131

LEA destination , source

• LEA ….. Load Effective Address

• Destination … is a general register.

• Source ………… is a memory location.

• It puts a copy of the source offset address into destination.

Page 32: Input & Output Instructions

21/11/2005CAP24132

Example

MSG DB ‘HELLO!$’LEA DX , MSG ; puts the offset

;address of variable ; MSG in DX

• This example contains data segments initialize DS.

Page 33: Input & Output Instructions

21/11/2005CAP24133

Program Segment Prefix

• When a program is loaded in memory, DOS prefaces it with PSP. The PSP contains information about program.

• DOS places in DS & ES segment # of PSP.

• DS must be loaded with the segment # of data segment

Page 34: Input & Output Instructions

21/11/2005CAP24134

DS initialization

• A program containing a data segment begins with:

MOV AX,@DATA

MOV DS,AX

• @Data is the name of the data segment defined by .DATA. It is translated into a segment #.

Page 35: Input & Output Instructions

21/11/2005CAP24135

Print the message

• With DS initialized, we may print the “HELLO!” message:

LEA DX,MSG ;get message

MOV AH,9;display string function

INT 21h ;display string

Page 36: Input & Output Instructions

21/11/2005CAP24136

TITLE PGM4-2: PRINT STRING PROGRAM         

; This program displays “Hello!”

.MODEL SMALL

.STACK 100H

program title (comment)

comment line

memory model: small programs use at most 64K code and 64K data

set the stack size

Sample Program

directive giving title for printed listings

Page 37: Input & Output Instructions

21/11/2005CAP24137

Sample Program

.DATAMSG DB “HELLO!”,0DH,0AH,’$’

.CODEMAIN PROC    MOV  AX,@DATA    MOV  DS,AX ;initialize DS

LEA DX,MSG ;get message    MOV  AH,9 ;display string function    INT  21H ;display message

    MOV  AH,4CH    INT  21H ;DOS exitMAIN ENDPEND MAIN

starts the data segment where variables are stored

starts the code segment

reserve room for some bytes

variable name

carriage return and line feed

Declares the beginning of the procedure which is called main

marks the end of the current proceduremarks the end of the program. “main” specifies the program execution is to begin with the procedure “main”

Page 38: Input & Output Instructions

21/11/2005CAP24138

• Sample execution:

A> PGM4_2

HELLO!

Page 39: Input & Output Instructions

21/11/2005CAP24139

Case Conversion Program

ENTER A LOWER CASE LETTER : a

IN UPPER CASE IT IS : A

Page 40: Input & Output Instructions

21/11/2005CAP24140

Case Conversion Program

• Use EQU to define CR & LF as names for the constants 0DH & 0AH.

CR EQU 0DHLF EQU 0AH

Page 41: Input & Output Instructions

21/11/2005CAP24141

The messages and input character can be stored in the Data Segment like this:

MSG1 DB 'ENTER A LOWER CASE LETTER : $‘

MSG2 DB CR,LF , 'IN UPPER CASE IT IS : ‘

CHARDB ?,'$'

Page 42: Input & Output Instructions

21/11/2005CAP24142

Our program begins by displaying the first message and reading the character:

LEA DX,MSG1 ; get first message

MOV AH,9 ; display string function

INT 21H ;display first message

MOV AH,1 ; read character function

INT 21H ; read a small letter into AL

Page 43: Input & Output Instructions

21/11/2005CAP24143

Convert to upper case

SUB AL,20H ; convert into uppercase

MOV CHAR,AL ; and store it

Page 44: Input & Output Instructions

21/11/2005CAP24144

Display second message & uppercase

LEA DX,MSG2 ; get second message

MOV AH,9 ; display string function

INT 21H ;display message & uppercase letter

Page 45: Input & Output Instructions

21/11/2005CAP24145

Program Listing

Page 46: Input & Output Instructions

21/11/2005CAP24146

.MODEL SMALL

.STACK 100H

.DATACR EQU 0DHLF EQU 0AH

MSG1 DB 'ENTER A LOWER CASE LETTER : $'MSG2 DB CR,LF,'IN UPPER CASE IT IS : 'CHAR DB ?,'$'.CODEMAIN PROC; initialize DS

MOV AX,@DATAMOV DS,AX

;print user promptLEA DX,MSG1MOV AH,9INT 21H

; input a character and convert to upper case

MOV AH,1INT 21HSUB AL,20HMOV CHAR,AL

; display on the next lineLEA DX,MSG2MOV AH,9INT 21H

; return TO DOSMOV AH,4CHINT 21H

MAIN ENDPEND MAIN