欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

编译语言实验多个字符串排序

更新时间: 2014-01-05 03:17:43 责任编辑: Author_N1

 

汇编语言实验多个字符串排序
题目要求是:编写程序实现输入10个学生的姓名存放在变量student_name,按升序排列姓名,并输出到屏幕。
下面是我写的程序,但是运行后会显示乱码,求帮助!!!(本人新生,求高手指教)

date segment
    student_name    db 'dfese$'
                    db 'apryu$'
                    db 'hfteu$'
                    db 'kyutr$'
                    db 'sarmk$'
                    db 'kluiy$'
                    db 'dgrhy$'
                    db 'vdbni$'
                    db 'luydg$'
                    db 'hkaer$'
date ends
;stacks segment
;    db 20 dup(?)
;    tos label bytle
;stacks ends
code segment
    assume    ds:date,cs:code,es:date
start:
    mov ax,date
    mov ds,ax
    mov es,ax

    
    mov cx,10    ;定义最外层循环变量为10
loop1:
    mov bp,cx    ;给CX做备?
    mov bx,0    ;初始化bx
loop2:
    mov al,student_name[bx]
    cmp al,student_name[bx+1*6]        ;目前只能对每个字符串的第一个元素进行比较
    ja change

continue:
    add bx,6
    loop loop2
    mov cx,bp
    loop loop1
    jmp end_change
    
change:        ;进行交换字符串
    mov sp,bx    ;给bx的值做备份
    mov dx,cx    ;给CX做备份
    mov cx,5    ;每个字符串5个字符
    
loop3:
    mov al,student_name[bx]
    xchg student_name[bx+1*6],al
    mov student_name[bx],al
    inc bx
    loop loop3
    mov cx,dx    ;还原CX的值
    mov bx,sp    ;还原BX的值

    jmp continue
    
end_change:
    mov bx,0
    mov cx,10
printf:
next:
    mov dl,student_name[bx]    ;显示一个字符
    mov ah,2
    int 21h
    
    add bx,1                ;为显示下一个字符做准备
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:17:43
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20491/
本文WWW.DOC100.NET DOC100.NET版权所有。