```;This program converts three ASCII decimal nums into a single byte 0-255
;
;Input loc 400h-401h-402h
;Output location 403h
;Second output location 404h - 405 - 406 recreated decimal ascii using
;  location 403h as input
mov     al, byte ptr 400h       ;grab 100s digit
sub     al, '0'                 ;de-ascii-fy it  '0' ->0  or '9' -> 9
;mult result by 10.  Later, it will be multiplied by 10 again, resulting in * 100
add     al, al                  ;mult by 2
mov     bl, al                  ;hold result
add     bl, bl                  ;original digit * 8
add     bl, al                  ;original digit * 10
;do the same for second digit (10s)

mov     al, byte ptr 401h       ;grab 10s
sub     al, '0'                 ;de ascii fy
add     al, bl                  ;add 100s digit (*10)plus tens digit
; multiply two digits by 10
add     al, al                  ;times 2
mov     bl, al
add     bl, bl                  ;times 8
add     bl, al                  ;100 * digit1 + 10 * digit2

; get the 1s digit
mov     al, byte ptr 402h       ;get 1s digit
sub     al, '0'                 ;convert from ascii
add     al, bl                  ;the converted number
mov     byte ptr 403h, al       ;whew!

;Now, reverse the process, using 403h as the input
mov     dh, byte ptr 403h       ; bring it back in
mov     cl, '0'                 ;start counter at ascii zero
hun:    cmp     dh,  100
jb      tens
sub     dh, 100
add     cl, 1                   ;cut 100 off and count it!
jmp     hun
tens:   mov     byte ptr 404h, cl       ;move out 100s answer
mov     cl, '0'                 ;count of 10s in ascii
tenlp:  cmp     dh, 10
jb      ones
sub     dh, 10
add     cl, 1                   ;cut 10off and count it!
jmp     tenlp
ones:   mov     byte ptr 405h, cl       ;move out 10s answer
add     dh, '0'                 ;asciify 1s
mov     byte ptr 406h, dh       ;move out 1s answer

int     20h
end

```