1 / 45

Input & Output Instructions

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.

uyen
Download Presentation

Input & Output Instructions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. CAP241

  2. 2 categories of I/O service routine • The BIOS routines. • The DOS routines. CAP241

  3. 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. CAP241

  4. DOS routines • Can carry out more complex tasks. • Printing a character string…. They use the BIOS routines to perform direct I/O operations. CAP241

  5. 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. CAP241

  6. Example • INT 16h invokes a BIOS routine that performs keyboard input. • We will use a particular DOS routine INT 21h CAP241

  7. INT 21h • Used to invoke a large number of DOS functions. • Put the function number in AHregister and then invoke INT 21h CAP241

  8. FUNCTIONS Function number Routines 1single-key input 2single-character output 9 character string output CAP241

  9. INT 21h functions • Input values are to be in certain registers & return output values in other registers. CAP241

  10. Function 1 • Single-Key Input Input :AH = 1 Output : AL = ASCII code if character key is pressed. = o if non-character is pressed. CAP241

  11. Example MOV AH,1 ; input key function INT 21h; ASCII code in AL CAP241

  12. Example • If character k is pressed, AL gets its ASCII code; the character is also displayed on the screen • IfArrow key or F1-F10, ALwill contain 0 • The instructions following the INT 21h can examine AL and take appropriate action. CAP241

  13. 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 CAP241

  14. 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 CAP241

  15. 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. CAP241

  16. 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. CAP241

  17. 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) CAP241

  18. 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 CAP241

  19. Read a character MOV AH,1 ; read character function INT 21H ; character in AL CAP241

  20. 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 CAP241

  21. 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. CAP241

  22. 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 CAP241

  23. Display the character MOV DL , BL ; get character INT 21h ;and display it CAP241

  24. Program Listing TITLE PGM4_1 : Echo PROGRAM .MODEL SMALL .STACK 100H .CODE MAIN PROC ;display prompt MOV AH,2 MOV DL,'?' INT 21H ; input a character MOV AH,1 INT 21H MOV BL,AL ; go to a new line MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H ; display characters MOV DL,BL INT 21H ; return to DOS MOV AH,4CH INT 21H MAIN ENDP END MAIN CAP241

  25. When a program terminates, it should return control to DOS MOV AH,4CH ; DOS exit function INT 21H ; exit to DOS CAP241

  26. Displaying a string INT 21h , Function 9: Display a string Input :DX = offset address of string. The string must end with a ‘$’ character. CAP241

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

  28. Example • Print HELLO! on the screen. MSG DB ‘HELLO!$’ CAP241

  29. 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 CAP241

  30. 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. CAP241

  31. Example MSG DB ‘HELLO!$’ LEA DX , MSG ; puts the offset ;address of variable ; MSG in DX • This example contains data segments initialize DS. CAP241

  32. 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 CAP241

  33. 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 #. CAP241

  34. 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 CAP241

  35. Sample Program directive giving title for printed listings program title (comment) • TITLE PGM4-2: PRINT STRING PROGRAM          • ; This program displays “Hello!” • .MODEL SMALL • .STACK 100H comment line memory model: small programs use at most 64K code and 64K data set the stack size CAP241

  36. Sample Program starts the data segment where variables are stored carriage return and line feed reserve room for some bytes • .DATA • MSG DB “HELLO!”,0DH,0AH,’$’ • .CODE • MAIN 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 exit • MAIN ENDP • END MAIN variable name starts the code segment Declares the beginning of the procedure which is called main marks the end of the current procedure marks the end of the program. “main” specifies the program execution is to begin with the procedure “main” CAP241

  37. Sample execution: A> PGM4_2 HELLO! CAP241

  38. Case Conversion Program ENTER A LOWER CASE LETTER : a IN UPPER CASE IT IS : A CAP241

  39. Case Conversion Program • Use EQU to define CR & LF as names for the constants 0DH & 0AH. CR EQU 0DH LF EQU 0AH CAP241

  40. The messages and input character can be stored in the Data Segment like this: MSG1DB'ENTER A LOWER CASE LETTER : $‘ MSG2DB CR,LF , 'IN UPPER CASE IT IS : ‘ CHARDB?,'$' CAP241

  41. 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 CAP241

  42. Convert to upper case SUB AL,20H ; convert into uppercase MOV CHAR,AL ; and store it CAP241

  43. Display second message & uppercase LEADX,MSG2 ; get second message MOVAH,9 ; display string function INT 21H ;display message & uppercase letter CAP241

  44. Program Listing CAP241

  45. .MODEL SMALL .STACK 100H .DATA CR EQU 0DH LF EQU 0AH MSG1 DB 'ENTER A LOWER CASE LETTER : $' MSG2 DB CR,LF,'IN UPPER CASE IT IS : ' CHAR DB ?,'$' .CODE MAIN PROC ; initialize DS MOV AX,@DATA MOV DS,AX ;print user prompt LEA DX,MSG1 MOV AH,9 INT 21H ; input a character and convert to upper case MOV AH,1 INT 21H SUB AL,20H MOV CHAR,AL ; display on the next line LEA DX,MSG2 MOV AH,9 INT 21H ; return TO DOS MOV AH,4CH INT 21H MAIN ENDP END MAIN CAP241

More Related