EXAMPLE 7-17
.586
model flat, C
.data
table db 2,1,4,8,4,10,3,4
db 1,0,4,2,3,6,4,0
db 2,0,4,7,3,5,4,4
db 2,3,2,2,3,7,4,6
db 4,13,3,2,3,0,1,1
db 3,1,4,1,1,3,3,4,9
db 4,11,4,12
: ABCD
: EPGH
: IJKL
: MNOP
: QRST
: UVWX
: YZ
.code
Public Scan
Public Look
Scan proc uses ebx, \
char: dword
mov ebx, char
.if bl >= 'a' && bl <= 'z'
sub bl, 20h
.endif
sub bl, 41h
add bl, bl
add ebx, offset table
mov ax, word ptr[ebx]
ret
Scan endp
Look proc uses ebx ecx, \
numb:dword, \
pntr:ptr
mov ebx, pntr
mov eax, numb
mov ecx, 0
mov cl, al
.repeat
shr ah, 1
.if carry?
mov byte ptr[ebx], '_'
.else
mov byte ptr[ebx], '.'
.endif
inc ebx
.untilcxz
mov byte ptr[ebx], 0
ret
Look endp
end