【汇编语言】已知缓冲区BUF有十个字母,按ASCII值将其从小到大顺序排列
实验内容:已知缓冲区BUF有十个字母,按ASCII值将其从小到大顺序排列
-
实验名称:循环结构程序设计
-
主要使用软件: Masm for Windows
程序如下
已知缓冲区BUF有十个字母,设为 ‘HLRCOTESAD’
DATA SEGMENT
BUF DB 'HLRCOTESAD'
N EQU $-BUF
DB 13,10,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,N ;字母个数送DX,外循环次数
AGAIN: MOV CX,DX
DEC CX ;内循环次数
LEA SI,BUF
LEA DI,BUF+1
I0:
MOV AL,[SI]
MOV BL,[DI]
CMP AL,BL ;AL>BL则交换,<=则转NEXT
JBE NEXT
XCHG AL,BL
MOV [SI],AL ;把较小值送入SI
MOV [DI],BL ;把较大值送入DI
NEXT: INC SI
INC DI
LOOP I0 ;CX-1->CX,CX!=0 转I0,CX=0一次内循环结束
DEC DX ;外循环次数-1
CMP DX,1 ;只剩一个字母不用比较
JNZ AGAIN
JMP EXIT
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
调试结果
已顺序排序为: ‘ACDEHLORST’