高分求汇编语言两个程序合并成一个,一个是另一个的子程序
;试试看:
assume cs:code, ds:data
data segment
msg1 db 'Before sort:$'
crlf db 0dh, 0ah, '$'
msg2 db 'After sort :$'
;----------------------------------
BUFSIZE DB 50 ;最多可键入50个字符.
ACTLEN DB ? ;实际键入的字符数.
CHARS DB 50 DUP(20H) ;实际键入的字符从此开始存放.
data ends
;-------------------------
code segment
start:
mov ax, data
mov ds, ax
mov dx, offset msg1
mov ah, 9
int 21h
MOV DX, OFFSET BUFSIZE ;键入缓冲区起始偏移地址送DX
MOV AH, 0AH
INT 21H ;输入字符串并送入缓冲区.
XOR CX, CX
MOV CL, ACTLEN ;取得输入的字符数.
MOV DX, OFFSET CHARS ;输入的字符串起始地址送DX
MOV BX, DX ;将字符串首地址送BX
ADD BX, CX ;取到字符串尾地址.
MOV BYTE PTR [BX], '$' ;在字符串尾插$
; MOV AH, 09H ;字符串显示功能.
; INT 21H ;显示键入的字符串.
ok:
mov dx, offset crlf
mov ah, 9
int 21h
mov dx, offset msg2
mov ah, 9
int 21h
;-----------------------
MOV CX, 15
mov si, offset CHARS
s:
push cx
mov di, si
inc di
s1:
mov al, [si]
cmp al, [di]
jb jx
xchg al, [di]
mov [si], al
jx:
inc di
loop s1
inc si
pop cx
loop s
;-----------------------
mov byte ptr [si+1], 24h
mov dx, offset CHARS
mov ah, 9
int 21h
mov ah, 4ch
int 21h
code ends
end start