当前位置:编程学习 > 汇编语言 >>

帮忙写下汇编语言程序(以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

上一个:汇编语言 子程序设计
下一个:用“汇编语言”编单片机程序教程,求下载地址,急急

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,