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

按从大到小的顺序排列。请加注释 保证运行正确。谢谢。

; 本程序在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 ;处理下一个数组元素
pop si ;数组地址出栈
pop cx ;外循环次数出栈
loop @@Scanning ;下一趟比较
pop ax
pop cx
pop di
pop si
pop es
ret
Bubbling EndP
; -------------------------------------
MEM db 12,56,253,200,10,99,78,75,63,100
N equ $-MEM
Press_Key db 7,13,10,13,10,'The complated. Press any key to exit...$'
Start: push cs
pop ds
mov cx,N ;数组元素个数
lea si,MEM ;数组地址
call Bubbling
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-12-15
ls正确

用汇编编写实现两个8位的十六进制无符号数求和的子程序
SADD:MOV A,R3 CLR C ADD A,R4 JC PP1 MOV R3,#00H SJMP PP2 PP1:MOV R3,#01H PP2:MOV R4,A RET

用汇编语言编写若干个无符号数中的最大值和最小值
首先对10个数按从小到大排序,然后第一个元素就是最小的,最后一个元素就是最大的 data segment mes1 db 'the max:$'mes2 db 'the min:$'a dw 42,20,100,456,99,120,89,12334,90,1239 data ends code segment main proc far assume cs:code,ds:data start:push ds sub ax,ax push...

用汇编语言设计一个程序,求10个无符号数中的最大值。并将最大值存入变 ...
MOV CX,10 ;循环次数MOV BX,OFFSET N ;第一个数的地址MOV AL,[BX] ;将第一个数认为是最大的NEXT:CMP AL,[BX] ;比较JA L1MOV AL,[BX] ;如果有更大的数则更新ALL1:INC BX ;指向下一个数LOOP NEXT ;循环比较MOV MAX,AL ;保存最大值到MAX hnhhww | 发布于2011-12-19 举报| 评论 6 1 爱...

...H为起始地址的单元中存放着的10个单字节无符号数,按从小到大的次序...
以下是子程序,在主程序中MOV R7,#10\/MOV R0,#50H SRT:MOV A,R7 MOV R5,A SRT1:CLR F0 MOV A,R5 DEC A MOV R5,A MOV R2,A JZ SRT5 MOV A,R0 MOV R6,A SRT2:MOV A,@R0 MOV R3,A INC R0 MOV A,@R0 MOV R4,A CLR C SUBB A,R3 JNC SRT4 SETB F0 MOV A,R3 MOV ...

汇编语言程序设计题求高手
1.编写一个程序实现:在BUF开始的存储区中存放30个带符号数,试统计其正数、负数和零的个数,并将统计的个数分别放到PLUS、NEGATIVE、ZERO单元中。; 本程序通过编译,运行正确 Code Segment Assume CS:Code,DS:Code BUF db 23,-69,0,35,46,0,57,68,0,79,81,98,-43,251,21,15,-69,0,...

汇编语言将10个有符号数按降序排列以后,我要输出最小值minval和最大值m...
0 JNE @DSPAX1 MOV AH,2 @DSPAX2: POP DX INT 21H LOOP @DSPAX2 POPF POP DX POP CX POP BX POP AX RET

用汇编语言编制一个 将内存BUFA单元存放的8个数字传送到BUFB单元中
使用MOVS指令,复制内存单元。DS:SI指向源,ES:DI指向目标 例:DATA SEGMENT BUFA db 'abcdefgh',0DH,0AH,'$'BUFB db 8 dup(?),0DH,0AH,'$'DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START:MOV AX,DATA MOV DS,AX MOV ES,AX MOV CX,8 MOV SI,OFFSE...

汇编语言
7.被乘数X,乘数Y均为无符号数,试用部分积右移算法求其乘积Z。 (1)X=1010B,Y=0110B (3)X=0111B,Y=1001B(2)X=0101B,Y=1101B (4)X=1100B,Y=1111B8.试述冯.诺依曼型计算机的设计思想。9.冯.诺依曼型计算机由哪五个功能部件组成?各功能部件的作用如何?10.何谓“总线”?它有哪几类?它们的主要...

汇编语言程序设计填空题和问答题部分
1.为零 2.偏移 3.4位 4.group name db(前两个不太确定,你再查一下吧)5.CX 6.CALL RET 7.MACRO ENDM 宏体 8.设DS=2200H,BX=1000H,SI=0100H,偏移量D=0A2B1H,试计算出下列各种寻址方式下的有效地址,填入括号中。A.使用D的直接寻址 (0A2B1H )B.使用BX的寄存器间接寻址 (1000H...

用89C51单片机设计4*4矩阵式键盘计算器程序 要汇编的
MOV R2,#0CH ;计算数据存放单元个数 CLR AQING: MOV @R0,A ;将数据存放单元清零 INC R0 DJNZ R2,QING MOV P0,#8FH ;关闭显示 MOV R1,#30H ;将显示首地址存放R1里;===;五位无符号显示子程序DIS1: MOV R0,#30H ;把显示数据第一位放在R0里 MOV R2,#04H ;把显示的位码放在R2里 MOV R3,#05H...

相似回答