帮忙写下汇编语言程序(以DATA1开始的10个数据从大到小排序)。。。感谢
数据段已定义,写出短代码的内容
DAT SEGMENT PARA
DATA DB 10H,12H,00H,78H,64H,A1H,91H,B6H,91H
DAT EDNS
CODE SEGMENT PARA
ASSUME DS:DATAREA,CS:PROGRAM
START:
PUSH DS
答案:data segment
myData db 0ah, 0fh, 0dh,1h, 2h, 3h, 4h, 0a3h, 0b1h, 0bbh
data ends
code segment
start proc
mov ax, data
mov ds, ax
lea ax, myData
mov di, ax
lea di, myData
lea si, myData
mov bx, 0
call bubble
hlt
start endp
bubble proc ; 冒泡排序,两层循环
mov al, [di] ; p=myData[0]
begin:
lea bp, [bx + si] ; q=myData[bx]
mov dl, [bp] ;
cmp al, dl ; al= *p, dl =*q
;jle lessequal ; 有符号数比较排序
jbe lessequal ; 无符号数比较排序 if( *p <= *q ) goto lessequal
xchg al, [bp] ; *q = al, al =dl
mov [di], al ; *p = al
lessequal: ;
inc bx ; q++
cmp bx, 10 ; if( bx == 10)
je next ; { goto next;}
jmp begin ; else { goto begin}
next: ;
inc di ; p++
mov bx, di ; q=p
sub bx, si ; if((q - myData)!=10)
cmp bx, 10 ; goto bubble;
jnz bubble ; else
ret ; return;
bubble endp
code ends
end start
其他:可以参考下面问题的答案:
http://zhidao.zhaoxi.net/question/348714357.html
上一个:汇编语言 子程序设计
下一个:用“汇编语言”编单片机程序教程,求下载地址,急急