home *** CD-ROM | disk | FTP | other *** search
- ;
- ; *** Listing 9-25 ***
- ;
- ; Performs binary-to-ASCII conversion of a byte value
- ; by using DIV.
- ;
- jmp Skip
- ;
- ResultString db 3 dup (?)
- ResultStringEnd label byte
- db 0 ;a zero to mark the string end
- ;
- Skip:
- BYTE_VALUE=0
- call ZTimerOn
- rept 100
- mov cx,(10 shl 8)+'0'
- ;CL='0', used for converting to ASCII
- ; CH=10, used for dividing by 10
- mov di,offset ResultString
- mov al,BYTE_VALUE
- sub ah,ah ;prepare 16-bit dividend
- div ch ;put least significant decimal
- ; digit of BYTE_VALUE in AH,
- ; other digits in AL
- add ah,cl ;make it an ASCII digit
- mov [di+2],ah ;save least significant digit
- sub ah,ah ;prepare 16-bit dividend
- div ch ;put middle decimal digit in AL
- add ah,cl ;make it an ASCII digit
- mov [di+1],ah ;save middle ASCII decimal digit
- ;most significant decimal
- ; digit is in AL
- add al,cl ;make it an ASCII digit
- mov [di],al ;save most significant digit
- BYTE_VALUE=BYTE_VALUE+1
- endm
- call ZTimerOff