- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                微机原理上机作业汇编言输入若干数字,其中有大于十的,从小到大排序
                    汇编语言程序
排序
       对输入的多个数字进行排序。
要求:
(a)所有数字从键盘输入; 
(b)数字中至少包含一个大于10的数字;
(c)排好序的数字以十进制形式在屏幕显示输出。
   
  
data segment 
    shuzi_w db 0
    ;shuzi_q db 0
    ;shuzi_b db 0
    ;shuzi_s db 0
    ;shuzi_g db 0 ;将排序好的数字显示出来,需要每一位转换成ASCII码 
    key DW 100 dup(0)   ;输入的数的存放位置
    buffer dw 0 ;输入数字的暂存位置 输入的数字大于10 需要缓冲
    n   db 1            ; 总共输入的数字个数     注意从1开始 loop循环原因
    n1  db 1
    ; add your data here!
    pkey db the programmer has been done .. ,0dh,0ah,24h
    string db please input data: ,0dh,0ah,24h      
    string1 db 0dh,0dh,0dh,0dh,output: ,0dh,0ah,$
    kongge db 0dh, 0ah,24h 
    
    ends             
    
  
stack segment
    dw   128  dup(0)
ends
 
code segment
start:
; set segment registers:   
   
    xor ax,ax   
      
    push ax
    mov ax, data
    mov ds, ax
    mov es, ax
    lea dx , string
    mov ah, 09h
    int 21h              ;显示请输入数据   
     
    mov di , offset key
    mov ax , 0   
    
    mov buffer,ax
 
biaohao1:            ;程序输入处
    mov ah,08h       ;键盘输入但不显示
    int 21h              ; 输入保存在AL中    
    cmp al,0dh;  输入是回车,直接结束输入
    jz biaohao4 
    cmp al,0           ;当输入的数在0到9中间时 输入的是ASCII码
    jb  biaohao2         ;不跳转否则跳转
    cmp al,9 
    ja   biaohao2 
    
    ;若输入的数在0到9之间时
    mov  ah,2
    mov dl,al   ;显示此数
    int 21h
    sub al,30h
    mov ah,0   
    push ax ; 保存刚输入的数字
    mov bx,buffer
    mov ax,10
    mul bx    ;ax=10*buffer
    pop bx ;  将上面保存的ax 的值给bx
    add ax,bx  ;ax=10*buffer+bx(之前的ax) 输入的数字大于10
    mov buffer,ax ;将ax 的值给buf 
    mov [di],ax ;若输入11,循环第一次输入是1,第二次重输入12
    jmp biaohao1; 输入大于10 的数字的下一位
 
biaohao2:    ;输入数字不是0到9  
     
    cmp al,20h   ;输入是否是空格
    je biaohao3   ;是的话跳出循环
    jmp biaohao1  ; 不是的话继续输入下一位
 
biaohao3:     ;是空格表示输入下一个数字
    call konggexianshi  ;屏幕上显示空格
    add  di,2 ;修改di指针,输入下一个数字
    inc n     ;输入的数字个数加一    
    mov ax,0
    mov buffer,ax ;初始化
    jmp biaohao1;继续输入下一个数字
 
biaohao4:
    mov al,n
    cmp al,0
    jz qw   ;没有输入数字就直接回车,结束程序
    call konggexianshi
    call paixu     
    
                
原创力文档
                        

文档评论(0)