Keyboard interrupt


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Keyboard interrupt

  1. 1. KEYBOARD INTERRUPTs 8086 1 9/3/2012
  2. 2. The Purpose of Interrupts 2 Interrupts are particularly useful when interfacing I/O devices that provide or require data at relatively low data transfer rates . If the person using the keyboard typed one character per second. The software of the Processors waited an entire second between each key stroke for the person to type another key . This process was such a tremendous waste of time that designers developed another process, Interrupt processing to handle this situation. Interrupt processing allows the microprocessor to execute other software while the keyboard operator is thinking about what key to type next. 9/3/2012
  3. 3. DOS and BIOS Interrupts 3 DOS and BIOS interrupts are used to perform some very useful functions, such as displaying data to the monitor, reading data from keyboard, etc. They are used by identifying the interrupt option type, which is the value stored in register AH and providing, whatever extra information that the specific option requires. 9/3/2012
  4. 4. Introduction 4SOFTWARE INTERRUPT: The 8086 INT instruction can be used to cause the 8086 to do any one of 256 possible interrupt types. The desired type is specified as part of the instruction. Software interrupts produced by the INT instructions have many uses. For example: INT 3 instruction to insert breakpoints in programs for debugging. Another use of Software interrupt INT is to test various interrupts-service procedures. For example: INT 0 instruction to send execution to a divide-by-zero interrupt – service procedure without having to run the actual division program. 9/3/2012
  5. 5. INT Instruction 5 The term type in the instruction format refers to a number between 0 and 255 which identifies the interrupt. When an 8086 executes an INT instruction. It will:1. Decrement the stack pointer by 2 and push the flags onto the stack.2. Decrement the stack pointer by 2 and push the contents of CS onto the stack.3. Decrement the stack pointer by 2 and push the offset of the next instruction after the INT number instruction on the stack.4. Get a new value for IP from an absolute memory address of 4 times the type specified in the instruction. For an INT 8 instruction. For example, the new IP will be read from address 00020H.5. Get a new value for CS from an absolute memory address of 4 times the type specified in the instruction plus 2. For an INT 8 instruction, for example, the new value of CS will be read from address 00022H.6. Reset both IF and TF. Other flags are not affected. 9/3/2012
  6. 6. INT 21h Instruction 6 Hence in this section we are going to see about INT instructions used for Keyboard.(INT 21 h-DOS Interrupt) The int 21 h instructions are used to interrupt through the Keyboard, Files, Directives. Depending on the value that is moved to the ‘ah’ the operations will be done. The following slides will explain the different operations performed. 9/3/2012
  7. 7. INT 21h Instruction 7 INT 21h / AH=1 - read character from standard input, with echo, result is stored in AL. if there is no character in the keyboard buffer, the function waits until any key is pressed. example: mov ah, 1 int 21h INT 21h / AH=2 - write character to standard output. entry: DL = character to write, after execution AL = DL. example: mov ah, 2 mov dl, a int 21h 9/3/2012
  8. 8. INT 21h Instruction 8 INT 21h / AH=5 - output character to printer. entry: DL = character to print, after execution AL = DL. example: mov ah, 5 mov dl, a int 21h INT 21h / AH=7 - character input without echo to AL. example: mov ah, 7 int 21h INT 21h / AH=9 - output of a string at DS:DX. String must be terminated by $. example: msg db "hello world $“ .code mov ax,@data mov ds,ax mov dx,offset msg mov ah,9 int 21h ret 9/3/2012
  9. 9. INT 21h Instruction 9 INT 21h / AH=0Ah - input of a string to DS:DX, Example: mov ax,@data mov ds,ax mov ah,0Ah int 21h INT 21h / AH=25h - set interrupt vector; input: AL = interrupt number. DS:DX -> new interrupt handler. INT 21h / AH=2Ah - get system date; return: CX = year (1980-2099). DH = month. DL = day. AL = day of week (00h=Sunday) 9/3/2012
  10. 10. Other INT 21h Instruction 10 INT 21h / 6h;direct console input or output. INT 21h/0Bh; Get input Status INT 21h/0Ch; Flush keyboard buffer and read standard input INT 21h/0Eh; Select default drive INT 21h/19h; Get current default drive INT 21h/25h; Set interrupt vector INT 21h/35h; Get interrupt Vector INT 21h/39h; Make directory INT 21h/3Ah; Remove directory INT 21h/3Bh; Set current directory 9/3/2012
  11. 11. Other INT 21h instruction 11 INT 21h/3Ch;create or truncate file INT 21h/3Dh;Open Existing file INT 21h/3Eh;Close file INT 21h/3Fh;Read from File INT 21h/40h;Write to file INT 21h/41h;Delete File INT 21h/42h;Set current File Position INT 21h/47h;Get current Directory INT 21h/4Ch;return control to the operating system(STOP PROGRAM) INT 21h/56h; rename file/move file 9/3/2012
  12. 12. Example Programs 12 INPUT A CHARACTER AND PRINT THE CHARACTER IN THE OUTPUT .model small .stack 100h .code mov ax, @data mov ds, ax mov ah, 1h ; keyboard input subprogram int 21h ; read character into al mov dl, al ; copy character to dl mov ah, 2h ; character output subprogram int 21h ; display character in dl end 9/3/2012
  13. 13. Example Programs 13 INPUT THE STRING:  PRINT THE STRING IN .model small THE OUTPUT .stack 100h .model small .code .data mov ax, @data msg db "hello world $" mov ds , ax .stack 100h mov ah,0Ah .code int 21h mov ax, @data end mov ds, ax mov dx, offset msg mov ah,9 int 21h ret end 9/3/2012
  14. 14. Example Programs 14 GET SYSTEM DATE AND TIME: // DATE:  //TIME:.model small .model small.stack 100h .stack 100h.code .code mov ax, @data mov ax,@data mov ds, ax mov ds,ax mov ah, 2Ah; mov ah, 2Ch; int 21h ; int 21h ; end end 9/3/2012
  15. 15. INT 16h INSTRUCTION 15 INT 16h is the basic BIOS keyboard operation used extensively by software developers and provides the following services according to a function code that you load in AH. INT 16h/03h: set typematic Repeat rate INT 16h/05h: Keyboard write. INT 16h/10h: Read keyboard Character INT 16h/11h: Determine whether character is present or not INT 16h/12h: Return Keyboard Status. 9/3/2012
  16. 16. INT 10h Instructions 16 INT 10h instruction is used for the video mode. Even this INT instruction has many operations that works according to the value moved onto the ‘ah’. Option 0H – Sets video mode. Registers used:  AH = 0H  AL = Video Mode. 9/3/2012
  17. 17. INT 10h Instructions 17 The following are some of the services offered by INT 10 H. INT 10H/00H; set video mode INT 10H/01H; set cursor size INT 10H/02H; set cursor position INT 10H/03H; return cursor status INT 10H/05H; select active page INT 10H/06H; scroll up screen INT 10H/07H; scroll down screen INT 10H/0Ah; display character INT 10H/0CH; Write pixel dot INT 10H/13H; Return video information 9/3/2012
  18. 18. INT 10h Instructions 18 INT 10h / AH = 09h - write character and attribute at cursor position. input: AL = character to display. BH = page number. BL = attribute. CX = number of times to write character. INT 10h / AH = 0Ah - write character only at cursor position. input: AL = character to display. BH = page number. CX = number of times to write character. 9/3/2012
  19. 19. INT 10h Instructions 19 INT 10h / AH = 0Ch - change color for a single pixel. input: AL = pixel color CX = column. DX = row. example: mov al, 13h mov ah, 0 int 10h ; set graphics video mode. mov al, 1100b mov cx, 10 mov dx, 20 mov ah, 0ch int 10h ; set pixel. INT 10h / AH = 0Dh - get color of a single pixel. input: CX = column. DX = row. output: AL = pixel color 9/3/2012
  20. 20. INT 10h Instructions 20 INT 10h / AH = 13h - write string. input: AL = write mode: bit 0: update cursor after writing; bit 1: string contains attributes. BH = page number. BL = attribute if string contains only characters (bit 1 of AL is zero). CX = number of characters in string (attributes are not counted). DL,DH = column, row at which to start writing. ES:BP points to string to be printed. 9/3/2012
  21. 21. INT 10h Instructions 21example: mov al, 1 mov bh, 0 mov bl, 0011_1011b mov cx, msg1end - offset msg1 ; calculate message size. mov dl, 10 Mov dh, 7 push cs pop es mov bp, offset msg1 mov ah, 13h int 10h jmp msg1end msg1 db " hello, world! “ msg1end: 9/3/2012
  22. 22. 22THANK YOU 9/3/2012