⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sort.asm

📁 汇编语言实现对任意多个数字进行排序
💻 ASM
字号:
data segment
a	dw     20 dup(?)
string1	db     'please input integer,separated by semicolon,end with space:$'
string2	db     'the following is the list of numbers in right order:$'
num     dw     ?
data ends

stack1 segment
	dw     20h    dup(?)
stack1 ends
;**********************************************
code segment
     assume cs:code,ds:data,ss:stack1
start:
    mov ax,data
    mov ds,ax
    lea si,a
    mov bx,0
    mov cx,0

    lea dx,string1;输出提示语句
    mov ah,9h
    int 21h
    mov dl,13;回车
    mov ah,2
    int 21h
    mov dl,10;换行
    mov ah,2
    int 21h

;----------------------------------------------	

input:
    mov ah,1h;输入数据	eg:12;23;(任意键结束)		
    int 21h
    cbw
    sub ax,30h
    cmp ax,0
    jb  error
    cmp ax,9
    ja  error
    xchg bx,ax
    mov dx,10
    mul dx
    xchg bx,ax
    add  bx,ax
    jmp input
error: 
    mov dx,ax
    add dx,30h
    cmp dx,003bh
    jnz end_input
    mov [si],bx
    mov bx,0 
    add si,2
    inc cx
    mov num,cx
    jmp input  
;-------------------------------------------------
;开始排序
end_input:       
    mov bx,0
    dec cx
    jz  end_order
    push cx
    lea di,a
lp1:
    mov ax,[di]
    cmp ax,[di+2]
    jae lp2
    xchg ax,[di+2]
    mov [di],ax
    mov bx,1
lp2:
    add di,2
    loop lp1
    pop cx
    cmp bx,1
    jz  end_input
;------------------------------------------------- 
;输出部分
end_order: 
    mov dl,13;回车
    mov ah,2
    int 21h
    mov dl,10;换行
    mov ah,2
    int 21h           
    lea dx,string2;输出提示语
    mov ah,9h
    int 21h
    mov dl,13;回车
    mov ah,2
    int 21h
    mov dl,10;换行
    mov ah,2
    int 21h
    lea si,a
    mov cx,num  
begain:
    push cx
    mov ax,[si]
    mov cx,0
continue: ;将数据的各位数字从高到低依次进栈
    inc cx            
    mov bl,10
    div bl
    mov bl,al;保护al
    add ah,30h
    mov al,ah
    cbw
    push ax
    mov al,bl;还原al
    mov ah,0
    cmp al,0
    jnz continue
output: ;将数据的各位数字从高到低依次出栈
    pop dx
    mov ah,2h
    int 21h
    loop output
    jnz output
    mov dl,';';每个数据输出时用';'隔开
    mov ah,2h
    int 21h
    add si,2
    pop cx
    loop begain
    mov ah,4ch
    int 21h
code ends
     end start

    
    
    

    
    
   
   
   
  








    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -