Presentation is loading. Please wait.

Presentation is loading. Please wait.

Binary Number Output To display a number in binary format, a program looks at each bit in the number and sends the ASCII equivalent of a ‘1’ (31h) or a.

Similar presentations


Presentation on theme: "Binary Number Output To display a number in binary format, a program looks at each bit in the number and sends the ASCII equivalent of a ‘1’ (31h) or a."— Presentation transcript:

1 Binary Number Output To display a number in binary format, a program looks at each bit in the number and sends the ASCII equivalent of a ‘1’ (31h) or a ‘0’ (30h) to the screen using the DOS single character Int 21h function 2. –The 8-bit value E6h (1110 0110) would have 31h,31h,31h,30h,30h,31h,31h,30h

2 Hex Number Output To display the 8-bit value E6h as a HEX number, the ASCII codes for ‘E’(45h) and ‘6’(36h) would be sent using Int 21h, function 2.

3 Procedure to Display Hex Digit Input: AL Clear upper 4-bits of AL (should only have values 0-F) Check AL for 0-9 (CMP AL,9) – (Add AL,30h if 0-9) Must be Char if above 9 –(Add AL, 37h if char; 37h + 10d = 41h(‘A’)) Use Int21h, function 2 to display char (DL holds char)

4 Procedure to Display 1 Hex Digit Input: AL Out1hexproc Andal,0fh ;only want lower 4 bits of AL Cmpal,9 ;is 4 bit value above 9? Jaischar Addal,30h ;convert to ascii digit '0' to '9' Jmpprintit Ischar:addal,37h ;convert to ascii digit 'A' to 'F' Printit:Movdl,al Movah,2 Int21h ;print it using DOS single char output Ret Out1hexendp

5 Procedure for CRLF Use Int 21h, function 2 to display ASCII values for CR (0Dh), LF (0Ah). Pcrlfproc;print carriage return/line feed Movdl,0Dh;carriage return Movah,2;function # goes into AH Int21h;print it Movdl,0Ah;line feed Movah,2;function # Int21h Ret Pcrlfendp

6 Irvine Library Procedures Writeint – writes an unsigned 16-bit integer to standard output in ASCII binary, decimal, octal, or hexadecimal format. Input: AX=integer, BX=radix(2,8,10,or 16) Writeint_signed – writes a 16-bit integer to standard output in signed decimal ASCII format. Input: AX=integer.

7 Irvine Library Procedures Writelong - writes an unsigned 32-bit integer to standard output in ASCII binary, decimal, octal, or hexadecimal format. Input: EAX=integer, BX=radix(2,8,10,or 16) Writebcd – writes an 8-bit binary coded decimal byte to standard output. Input: AL=byte. Crlf – Writes a carriage return and line feed to standard output.

8 Irvine Library Procedures Clrscr – Clears the screen and locates the cursor at the upper left corner. No input. Works only on video page 0, and only in text mode. Writestring – Writes a null terminated string to standard output. Input: DX points to the string. Readint – Reads a signed ASCII decimal string from standard input and stores it as a 16-bit binary integer. Input: none. Output: AX contains the value.

9 Changing Model Size Using a small model size requires that procedures must be within the code segment (within 256 bytes). Therefore only the offset address is needed in the call instruction. Using a Medium model size allows larger differences in placement of procedures. Therefore the value of CS must also be saved when going to the procedure. CS and IP are both pushed onto the stack.

10 Lab6A- Question C Writing 16 different characters (0-F) as a most significant digit and 16 different characters as a least significant digit results in a total of 256 different values. Want to have two loops with the inner loop changing the LSD and the outer loop changing the MSD. Can use a shr instruction to get upper 4 bits into lower 4 bits.

11 Lab 6B – Using Irvine Library Procedures to Display Integers in Different Bases Writeint uses BX to determine desired radix. –BX=2 ;display in binary –BX=8 ;display in octal –BX=10 ;display in decimal –BX=16 ;display in hex –AX=integer Writeint_signed displays signed 16-bit value as a signed decimal ASCII format.

12 More on Lab6B – Irvine Libraries Note that with Writestring, strings can finally be null-terminated. (much more common than DOS ‘$’) What is maximum value that can be represented with 16 bits using 2’s complement format (2 16 = ?)

13 More on Lab6B – Irvine Libraries What directive is needed to access the Irvine libraries? –Extrn Clrscr:proc, Crlf:proc, Readint:proc When linking must have complete path of irvine libraries unless the irvine.lib is the current directory.

14 Unsigned Decimal Number Output To display the 8-bit value E6h as an unsigned decimal number, first a conversion must occur. –E6h = (14*16)+6=230(decimal) The ASCII codes for ‘2’(32h), ‘3’(33h), ‘0’(30h) would be sent using Int21h, function 2.

15 Signed Decimal Number Output To display the 8-bit value E6h as a signed decimal number (2s complement representation), first a conversion must occur. –E6h = 11100110b = -1Ah= -26(decimal) The ASCII codes for ‘-’(2Dh),‘2’(32h), ‘6’(36h), would be sent using Int21h, function 2.

16 Lab6C – Number Input Uses Irvine library procedure to Writestring to output. Uses Readstring to read in data as a string Readstring – Reads a string of characters from standard output and stores them in a null terminated string. Input: DX=string pointer. CX= maximum string count. Output: AX=number of characters typed.

17 Lab 6C- What to do? Call to dec2hex has BX pointing to ASCII string. Expects converted results in AX. Each string is 2 bytes long (excluding null char). First byte is ASCII representation of MSD. Second byte is LSD.

18 Procedure for Lab6C-Question 4 Subtract 30h to convert from ASCII to decimal. Multiply by 10. Save value Put LSD in AL. Subtract 30h to convert Add value to 10s value.


Download ppt "Binary Number Output To display a number in binary format, a program looks at each bit in the number and sends the ASCII equivalent of a ‘1’ (31h) or a."

Similar presentations


Ads by Google