打表法:
DATAS SEGMENT
array db 01H,25H,38H,62H,8DH,9AH,0BAH,0CEH
ascii db 30h,31h,32h,33h,34h,35h,36h,37h
db 38h,39h,41h,42h,43h,44h,45h,46h
n dw 8
x dw 0
y db 0
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov cx,n
A:mov n,cx
mov bx,x
mov dl,array[bx]
inc bx
mov x,bx
call output
mov cx,n
cmp cx,1
je finish
mov dl,','
mov ah,2
int 21h
loop A
finish:
MOV AH,4CH
INT 21H
output proc near
mov y,dl
mov cl,4
shr dl,cl
mov bx,offset ascii
mov al,dl
and al,0fh
xlat
mov dl,al
mov ah,2
int 21h
mov al,y
and al,0fh
xlat
mov dl,al
mov ah,2
int 21h
mov dl,'H'
mov ah,2
int 21h
ret
output endp
CODES ENDS
END START
直接法:
DATAS SEGMENT
array db 01H,25H,38H,62H,8DH,9AH,0BAH,0CEH
n dw 8
x dw 0
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov cx,n
A:mov n,cx
mov bx,x
mov dl,array[bx]
inc bx
mov x,bx
call output
mov cx,n
cmp cx,1
je finish
mov dl,','
mov ah,2
int 21h
loop A
finish:
MOV AH,4CH
INT 21H
output proc near
mov bl,dl
mov cl,4
shr dl,cl
or dl,30h
cmp dl,39h
jna a1
add dl,7
a1:mov ah,2
int 21h
mov dl,bl
and dl,0fh
or dl,30h
cmp dl,39h
jna a2
add dl,7
a2:mov ah,2
int 21h
mov dl,'H'
mov ah,2
int 21h
ret
output endp
CODES ENDS
END START