汇编程序设计题 用子程序结构,将从MEM单元开始的10个8位无符号数

来源:百度知道 编辑:UC知道 时间:2024/06/23 02:35:20
按从大到小的顺序排列。请加注释 保证运行正确。谢谢。

; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
; 冒泡排序:对从MEM单元开始的N个8位无符号数降序排序
; 入口参数:ds:SI=数组地址,CX=数组元素个数
Bubbling Proc Near
push es
push si
push di
push cx
push ax
push ds
pop es
dec cx ;外循环次数
cld
@@Scanning: push cx ;入栈保存外循环次数
push si ;入栈保存数组地址
@@Compare: mov di,si ;当前数组元素地址赋给目的变址寄存器,以备交换之用
lodsb ;将当前数组元素读入累加器
cmp al,[si] ;当前数组元素与相邻的下一个数组元素相比较
jae @@NextOne ;若大于或等于,不作数据交换,处理下一个数组元素
xchg al,[si] ;若小于,交换数组元素
stosb ;保存数值较小者
@@NextOne: loop @@Compare ;