UMBC CMSC 211 |
INCLUDE | PCMAC.INC | ||
; | |||
.MODEL | SMALL | ||
.CODE | |||
; | |||
PUBLIC | PutHex16 | ||
; | |||
; | |||
push | ax | ; Work Register | |
push | bx | ; Used to save AX | |
push | cx | ; Used for shift counter | |
push | dx | ; Used by _PutCh | |
; | |||
mov | cl, 12 | ; current right shift amount | |
mov | bx, ax | ; preserve for later use | |
; | |||
Hexloop: | |||
mov | ax, bx; | ; Get next digit into position ... | |
shr | ax, cl | ; ... (shifting by zero works!) | |
and | al, 00fh | ; ... and clear other bits | |
cmp | al, 10 | ; Convert digit to ASCII character | |
jl | DecDigit | ||
add | al, 'A' - 10 | ; 10 ==> 'A', 11 ==> 'B', etc. | |
jmp | PutCh | ||
DecDigit: | |||
add | al, '0' | ||
PutCh: | |||
_PutCh | al | ||
jge | HexLoop | ||
; | |||
pop | dx | ; Restore registers | |
pop | cx | ||
pop | bx | ||
pop | ax | ||
; | |||
ret | |||
PutHex16 | ENDP | ||
END |
INCLUDE | PCMAC.INC | ||
.MODEL | SMALL | ||
.CODE | |||
; | |||
PUBLIC | PutHex16a | ||
PUBLIC | PutHex8 | ||
; | |||
PutHex16a | PROC | ||
; | |||
push | ax | ||
push | cx | ||
mov | cl, 8 | ||
shr | ax, cl | ; get the high bits -- could have | |
; used mov al, ah | |||
call | PutHex8 | ||
pop | cx | ||
pop | ax | ||
; | |||
push | ax | ; This is a save version! | |
and | ax, 00FFh | ||
call | PutHex8 | ||
pop | ax | ||
; | |||
ret | |||
PutHex16a | ENDP | ||
; | |||
PutHex8 | PROC | ||
; | |||
push | ax | ; Work Register | |
push | bx | ; Output Register | |
push | cx | ; Used for shift counter | |
push | dx | ; Used by _PutCh | |
; | |||
;split byte into two nybbles and align | |||
mov | ah, al | ||
mov | cl, 4 | ||
shr | ah, cl | ||
and | al, 0Fh | ||
;Check for values greater than 9 | |||
cmp | ah, 9 | ||
jbe | hiOK | ||
add | ah, 7 | ||
hiOK: | |||
cmp | al, 9 | ||
jbe | loOK | ||
add | al, 7 | ||
loOK: | |||
; | |||
;Convert to print characters | |||
add | ax, '00' | ; convert binary to ASCI binary to ASCII | |
; | |||
mov | bx, ax | ||
_PutCh | bh, bl | ||
; | |||
pop | dx | ; Restore registers | |
pop | cx | ||
pop | bx | ||
pop | ax | ||
; | |||
ret | |||
PutHex8 | ENDP | ||
END |