Basic Input Output System BIOS - PowerPoint PPT Presentation

1 / 10
About This Presentation
Title:

Basic Input Output System BIOS

Description:

Basic Input Output System BIOS BIOS refers to a set of procedures or functions that enable the programmer have access to the hardware of the computer. – PowerPoint PPT presentation

Number of Views:226
Avg rating:3.0/5.0
Slides: 11
Provided by: COSTASK6
Category:

less

Transcript and Presenter's Notes

Title: Basic Input Output System BIOS


1
Basic Input Output SystemBIOS
  • BIOS refers to a set of procedures or functions
    that enable the programmer have access to the
    hardware of the computer.
  • A BIOS function is invoked using the INT
    instruction. The actual function is specified by
    the contents of AH.
  • ROM BIOS refers to BIOS procedures that are
    stored in a ROM placed on the motherboard. Some
    typical ROM BIOS are
  • INT 10H Video Driver
  • INT 13H Disk Driver
  • INT 14H Serial Port Driver
  • INT 16H Keyboard Driver
  • DOS BIOS refers to BIOS that are loaded from a
    disk after the computer is booted up. Most DOS
    BIOS are invoked using the INT 21H instruction.

2
Character Input from keyboard with Echo
  • INT 21H Function 01H
  • Call With AH 01H
  • Returns AL ASCII character pressed.
  • Note If AL is zero, then a function key is
    pressed.
  • Example The following macro reads a one digit
    number from the keyboard and returns the
    corresponding binary value in AL.
  • GET1 MACRO
  • MOV AH,01 Specify function 01
  • INT 21H Call DOS BIOS
  • AND AL,0FH Convert from ASCII to binary
  • GET1 ENDM

3
Display Character on Standard Output Device
  • INT 21H Function 02H
  • Call With AH 02H
  • DL ASCII code of character to be displayed
  • Returns AL ASCII code of character
    displayed
  • Note Standard output device is normally the
    monitor.
  • Example The following macro displays a one digit
    number on the screen. The number is passed in
    DL as a binary number.
  • DSP1 MACRO
  • OR DL,30H Convert from binary to ASCII
  • MOV AH,02 Specify function 02
  • INT 21H Call DOS BIOS
  • DSP1 ENDM

4
Display a Character String
  • INT 21H Function 09H
  • Call With AH 09H
  • DSDX SegmentOffset address of the string.
  • Returns All registers unchanged.
  • Note Displays a character string up to the
    first occurrence of the dollar sign "".
  • Example The following macro displays the
    character string MSG on the screen.
  • DMSG MACRO MSG
  • MOV DX, Offset MSG Point to MSG
  • MOV AH,09 Specify function 09
  • INT 21H Call DOS BIOS
  • DMSG ENDM

5
Buffered Keyboard Input
  • INT 21H Function 0AH
  • Call With AH 0AH
  • DSDX SegmentOffset address of the buffer
  • The first byte in the buffer should be loaded
    with the size of the buffer, i.e. the maximum
    number of characters to be input.
  • Returns All registers unchanged.
  • The second byte in the buffer is equal to the
    number of characters entered.
  • The characters entered are stored in the
    buffer starting from the third byte.
  • Note The functions ends if the user has typed
    in a number of characters equal to the first
    value in the buffer, or if the user has pressed
    the Enter key.

6
Buffered Keyboard Input- Example
  • The following procedure prompts the user to type
    in a text up to 30 characters long. The text
    entered is stored in the buffer BUF1. The
    procedure uses the DSPM macro of the previous
    example.
  • ORG 100H
  • MSG1 DB Type in a text up to 30 characters
    long, 0AH, 0DH,
  • BUF1 DB 30, 00, 30 DUP(?)
  • MAIN PROC NEAR
  • DSPM MSG1 Display MSG1
  • MOV DX, Offset BUF1 Point to BUF1
  • MOV AH,0AH Specify function 0A
  • INT 21H Call DOS BIOS
  • RET
  • MAIN ENDP

7
ASCII Codes
  • ASCII code is a standard 8-bit binary code for
    alphanumeric characters.
  • It defines
  • a group of control characters (00H to 20H and 7FH
    for Delete)
  • a group of printable characters (21H to 7EH)
  • a group of special graphics or multilingual
    characters (80H to FFH)

ASCII Control Characters
  • 00 NUL
  • 01 SOH
  • 02 STX
  • 03 ETX
  • 04 EOT
  • 05 ENQ
  • 06 ACK
  • 07 BEL

08 BS 09 HT 0A LF 0B VT 0C FF 0D
CR 0E SO 0F SI
10 DLE 11 DC1 12 DC2 13 DC3 14 DC4
15 NAK 16 SYN 17 ETB
18 CAN 19 EM 1A SUB 1B ESC 1C FS 1D
GS 1E RS 1F US
8
ASCII Codes - Printable Characters
  • 20 Space
  • 21 !
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28 (
  • 29 )
  • 2A
  • 2B
  • 2C ,
  • 2D -
  • 2E .
  • 2F /

30 0 31 1 32 2 33 3 34 4 35 5 36
6 37 7 38 8 39 9 3A 3B 3C lt 3D
3E gt 3F ?
40 _at_ 41 A 42 B 43 C 44 D 45 E 46
F 47 G 48 H 49 I 4A J 4B K 4C L 4D
M 4E N 4F O
60 61 a 62 b 63 c 64 d 65 e 66
f 67 g 68 h 69 i 6A j 6B k 6C l 6D
m 6E n 6F o
70 p 71 q 72 r 73 s 74 t 75 u 76
v 77 w 78 x 79 y 7A z 7B 7C 7D
7E 7F Del
50 P 51 Q 52 R 53 S 54 T 55 U 56
V 57 W 58 X 59 Y 5A Z 5B 5C \ 5D
5E 5F _
9
EXAMPLE(1/2)
  • x86 Assembly program that asks for two numbers
    and prints their sum
  • TITLE printsum
  • .data data segment
  • ORG 100H only if com program
  • MSG1 DB Please enter a number, 10, 13,
  • MSG2 DB sum , 10, 13,
  • .code code segment
  • Start mov ax,_at_data
  • mov ds,ax
  • LEA DX,MSG1 OR MOV DX, OFFSET MSG1
  • MOV AH,09H Printing MSG1
  • INT 21H
  • MOV AH,01H
  • INT 21H reading number 1 from keyboard
  • MOV BL,AL moving number 1 to BL
  • SUB BL, 30h Subtracting ascii offset
  • LEA DX,MSG1
  • MOV AH,09H Printing MSG1
  • INT 21H

10
EXAMPLE(2/2)
  • ADD AL,BL Adding the two numbers
  • MOV AH, 0 clearing AH for division
  • MOV BL, 10
  • DIV BL dividing with 10 to obtain decimal
    digits
  • MOV BH, AH moving remainder to use AH for
    interrupts
  • LEA DX,MSG2
  • MOV AH, 09 printing MSG2
  • INT 21H could corrupt registers, need to
    PUSH-POP!
  • MOV DL, AL printing digit 1
  • ADD DL, 30H
  • MOV AH, 02
  • INT 21H could corrupt registers, need to
    PUSH-POP!
  • MOV DL, BH printing digit 2
  • ADD DL, 30H
  • MOV AH, 02
  • INT 21H
  • MOV AH,4CH exit to operating system
  • INT 21H
  • end start
Write a Comment
User Comments (0)
About PowerShow.com