主题:下面这个程序怎么编 求助 谢谢
lbx5201314
[专家分:0] 发布于 2007-06-20 22:47:00
[size=5]编程实现对字符串“hangzhou”的升序排列 并把结果送交屏幕显示[/size]
谢谢 高手 希望用最简单的方法 因为我刚学的 汇编啊
希望旁边加注释
回复列表 (共5个回复)
沙发
liangbch [专家分:1270] 发布于 2007-06-20 22:56:00
先用c语言编写一个程序(如插入排序或者冒泡排序)再改为汇编。
板凳
lbx5201314 [专家分:0] 发布于 2007-06-20 23:03:00
我要的 是直接用汇编 编的 哦 谢谢
3 楼
liangbch [专家分:1270] 发布于 2007-06-20 23:42:00
.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 楼
lbx5201314 [专家分:0] 发布于 2007-06-20 23:49:00
又没有 简单的 方法啊
5 楼
liangbch [专家分:1270] 发布于 2007-06-20 23:55:00
这个程序是一个典型的2重循环,采用选择排序算法,已经很简单了。排序算法不可能有比2重循环更简单的算法。
我来回复