;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ CODEMAIN SEGMENT ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Convert String to Uppercase ; ;Desc: ; Changes all alphas to uppercase characters ;In: ; SI-> ASCIIZ String ;Out: ; nothing ;Destroys: ; SI Str2Up PROCDESC NEAR ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Print Number in Hexidecimal ; ;Desc: ; Prints a number on the screen in hexidecimal. There are two types of procedures: ; Normal - Prints the number with the minimum needed characters. Adds a leading zero, if the ; first significant digit is an alpha. ; Absolute - Prints the hex number as is, performing no checking for leading zeros. ; ; Any notation pre/proceeding the number to denote hex must be added by the calling program. ;In: ; ES:DI -> Location on screen ; EDX/DX/DL = Number to convert ;Out: ; DI = Character after number ;Destroys: ; AL,(E)BX ;Name Number Bit ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ ÄÄÄ D2Hex PROCDESC NEAR ;DWord 32 D2HexA PROCDESC NEAR ;DWord 32 W2Hex PROCDESC NEAR ;Word 16 W2HexA PROCDESC NEAR ;Word 16 B2Hex PROCDESC NEAR ;Byte 8 B2HexA PROCDESC NEAR ;Byte 8 ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Print Number in Decimal ; ;Desc: ; Prints a number on the screen in decimal ;In: ; ES:DI -> Location on screen ; EAX/AX/AL = Number to convert ;Out: ; DI = Character after number ;Destroys: ; 32-bit: ; EAX,EBX,EDX=0 ; 16-bit: ; AX,BX,DX=0 ; 8-bit: ; AX ;Name Number Bit Signed ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄ ÄÄÄ ÄÄÄÄÄÄ L2Dec PROCDESC NEAR ;Long int 32 yes D2Dec PROCDESC NEAR ;Double 32 no I2Dec PROCDESC NEAR ;Integer 16 yes W2Dec PROCDESC NEAR ;Word 16 no S2Dec PROCDESC NEAR ;Short int 8 yes B2Dec PROCDESC NEAR ;Byte 8 no ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Read String Input from Keyboard ; ;Desc: ; Reads characters from the keyboard and stores them in a string or edits an existing string. ;In: ; Len = Maximum length of string ; SI -> ASCIIZ string (If reading a new string, the first character must be a 0) ; ES:DI-> Location of first character on screen ;Out: ; CX = Length ; If a string reaches the maximum length, a null is not added to the end ;Destroys: ; AX,BX,DX,SI,DI ReadStr PROCDESC C NEAR Len:Word ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Read Integer Input from Keyboard ; ;Desc: ; Reads characters from the keyboard and converts them to a number or edits an existing number. ;In: ; Len = Maximum length of number (in digits) ; EAX = Current number ; DI -> Location of first character on screen ;Out: ; EAX = Number ; CF = User abort or no number entered (EAX remains unchanged) ;Destroys: ; nothing ReadInt PROCDESC C NEAR Len:Word ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Read Hexidecimal Input from Keyboard ; ;Desc: ; Reads an absolute hex value ; Number must already be printed on the screen ;In: ; Len = Length of number (in digits) ; ES:DI-> Location of first character on screen ;Out: ; EAX = Number ; CF = User abort or no number entered (EAX remains unchanged) ;Destroys: ; Nothing ReadHex PROCDESC C NEAR Len:Word CODEMAIN ENDS