Home Random Page


CATEGORIES:

BiologyChemistryConstructionCultureEcologyEconomyElectronicsFinanceGeographyHistoryInformaticsLawMathematicsMechanicsMedicineOtherPedagogyPhilosophyPhysicsPolicyPsychologySociologySportTourism






Most common interruptions

 

Contents

 

5.4.1 Int 21H (DOS interruption)

Multiple calls to DOS functions.

 

5.4.2 Int 10H (BIOS interruption)

Video input/output.

 

5.4.3 Int 16H (BIOS interruption)

Keyboard input/output.

 

5.4.4 Int 17H (BIOS interruption)

Printer input/output.

 

 

5.41 21H Interruption

Purpose: To call on diverse DOS functions.

 

Syntax:

 

Int 21H

 

Note: When we work in TASM program is necessary to specify that the value we

are using is hexadecimal.

 

This interruption has several functions, to access each one of them it is necessary that the function number which is required at the moment of calling the interruption is in the AH register.

 

Functions to display information to the video.

 

02H Exhibits output

09H Chain Impression (video)

40H Writing in device/file

 

Functions to read information from the keyboard.

 

01H Input from the keyboard

0AH Input from the keyboard using buffer

3FH Reading from device/file

 

Functions to work with files.

 

In this section only the specific task of each function is exposed, for a

reference about the concepts used, refer to unit 7, titled : "Introduction

to file handling".

 

FCB Method

 

0FH Open file

14H Sequential reading

15H Sequential writing

16H Create file

21H Random reading

22H Random writing

 

Handles

 

3CH Create file

3DH Open file

3EH Close file driver

3FH Reading from file/device

40H Writing in file/device

42H Move pointer of reading/writing in file

 

VIDEO DISPLAY FUNCTIONS

 

02H FUNCTION

 

Use:

 

It displays one character to the screen.

 

Calling registers:

 

AH = 02H

DL = Value of the character to display.

 

Return registers:

 

None.

 

This function displays the character whose hexadecimal code corresponds to the value stored in the DL register, and no register is modified by using this command.

 

The use of the 40H function is recommended instead of this function.

 

09H FUNCTION

 

Use:

 

It displays a chain of characters on the screen.

 

Call registers:

 

AH = 09H

DS:DX = Address of the beginning of a chain of characters.

 

Return registers:

 

None.

 

This function displays the characters, one by one, from the indicated address in the DS:DX register until finding a $ character, which is interpreted as the end of the chain.

 

It is recommended to use the 40H function instead of this one.

 

40H FUNCTION

 

Use:

 

To write to a device or a file.

 

Call registers:

 

AH = 40H

BX = Path of communication

CX = Quantity of bytes to write

DS:DX = Address of the beginning of the data to write

 

Return registers:

 

CF = 0 if there was no mistake



 

AX = Number of bytes written

 

CF = 1 if there was a mistake

 

AX = Error code

 

The use of this function to display information on the screen is done by giving the BX register the value of 1 which is the preassigned value to the video by the operative system MS-DOS.

 

KEYBOARD INFORMATION FUNCTIONS

 

01H FUNCTION

 

Use:

 

To read a keyboard character and to display it.

 

Call registers

 

AH = 01H

 

Return registers:

 

AL = Read character

 

It is very easy to read a character from the keyboard with this function, the hexadecimal code of the read character is stored in the AL register. In case it is an extended register the AL register will contain the value of 0 and it will be necessary to call on the function again to obtain the code of that character.

 

0AH FUNCTION

 

Use:

 

To read keyboard characters and store them on the buffer.

 

Call registers:

 

AH = 0AH

DS:DX = Area of storage address

BYTE 0 = Quantity of bytes in the area

BYTE 1 = Quantity of bytes read

from BYTE 2 till BYTE 0 + 2 = read characters

 

Return characters:

 

None.

 

The characters are read and stored in a predefined space on memory. The structure of this space indicate that in the first byte are indicated how many characters will be read. On the second byte the number of characters already read are stored, and from the third byte on the read characters are written.

 

When all the indicated characters have been stored the speaker sounds and any additional character is ignored. To end the capture of the chain it is necessary to hit [ENTER].

 

3FH FUNCTION

 

Use:

 

To read information from a device or file.

 

Call registers:

 

AH = 3FH

BX = Number assigned to the device

CX = Number of bytes to process

DS:DX = Address of the storage area

 

Return registers:

 

CF = 0 if there is no error and AX = number of read bytes.

CF = 1 if there is an error and AX will contain the error code.

FILE WORKING FUNCTIONS:

FCB FUNCTIONS:

0FH FUNCTION

 

Use:

 

To open an FCB file

 

Call registers:

 

AH = 0FH

DS:DX = Pointer to an FCB

 

Return registers:

 

AL = 00H if there was no problem, otherwise it returns to 0FFH

 

14H FUNCTION

 

Use:

 

To sequentially read an FCB file.

 

Call registers:

 

AH = 14H

DS:DX = Pointer to an FCB already opened.

 

Return registers:

 

AL = 0 if there were no errors, otherwise the corresponding error code will be returned: 1 error at the end of the file, 2 error on the FCB structure and 3 partial reading error.

 

What this function does is that it reads the next block of information from the address given by DS:DX,

 

What this function does is that it reads the next block of information from the address given by DS:DX, and dates this register.

 

15H FUNCTION

 

Use:

 

To sequentially write and FCB file.

 

Call registers:

 

AH = 15H

DS:DX = Pointer to an FCB already opened.

 

Return registers:

 

AL = 00H if there were no errors, otherwise it will contain the error code: 1 full disk or read-only file, 2 error on the formation or on the specification of the FCB.

 

The 15H function dates the FCB after writing the register to the present

block.

 

16H FUNCTION

 

Use:

 

To create an FCB file.

 

Call registers:

 

AH = 16H

DS:DX = Pointer to an already opened FCB.

 

Return registers:

 

AL = 00H if there were no errors, otherwise it will contain the 0FFH value.

 

It is based on the information which comes on an FCB to create a file on a disk.

 

21H FUNCTION

 

Use:

 

To read in an random manner an FCB file.

 

Call registers:

 

AH = 21H

DS:DX = Pointer to and opened FCB.

 

Return registers:

 

A = 00H if there was no error, otherwise AH will contain the code of the error: 1 if it is the end of file, 2 if there is an FCB specification error and 3 if a partial register was read or the file pointer is at the end of the same.

 

This function reads the specified register by the fields of the actual block and register of an opened FCB and places the information on the DTA, Disk Transfer Area.

 

22H FUNCTION

 

Use:

 

To write in an random manner an FCB file.

 

Call registers:

 

AH = 22H

DS:DX = Pointer to an opened FCB.

 

Return registers:

 

AL = 00H if there was no error, otherwise it will contain the error code: 1 if the disk is full or the file is an only read and 2 if there is an error on the

 

It writes the register specified by the fields of the actual block and register of an opened FCB. It writes this information from the content of the DTA.

 

FILE WORKING FUNCTIONS:

 

HANDLES:

3CH FUNCTION

 

Use:

 

To create a file if it does not exist or leave it on 0 length if it exists,

Handle.

 

Call registers:

 

AH = 3CH

CH = File attribute

DS:DX = Pointer to an ASCII specification.

 

Return registers:

CF = 0 and AX the assigned number to handle if there is no error, in case there is, CF will be 1 and AX will contain the error code: 3 path not found, 4 there

CF will be 1 and AX will contain the error code: 3 path not found, 4 there are no handles available to assign and 5 access denied.

 

This function substitutes the 16H function. The name of the file is specified on an ASCII chain, which has as a characteristic being a conventional chain of bytes ended with a 0 character.

 

The file created will contain the attributes defined on the CX register in the following manner:

 

Value Attributes

00H Normal

02H Hidden

04H System

06H Hidden and of system

 

The file is created with the reading and writing permissions. It is not possible to create directories using this function.


3DH FUNCTION

 

Use:

 

It opens a file and returns a handle.

 

Call registers:

 

AH = 3DH

AL = manner of access

DS:DX = Pointer to an ASCII specification

 

Return registers:

 

CF = 0 and AX = handle number if there are no errors, otherwise CF = 1 and AX = error code: 01H if the function is not valid, 02H if the file was not found, 03H if the path was not found, 04H if there are no available handles, 05H in case access is denied, and 0CH if the access code is not valid.

 

The returned handled is 16 bits.

 

The access code is specified in the following way:

 

BITS

 

7 6 5 4 3 2 1

 

. . . . 0 0 0 Only reading

. . . . 0 0 1 Only writing

. . . . 0 1 0 Reading/Writing

. . . x . . . RESERVED

 

3EH FUNCTION

 

Use:

 

Close file (handle).

 

Call registers:

 

AH = 3EH

BX = Assigned handle

 

Return registers:

 

CF = 0 if there were no mistakes, otherwise CF will be 1 and AX will contain the error code: 06H if the handle is invalid.

 

This function dates the file and frees the handle it was using.

 

3FH FUNCTION

 

Use:

 

To read a specific quantity of bytes from an open file and store them on a specific buffer.


 

5.4.2 10H INTERRUPTION

 

Purpose: To call on diverse BIOS video function

 

Syntax:

 

Int 10H

 

This interruption has several functions, all of them control the video input/output, to access each one of them it is necessary that the function number which is required at the moment of calling the interruption is in the Ah register.

 

In this tutorial we will see some functions of the 10h interruption.

 

Common functions of the 10h interruption

 

02H Function, select the cursor position

09H Function, write attribute and character of the cursor

0AH Function, write a character in the cursor position

0EH Function, Alphanumeric model of the writing characters

 

02H FUNCTION

 

Use:

 

Moves the cursor on the computer screen using text model.

 

Call registers:

 

AH = 02H

 

BH = Video page where the cursor is positioned.

 

DH = row

 

DL = Column

 

Return Registers:

 

None.

 

The cursor position is defined by its coordinates, starting from the position 0,0 to position 79,24. This means from the left per computer screen corner to right lower computer screen. Therefore the numeric values that the DH and DL registers get in text model are: from 0 to 24 for rows and from 0 to 79 for columns.

 

09H FUNCTION

 

Use:

 

Shows a defined character several times on the computer screen with a defined attribute, starting with the actual cursor position.

 

Call registers:

 

AH = 09H

AL = Character to display

BH = Video page, where the character will display it;

BL = Attribute to use

number of repetition.

 

Return registers:

 

None

 

This function displays a character on the computer screen several times, using a specified number in the CX register but without changing the cursor position on the computer screen.

 

0AH FUNCTION

 

Use:

 

Displays a character in the actual cursor position.

 

Call registers:

 

AH = 0AH

AL = Character to display

BH = Video page where the character will display it

BL = Color to use (graphic mode only).

CX = number of repetitions

 

Return registers:

 

None.

 

The main difference between this function and the last one is that this one doesn't allow modifications on the attributes neither does it change the cursor position.

 

0EH FUNCTION

 

Use:

 

Displays a character on the computer screen dates the cursor position.

 

Call registers:

 

AH = 0EH

AL = Character to display

BH = Video page where the character will display it

BL = Color to use (graphic mode only).

 

Return registers:

 

None

 

5.4.3 16H INTERRUPTION

 

We will see two functions of the 16 h interruption, these functions are

called by using the AH register.

 

Functions of the 16h interruption

 

00H Function, reads a character from the keyboard.

01H Function, reads the keyboard state.

 

00H FUNCTION USE:

 

Reads a character from the keyboard.

 

Call registers:

 

AH = 00H

 

Return registers:

 

AH = Scan code of the keyboard

AL = ASCII value of the character

 

When we use this interruption, the program executing is halted until a character is typed, if this is an ASCII value; it is stored in the Ah register, Else the scan code is stored in the AL register and the AH register contents the value 00h.

 

The proposal of the scan code is to use it with the keys without ASCII representation as [ALT][CONTROL], the function keys and so on.

 

01H FUNCTION

 

Use:

 

Reads the keyboard state

 

Call registers:

 

AH = 01H

 

Return registers:

 

If the flag register is zero, this means, there is information on the buffer memory, else, there is no information in the buffer memory. Therefore the value of the Ah register will be the value key stored in the buffer memory.

 

 

5.4.4 17H INTERRUPTION

 

Purpose: Handles the printer input/output.

 

Syntax:

 

Int 17H

 

This interruption is used to write characters on the printer, sets printer and reads the printer state.

 

 

Functions of the 16h interruptions

 

00H Function, prints value ASCII out

01H Function, sets printer

02H Function, the printer state

 

00H FUNCTION

 

Use:

 

Writes a character on the printer.

 

Call registers:

 

AH = 00H

AL = Character to print.

DX = Port to use.

 

Return registers:

 

AH = Printer device state.

 

The port to use is in the DX register, the different values are: LPT1 = 0,

LPT2 = 1, LPT3 = 2 ...

 

The printer device state is coded bit by bit as follows:

 

BIT 1/0 MEANING

----------------------------------------

0 1 The waited time is over

1 -

2 -

3 1 input/output error

4 1 Chosen printer

5 1 out-of-paper

6 1 communication recognized

7 1 The printer is ready to use

 

1 and 2 bits are not relevant

 

Most BIOS sport 3 parallel ports, although there are BIOS which sport 4 parallel ports.

 

01H FUNCTION

 

Use:

 

Sets parallel port.

 

Call registers:

 

AH = 01H

DX = Port to use

 

Return registers:

 

AH = Printer status

 

Port to use is defined in the DX register, for example: LPT=0, LPT2=1, and so on.

 

The state of the printer is coded bit by bit as follows:

 

BIT 1/0 MEANING

----------------------------------------

0 1 The waited time is over

1 -

2 -

3 1 input/output error

4 1 Chosen printer

5 1 out-of-paper

6 1 communication recognized

7 1 The printer is ready to use

 

1 and 2 bits are not relevant

 

Most BIOS sport 3 parallel ports, although there are BIOS which sport 4 parallel ports.

 

02H FUNCTION

 

Uses:

 

Gets the printer status.

 

Call registers:

 

AH = 01H

DX = Port to use

 

Return registers

 

AH = Printer status.

 

Port to use is defined in the DX register, for example: LPT=0, LPT2=1, and

so on

 

The state of the printer is coded bit by bit as follows:

 

BIT 1/0 MEANING

----------------------------------------

0 1 The waited time is over

1 -

2 -

3 1 input/output error

4 1 Chosen printer

5 1 out-of-paper

6 1 communication recognized

7 1 The printer is ready to use

 

1 and 2 bits are not relevant

 

Most BIOS sport 3 parallel ports, although there are BIOS which sport 4

parallel ports.

 

 

5.5 Ways of working with files

 

There are two ways to work with files, the first one is by means of file control blocks or "FCB" and the second one is by means of communication channels, also known as "handles".

 

The first way of file handling has been used since the CPM operative system, predecessor of DOS, thus it assures certain compatibility with very old files from the CPM as well as from the 1.0 version of the DOS, besides this method allows us to have an unlimited number of open files at the same time. If you want to create a volume for the disk the only way to achieve this is by using this method.

 

Even after considering the advantages of the FCB, the use of the communication channels it is much simpler and it allows us a better handling of errors, besides, since it is much newer it is very probable that the files created this way maintain themselves compatible through later versions of the operative system.

 

For a greater facility on later explanations I will refer to the file control blocks as FCBs and to the communication channels as handles.

 

 


Date: 2014-12-22; view: 782


<== previous page | next page ==>
Jump instructions | FCB method
doclecture.net - lectures - 2014-2024 year. Copyright infringement or personal data (0.027 sec.)