一个字符串排序的程序,请帮忙对应每一个语句,说明是什么意思,急用,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:47:35
程序如下:

多谢了。。

stack segment stack
dw 100 dup(0)
stack ends
data segment
str db 100 dup(?)
data ends
code segment
assume cs:code,ds:data,ss:stack
main proc far
mov ax,data
mov ds,ax
mov si,offset str
mov bx,0
next: mov ah,1
int 21h
mov [si],al
inc si
inc bx
cmp al,0dh
je sort
jmp next
sort: sub bx,1
mov [si],byte ptr'$'
next0: mov cx,bx
mov si,offset str
next2: mov al,[si]
cmp al,[si+1]
jbe next1
xchg al,[si+1]
mov [si],al
next1: inc si
loop next2
dec bx
jnz next0
mov dx,offset str
mov ah,9
int 21h
mov ah,4ch
int 21h

main endp
code ends
end main

stack segment stack
dw 100 dup(0)
stack ends ;堆栈段
data segment
str db 100 dup(?)
data ends ;代码段定义一100字节的str字符串
code segment
assume cs:code,ds:data,ss:stack ;各段与段寄存器的关系
main proc far
mov ax,data
mov ds,ax ;将data段地址给ds
mov si,offset str ;将字符串str的偏移地址给si
mov bx,0 ;将bx清零
next: mov ah,1
int 21h
mov [si],al ;输入一个字符给字符串
inc si ;将si加1
inc bx ;将bx加1
cmp al,0dh ;将al与13(回车)比较
je sort ;相等时跳转到sort
jmp next ;不相等跳转到next
sort: sub bx,1 ;bx减1
mov [si],byte ptr'$' ;将字节型$移到si所指位置
next0: mov cx,bx ;将bx内容送给cx
mov si,of