Top Banner
The x86 PC Assembly Language, Design, and Interfacing By Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey © 2010, 2003, 2000, 1998 Pearson Higher Education, Inc. Pearson Prentice Hall - Upper Saddle River, NJ 07458 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. • 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.
40

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

Dec 30, 2015

Download

Documents

kyra-rogers

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. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 4.2: DOS INTERRUPT 21H Option 0AH inputting a data string from the keyboard

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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)

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

CR is not included in the count.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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 entered

and provides the character in AL.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

4.2: DOS INTERRUPT 21H using LABEL to define a string buffer• Use this directive to define a buffer area for the

string keyboard input:

• In the code segment the data can be accessed by name as follows:

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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:

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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 (+).

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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 allow

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

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

ENDS ; FOURDec Hex Bin4 4 00000100

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

ORG ; FIVEDec Hex Bin5 5 00000101

Keyboardand Mouse Programming

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

5.1: INT 16H KEYBOARD PROGRAMMINGkeyboard scan codes

See the scan code tables on pages 162 - 163 of your textbook.

• Each key is associated with a scan code.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

When a key is pressed, the OS stores its scan code in memory locations called a keyboard buffer, located inthe BIOS data area.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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 code

in AH, and the ASCII code in AL.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

5.1: INT 16H KEYBOARD PROGRAMMING checking a key press

• Program 5-1 sends the ASCII bell character, 07 hex to the screen continuously.

To stop the bell sound, the user must press any key.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

5.1: INT 16H KEYBOARD PROGRAMMINGwhich key is pressed?

To stop the bell sound, the user must press a specific key.

Test for the correct keypress to stop the bell

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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 installed

when 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 number

of mouse buttons will be contained in register BX.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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,0MOV AX,0".

Do not forget the"H“, indicating hex.

If absent, the compilerassumes it is decimal& executes INT 21H.

(33 decimal = 21H)

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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 inch

on the screen. – Some mice have a sensitivity of 400 mickeys in contrast

to the commonly used 200 mickeys.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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 of

the background color in order to be visible.

• To hide the mouse cursor after making it visible, execute option AX = 02 of INT 33H.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

5.2: MOUSE PROGRAMMING WITH INT 33H video resolution vs. mouse resolution

• In graphics modes, resolution is 640 × 200, 640 × 350 and 640 × 480.

The mouse also adopts these graphics resolutions.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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 registers

CX (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, divide

the horizontal and vertical values of CX & DX by 8. • See Programs 5-3 & 5-4 on pages 168 - 171

of your textbook.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

5.2: MOUSE PROGRAMMING WITH INT 33H setting the mouse pointer position • INT 33H option AX = 04 allows a program to set

the mouse pointer to a new location anywhereon the screen. – Coordinates for the new location must be placed in

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

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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.

Program 5-4 on pages 170 - 171 of your textbook shows one way to use this function.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

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 number

of times. • When the user is ready to see how many times the button

was pressed, any key can be pressed.

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

The x86 PCAssembly Language, Design, and InterfacingBy Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey

© 2010, 2003, 2000, 1998 Pearson Higher Education, Inc.Pearson Prentice Hall - Upper Saddle River, NJ 07458

ENDS ; FIVEDec Hex Bin5 5 00000101