回 帖 发 新 帖 刷新版面

主题:下面这个程序怎么编 求助 谢谢

[size=5]编程实现对字符串“hangzhou”的升序排列 并把结果送交屏幕显示[/size] 
谢谢 高手 希望用最简单的方法 因为我刚学的 汇编啊  
希望旁边加注释

回复列表 (共5个回复)

沙发

先用c语言编写一个程序(如插入排序或者冒泡排序)再改为汇编。

板凳


我要的 是直接用汇编 编的 哦 谢谢

3 楼

.model small

data    segment
  string db 'guangzhou',0
  newstring db  32 dup (?)
 
data    ends
;
code    segment
 assume cs:code,ds:data


start: 
 
 mov ax,data
 mov ds,ax
 
 mov si,offset newstring

outLoopStart:  ;外循环头
 
     mov bx,offset string
 
     mov al,7fh     ;al始终存放最小值,初值为7fh
  
innerloopStart:     ;内循环头
        cmp [bx],al
        jae next
        mov di,bx        ;最小字母的地址
        mov al,[bx]    ;al送最小值

next:
        inc bx  
        cmp byte ptr [bx],0 ; 遇到字符串结束标志
        jnz innerloopStart
 
     cmp al,7fh
     jz  thisExit            ;所有的字符都处理过了,没有发现字母,退出
  
     mov [si],al;            ;最小值放入新串  
     inc si
  
     mov byte ptr [di],7fh           ;这个字符已经处理过,置为0x7f,    
     jmp outLoopStart        ;继续从头扫描,找最小的字符
  
thisExit:
  mov byte ptr [si],'$'
  
  mov dx,offset newstring    ;显示新的字符串
  mov ah,9
  int 21h

 mov ax,4c00h
 int 21h
 
code    ends
end     start

4 楼

又没有 简单的 方法啊

5 楼

这个程序是一个典型的2重循环,采用选择排序算法,已经很简单了。排序算法不可能有比2重循环更简单的算法。

我来回复

您尚未登录,请登录后再回复。点此登录或注册