1 / 40

4.2: DOS INTERRUPT 21H Option 0AH inputting a data string from the keyboard

4.2: DOS INTERRUPT 21H Option 0AH inputting a data string from the keyboard. A means by which one can get keyboard data from & store it in a predefined data segment memory area. Register AH = 0AH. DX = offset address at which the string of data is stored.

kyra-rogers
Télécharger la présentation

4.2: DOS INTERRUPT 21H Option 0AH inputting a data string from the keyboard

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. 4.2: DOS INTERRUPT 21H Option 0AHinputting a data string from the keyboard • A means by which one can get keyboard data from & store it in a predefined data segment memory area. • Register AH = 0AH. • DX = offset address at which the string of data is stored. • Commonly referred to as a buffer area. • DOS requires a buffer area be defined in the data segment. • The first byte specifies the size of the buffer. • The number of characters from the keyboard is in the second byte. • Keyed-in data placed in the buffer starts at the third byte.

  2. 4.2: DOS INTERRUPT 21H Option 0AHinputting a data string from the keyboard • This program accepts up to six characters from the keyboard, including the return (carriage return) key. • Six buffer locations were reserved, and filled with FFH. • Memory contents of offset 0010H: • The PC won’t exit INT 21H until it encounters a RETURN.

  3. 4.2: DOS INTERRUPT 21H Option 0AHinputting a data string from the keyboard • Assuming the data entered through the keyboard was "USA" <RETURN>, the contents of memory locations starting at offset 0010H would look like: • 0010H = 06 DOS requires the size of the buffer here. • 0011H = 03 The keyboard was activated three times (excluding the RETURN key) to key in letters U, S, and A. • 0012H = 55H ASCII hex value for letter U. • 0013H = 53H ASCII hex value for letter S. • 0014H = 41H ASCII hex value for letter A. • 0015H = 0DH ASCII hex value for CR. (carriage return)

  4. 4.2: DOS INTERRUPT 21H inputting more than buffer size • Entering more than six characters (five + the CR = 6) will cause the computer to sound the speaker. • The contents of the buffer will look like this: • Location 0015 has ASCII 20H for <SPACE> • Location 0016 has ASCII 61H for "a“. • Location 0017 has 0D for <RETURN> key. • The actual length is 05 at memory offset 0011H.

  5. CR is not included in the count. 4.2: DOS INTERRUPT 21H inputting more than buffer size • If only the CR key is activated & no other character: • 0AH is placed in memory 0020H. • 0021H is for the count. • 0022H IS the first location to have data that was entered. • If only the <RETURN> key is activated, 0022H has 0DH, the hex code for CR. • The actual number of characters entered is 0 at location 0021.

  6. 4.2: DOS INTERRUPT 21H use of carriage return and line feed • In Program 4-2, the EQU statement is used to equate CR (carriage return) with its ASCII value of 0DH, and LF (line feed) with its ASCII value of 0AH. • See pages 141 & 142 • Program 4-3 prompts the user to type in a name with a maximum of eight letters. • The program gets the length and prints it to the screen. • See page 143. • Program 4-4 demonstrates many functions described in this chapter. • See pages 144 & 145.

  7. 4.2: DOS INTERRUPT 21H Option 07keyboard input without echo • Option 07 requires the user to enter a single character, which is not displayed (or echoed)on the screen. • The PC waits until a single character is enteredand provides the character in AL.

  8. 4.2: DOS INTERRUPT 21H using LABEL to define a string buffer • The LABEL directive can be used in the data segment to assign multiple names to data. • Used to assign the same offset address to two names. • The attribute can be: • BYTE; WORD; DWORD; FWORD; QWORD; TBYTE. • In the following: • The offset address assigned to JOE is the same offset address for TOM since the LABEL directive does not occupy any memory space.

  9. 4.2: DOS INTERRUPT 21H using LABEL to define a string buffer • Use this directive to define a buffer area for thestring keyboard input: • In the code segment the data can be accessed by name as follows:

  10. 4.3: WHAT IS A MACRO, AND HOW IS IT USED? • There are applications in Assembly language programming where a group of instructions performs a task used repeatedly. • It does not make sense to rewrite them every time. • Macros allow the programmer to write the task once only & invoke it whenever, wherever it is needed. • Reduces time to write code & reduce possibility of errors.

  11. 4.3: WHAT IS A MACRO, AND HOW IS IT USED?MACRO definition • Every macro definition must have three parts: • The MACRO directive indicates the beginning of the macro definition, ENDM directive signals the end. • In between is the body of the macro. • The name must be unique and must follow Assembly language naming conventions. • Dummies are names, parameters, or registersthat are mentioned in the body of the macro. • The macro can be invoked (or called) by its name, and appropriate values substituted for dummy parameters.

  12. 4.3: WHAT IS A MACRO, AND HOW IS IT USED?MACRO definition • A macro for displaying a string of data using the widely used function 09 of INT 21H:

  13. 4.3: WHAT IS A MACRO, AND HOW IS IT USED?MACRO definition • In the following code segment, the macro can beinvoked by its name with the user's actual data: • Instruction "STRING MESSAGE1" invokes the macro. • The assembler expands the macro by providing the following code in the .LST file: • The (1) indicates that the code is from the macro. • Earlier versions of MASM, used a plus sign (+).

  14. 4.3: WHAT IS A MACRO, AND HOW IS IT USED?comments in a macro • Two types of comments in the macro: • Listable; Nonlistable. • Comments preceded by one semicolon (;) will show up in the ".lst" file when the program is assembled. • Those preceded by a double semicolon (;;) will not.

  15. 4.3: WHAT IS A MACRO, AND HOW IS IT USED?comments in a macro • Three directives designed to make programs that use macros more readable, affecting the ".lst" file, with no effect on the ".obj" or ".exe" files: • .LALL (List ALL) will list all instructions/comments preceded by a single semicolon in the ".lst" file. • .SALL (Suppress ALL) suppresses the listing of the macro body and the comments. • Used to make the list file shorter and easier to read • Will not eliminate any opcode from the object file. • .XALL (eXecutable ALL) is used to list only the part of the macro that generates opcodes. • The default listing directive.

  16. 4.3: WHAT IS A MACRO, AND HOW IS IT USED?LOCAL directive and its use in macros • If a macro is expanded more than once, and there is a label in the label field of the body of the macro, these labels must be declared as LOCAL. • Otherwise, an assembler error would be generated when the same label was encountered in two or more places. • Rules which must be observed in the macro body: • 1. All labels in the label field must be declared LOCAL. • 2. LOCAL directive must be right after the MACRO directive. • 3. The LOCAL directive can be used to declare all names and labels at once.

  17. 4.3: WHAT IS A MACRO, AND HOW IS IT USED?LOCAL directive and its use in macros • In example 4-7, the "BACK" label is defined as LOCAL right after the MACRO directive.

  18. 4.3: WHAT IS A MACRO, AND HOW IS IT USED?INCLUDE directive • The INCLUDE directive allows a programmer to write macros, save them in a file, and later bring them into any file. • Used to bring this file into any ".asm" file, to allowthe program can call any of the macros as needed. • See Program 4 -7 on pages 155-157. • In the list file of Program 4-7, the letter "C" in frontof the lines indicates that they are copied from another file and included in the present file.

  19. Dec Hex Bin 4 4 00000100 ENDS ; FOUR

  20. Dec Hex Bin 5 5 00000101 ORG ; FIVE Keyboardand Mouse Programming

  21. 5.1: INT 16H KEYBOARD PROGRAMMING • The original IBM PC keyboard had 83 keys, in three major groupings: • 1. The standard typewriter keys. • 2. Ten function keys, F1 to F10. • 3. 15-key keypad. • In later years, 101 key enhanced keyboards have become popular.

  22. See the scan code tables on pages 162 - 163 of your textbook. 5.1: INT 16H KEYBOARD PROGRAMMINGkeyboard scan codes • Each key is associated with a scan code.

  23. When a key is pressed, the OS stores its scan code in memory locations called a keyboard buffer, located inthe BIOS data area. 5.1: INT 16H KEYBOARD PROGRAMMING • The same scan code is used for a given lowercase letter and its capital, and all keys with dual labels. • The keyboard shift status byte distinguishes the keys. • Some INT 16H function calls provide the status byte in AL. • For keyboard-motherboard, interaction IBM has provided INT 16H.

  24. 5.1: INT 16H KEYBOARD PROGRAMMING checking a key press • For a program to run tasks continuously while checking for a keypress requires use of INT 16H. • A BIOS interrupt used exclusively for the keyboard. • To check a keypress, use INT 16H function AH = 01. • If ZF = 0, there is a key press. • If ZF = 1, there is no key press. • This function does not wait for the user to press a key—it simply checks to see if there is a key press. • If a character is available, it returns the scan codein AH, and the ASCII code in AL.

  25. To stop the bell sound, the user must press any key. 5.1: INT 16H KEYBOARD PROGRAMMING checking a key press • Program 5-1 sends the ASCII bell character, 07 hex to the screen continuously.

  26. 5.1: INT 16H KEYBOARD PROGRAMMINGwhich key is pressed? • INT 16H AH = 0 determines the key pressed. • This function must be used immediately after AH = 01. • AH = 0 doesn’t return until a key is pressed. • AH = 1 comes back whether or not a key has been pressed. • AL contains the ASCII character of the pressed key. • The scan key is in AH. • For characters such as F1–F10 for which there is no ASCII code, the scan code is in AH and AL = 0. • Thus, if AL = 0, a special function key was pressed.

  27. To stop the bell sound, the user must press a specific key. Test for the correct keypress to stop the bell 5.1: INT 16H KEYBOARD PROGRAMMINGwhich key is pressed?

  28. 5.1: INT 16H KEYBOARD PROGRAMMINGother INT 16H functions • INT 16H, AH = 10H(read a character) - the same as AH = 0, exceptthat it also accepts the additional keys on the IBM extended (enhanced) keyboard. • INT 16H, AH = 11H(find if a character is available) - the same asAH = 1, except that it also accepts the additionalkeys on the IBM extended (enhanced) keyboard.

  29. 5.2: MOUSE PROGRAMMING WITH INT 33H detecting the presence of a mouse • Because the original IBM PC & DOS did not provide support for the mouse, interrupt INT 33H is not part of BIOS or DOS. • INT 33H is part of the mouse driver software installedwhen the PC is booted. • The first task of any INT 33H program should be to verify the presence of a mouse and the number of buttons it supports, using INT 33H function AX = 0. • On return from INT 33H, if AX = 0, no mouse is supported. • If AX = FFFFH, the mouse is supported and the numberof mouse buttons will be contained in register BX.

  30. Do not forget the"H“, indicating hex. If absent, the compilerassumes it is decimal& executes INT 21H. (33 decimal = 21H) 5.2: MOUSE PROGRAMMING WITH INT 33H detecting the presence of a mouse • Although most mice have two buttons, right and left, there are some with middle buttons as well. • In INT 21H & INT 10H, register AH is used to select functions —not the case in INT 33H. • AL is used to select various functions and AH is set to 0. • The reason for "MOV AX,0".

  31. 5.2: MOUSE PROGRAMMING WITH INT 33H some mouse terminology • The mouse pointer (or cursor) is the pointer on the screen indicating where the mouse is pointing at a given time. • In graphics mode it is an arrow. • In text mode, a flashing block. • As the mouse is moved, the mouse cursor is moved.

  32. 5.2: MOUSE PROGRAMMING WITH INT 33H some mouse terminology • While movement of the mouse is measured in inches (or centimeters), movement of the mouse cursor on the screen is measured in units called mickeys. • Mickey units indicate mouse sensitivity. • A mouse that can move the cursor 200 units forevery inch of mouse movement has a sensitivityof 200 mickeys. • In this case, one mickey represents 1/200 of an inchon the screen. • Some mice have a sensitivity of 400 mickeys in contrastto the commonly used 200 mickeys.

  33. 5.2: MOUSE PROGRAMMING WITH INT 33H displaying and hiding the mouse cursor • The AX = 01 function of INT 33H is used to display the mouse cursor. • If the video mode is graphics, the mouse arrow is visible. • If the video mode is text, a rectangular block representing the mouse cursor becomes visible. • The color of the mouse cursor block is the opposite ofthe background color in order to be visible. • To hide the mouse cursor after making it visible, execute option AX = 02 of INT 33H.

  34. 5.2: MOUSE PROGRAMMING WITH INT 33H video resolution vs. mouse resolution • When the video mode is set to text mode, the mouse will automatically adopt the same resolution of 640 × 200 for its horizontal/vertical coordinates. • When a program gets the mouse cursor position, values are provided in pixels and must be divided by 8. • To get position in terms of character locations 0 to 79 (horizontal) and 0 to 24 (vertical) on the screen.

  35. The mouse also adopts these graphics resolutions. 5.2: MOUSE PROGRAMMING WITH INT 33H video resolution vs. mouse resolution • In graphics modes, resolution is 640 × 200, 640 × 350 and 640 × 480.

  36. 5.2: MOUSE PROGRAMMING WITH INT 33H getting the current mouse cursor position • Option AX = 03 of INT 33H gets the current position of the mouse cursor. • On return, the X & Y coordinates are in registersCX (horizontal) and DX (vertical). • BX contains the button status, 1 if down, 0 if up. • D0 = left button; D1 = right button; D2 = center button. • The cursor position is given in pixels. • To get the mouse cursor character position, dividethe horizontal and vertical values of CX & DX by 8. • See Programs 5-3 & 5-4 on pages 168 - 171of your textbook.

  37. 5.2: MOUSE PROGRAMMING WITH INT 33H setting the mouse pointer position • INT 33H option AX = 04 allows a program to setthe mouse pointer to a new location anywhereon the screen. • Coordinates for the new location must be placed inCX for the horizontal (x coordinate) and DX for thevertical (y coordinate). • Values must be in pixels. • In the range of 0–639 & 0–199 for 640 × 200 resolution. • Coordinate (0,0) is the upper left corner of the screen.

  38. Program 5-4 on pages 170 - 171 of your textbook shows one way to use this function. 5.2: MOUSE PROGRAMMING WITH INT 33H getting mouse button press information • INT 33H option AX = 05 is used to get information about specific button presses since the last call to this function.

  39. 5.2: MOUSE PROGRAMMING WITH INT 33H the button press count program • Program 5-5 on pages 172 - 173 uses the AX = 05 function to monitor the number of times the left button is pressed and then displays the count. • It prompts the user to press the left button a numberof times. • When the user is ready to see how many times the buttonwas pressed, any key can be pressed.

  40. Dec Hex Bin 5 5 00000101 ENDS ; FIVE

More Related