sub512a
;--子程序文件--;
ALdisp PROC
;---------------
; 功能: 以十辣进制输出AL寄存器的值
; 参数: 无
; 返回: 无
;--------------;
push ax
push dx
push cx
push ax
mov dl,al
mov cl,4
shr dl,cl
or dl,30h
cmp dl,39h
jbe ALDISP1
add dl,7
ALDISP1:
mov ah,2
int 21h
pop dx
and dl,0fh
or dl,30h
cmp dl,39h
jbe ALDISP2
add dl,7
ALDISP2:
mov ah,2
int 21h
pop cx
pop dx
pop ax
ret
ALdisp ENDP
;--------------;
sorting PROC
;---------------
; 功能: 冒泡法排序
; 参数: bx:缓冲区起始偏移地址
; cx:缓冲区大小
; 返回: 无
;--------------;
cmp cx,0
je SORTEND
cmp cx,1
je SORTEND
push ax
push dx
push si
mov si,bx
dec cx
OUTLP:
mov dx,cx
mov bx,si
INLP:
mov al,[bx]
cmp al,[bx+1]
jna NEXT
xchg al,[bx+1]
mov [bx],al
NEXT:
inc bx
dec dx
jnz INLP
loop OUTLP
pop si
pop dx
pop ax
SORTEND:
ret
sorting ENDP
;--------------;
convert macro
local INPUT21,INPUT22,INPUT24,INPUT25
cmp dl,0
je INPUT25
cmp dl,'9'
jbe INPUT21
sub dl,7
INPUT21:
and dl,0fh
cmp dh,0
je INPUT24
cmp dh,'9'
jbe INPUT22
sub dh,7
INPUT22:
push cx
mov cl,4
shl dh,cl
pop cx
or dl,dh
INPUT24:
mov [bx],dl
inc bx
inc cx
INPUT25:
convert ENDM
;--------------;
input PROC
;---------------
; 功能: 输入
; 参数: bx:缓冲区起始偏移地址
; 返回: 无
;--------------;
push ax
push dx
xor cx,cx
INPUT01:
xor dx,dx
INPUT02:
mov ah,1
int 21h
INPUT10:
cmp al,0dh
je INPUT30
cmp al,' '
je INPUT20
cmp al,','
je INPUT20
cmp al,08h
je INPUT17
cmp al,'0'
jb INPUT17
cmp al,'f'
ja INPUT17
cmp al,'a'
jb INPUT11
sub al,20h
jmp INPUT12
INPUT11:
cmp al,'F'
ja INPUT17
cmp al,'A'
jae INPUT12
cmp al,'9'
ja INPUT17
INPUT12:
cmp dl,0
jne INPUT13
mov dl,al
jmp INPUT02
INPUT13:
cmp dh,0
jne INPUT17
mov dh,dl
mov dl,al
jmp INPUT02
INPUT17:
mov dl,7
mov ah,2
int 21h
mov dl,'?'
mov ah,2
int 21h
jmp INPUT01
INPUT20:
convert
jmp INPUT01
INPUT30:
convert
pop dx
pop ax
ret
input ENDP