【汇编语言】已知缓冲区BUF有十个字母,按ASCII值将其从小到大顺序排列

【汇编语言】已知缓冲区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’

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值