久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: emu8086排序源程序 [打印本頁]

作者: 77905383331    時間: 2017-12-28 15:01
標題: emu8086排序源程序
在數(shù)據(jù)區(qū)存放有一個數(shù)據(jù)序列(字型還是字節(jié)型的自行確定),編寫程序,該程序應該能完成以下功能:

1、(選做)數(shù)據(jù)區(qū)的數(shù)據(jù)由鍵盤錄入;

2、程序可以按有符號數(shù)由大到小,由小到大,按無符號數(shù)由大到小,由小到大排序,編寫為多分支程序,由鍵入不同字符或數(shù)字選擇排序方法;

3、排序方法自定,可以用不同的方法排序;

4、完成排序后的數(shù)據(jù)區(qū)顯示在電腦屏幕上;

5、盡可能用調用子程序的方法來實現(xiàn)程序,主程序與子程序參數(shù)的傳遞方法自行確定。
  1. data segment
  2.     data1 db -78,24,-8,94,-109,128,0
  3.     count equ $-data1  
  4.     HINT   DB  'wrong
  5. [/color][/font][/align]

  6. data ends
  7. code segment
  8.     assume cs:code,ds:data
  9. main proc near
  10. start:mov ax,data
  11.       mov ds,ax
  12.       mov ah,1
  13. input:  int 21h                     ;輸入一個數(shù)
  14.       cmp al,31h
  15.       jz next                    ;輸入數(shù)等于1調用有符數(shù)大到小排序
  16.       cmp al,32h
  17.       jz next1                    ;輸入數(shù)等于2調用有符數(shù)小到大排序
  18.       cmp al,33h
  19.       jz next2                    ;輸入數(shù)等于3調用無符數(shù)大到小排序
  20.       cmp al,34h
  21.       jz next3                    ;輸入數(shù)等于4調用無符數(shù)小到大排序
  22.       jmp WRONG                  ;輸入其他值時提示錯誤
  23.       
  24.        WRONG: MOV   DL,0DH             ;回車
  25.         MOV   AH,02H
  26.         INT   21H
  27.         MOV   DL,0AH             ;換行
  28.         MOV   AH,02H
  29.         INT   21H
  30.         MOV   DX,OFFSET HINT   ;提示‘wrong’
  31.         MOV   AH,09H
  32.         INT   21H
  33.         MOV   AH,4CH
  34.         INT   21H   
  35.         HLT                  ;主程序結束  
  36.          
  37. next:call signe_ltos
  38.       jmp play
  39. next1:call signe_stol
  40.       jmp play
  41. next2:call unsigne_ltos
  42.       jmp play
  43. next3:call unsigne_stol
  44. play:call display
  45.       mov ax,4c00h
  46.       int 21h
  47. main endp

  48. signe_ltos proc near                   ;有符號數(shù)從大到小
  49.       mov cx,count
  50.       dec cx
  51. loop1:lea si,data1
  52.       mov di,cx
  53. loop2:mov al,data1[si]
  54.       cmp al,data1[si+1]
  55.       jge ltos                       ;大于等于跳轉
  56.       xchg al,data1[si+1]
  57.       mov data1[si],al      
  58. ltos:inc si
  59.       loop loop2
  60.       mov cx,di
  61.       loop loop1
  62.        ret
  63. signe_ltos endp

  64. signe_stol proc near                    ;有符號數(shù)從小到大
  65.       mov cx,count
  66.       dec cx
  67. loop3:lea si,data1
  68.       mov di,cx
  69. loop4:mov al,data1[si]
  70.       cmp al,data1[si+1]
  71.       jle stol                          ;小于等于跳轉
  72.       xchg al,data1[si+1]
  73.       mov data1[si],al      
  74. stol:inc si
  75.       loop loop4
  76.       mov cx,di
  77.       loop loop3
  78.        ret
  79. signe_stol endp
  80.    
  81. unsigne_ltos proc near                  ;無符號數(shù)從大到小
  82.       mov cx,count
  83.       dec cx
  84. loop5:lea si,data1
  85.       mov di,cx
  86. loop6:mov al,data1[si]
  87.       cmp al,data1[si+1]
  88.       jae ultos                        ;大于等于跳轉
  89.       xchg al,data1[si+1]                ;否則交換
  90.       mov data1[si],al      
  91. ultos:inc si
  92.       loop loop6
  93.       mov cx,di
  94.       loop loop5  
  95.         ret
  96. unsigne_ltos endp  

  97. unsigne_stol proc near                    ;無符號數(shù)從小到大
  98.       mov cx,count
  99.       dec cx
  100. loop7:lea si,data1
  101.       mov di,cx
  102. loop8:mov al,data1[si]
  103.       cmp al,data1[si+1]
  104.       jbe ustol                          ;小于等于跳轉
  105.       xchg al,data1[si+1]                  ;否則交換
  106.       mov data1[si],al      
  107. ustol:inc si
  108.       loop loop8
  109.       mov cx,di
  110.       loop loop7  
  111.         ret
  112. unsigne_stol endp
  113.    
  114. display proc near
  115.          mov cx,count                   ;數(shù)組個數(shù)給cx
  116.          mov dl,13
  117.          call out_chr                      ;回車換行
  118.          mov dl,10
  119.          call out_chr
  120.          lea si,data1                     ;si指向data1的首地址
  121. loop9:  mov al,data1[si]                  ;data1的值給al
  122.          call dis                        ;十進制顯示al的值
  123.          mov dl,' '
  124.          call out_chr                    ;調用int 21h顯示功能
  125.          inc si                         ;si值加1,指向data1的下個數(shù)
  126.          loop loop9                    ;循環(huán)
  127.          ret
  128. display endp

  129. dis proc near
  130.          pusha                        ;保護現(xiàn)場,所有寄存器的數(shù)存下
  131.          mov bh,al                 ;al值給bh
  132.          cmp al,128      ;大于等于128為負數(shù),8位寄存器有符號數(shù)范圍-128∽127
  133.          jb next4                    ;小于128跳轉         
  134.          mov dl,'-'                        ;顯示負號
  135.          call out_chr
  136.          mov al,bh                  ;上面操作時,al的值會變,現(xiàn)在將數(shù)組的值再給al
  137.          neg al                   ;al進行補碼操作,相當于對負數(shù)al取絕對值
  138. next4:mov ah,0
  139.          mov bl,100
  140.          div bl              ;div除法,默認被除數(shù)為al,除數(shù)bl,商存在al,余數(shù)存ah
  141.          mov bh,al                  ;百位數(shù)字給bh
  142.          mov ch,ah                   ;余數(shù)給ch,以下操作會覆蓋ah
  143.          cmp al,0                   ;看百位是不是0
  144.          jz next5                    ;百位為0不顯示
  145.          add al,30h                   ;百位數(shù)字轉成十進制
  146.          mov dl,al      
  147.          call out_chr
  148. next5:  mov ah,0
  149.          mov al,ch                   ;存在ch的余數(shù),小于100的數(shù)字給al
  150.          mov bl,10
  151.          div bl
  152.          mov cx,ax                       ;商和余數(shù)給cx
  153.          cmp al,0                          ;十位數(shù)字是否為0
  154.          jz next7                          ;為0跳轉
  155.   next6: add cl,30h                       ;十位數(shù)字轉十進制
  156.          mov dl,cl
  157.          call out_chr
  158.          jmp next8
  159. next7:  cmp bh,0                        ;判斷百位是否為0,確定十位是否需要顯示
  160.          ja next6                         ;百位不為0,顯示十位數(shù)字
  161. next8:  add ch,30h                       ;個位數(shù)字十進制
  162.          mov dl,ch
  163.          call out_chr
  164.          popa                 ;恢復現(xiàn)場,將子程序開始時存下的寄存器的數(shù)全部恢復
  165.          ret
  166. dis endp

  167. out_chr:
  168.     push ax
  169.     mov ah,2                 ;dos調用
  170.     int 21h
  171.     pop ax
  172.     ret
  173. code ends
  174. end start
復制代碼
全部資料51hei下載地址:
LQ2.rar (1.6 KB, 下載次數(shù): 7)








歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩精品成人在线 | 99小视频| 午夜国产 | 国产精品视频在线免费观看 | 日韩电影免费在线观看中文字幕 | 亚洲免费在线观看视频 | 欧美mv日韩mv国产网站91进入 | 91精品欧美久久久久久久 | 97超碰人人 | 亚洲精品国产成人 | 国产区高清 | 精品国产一区探花在线观看 | 国产精品视频中文字幕 | 久久精彩视频 | 国产亚洲精品久久久久动 | 天天色天天色 | 欧美日韩精品中文字幕 | 国产亚洲一区二区精品 | 久久91av | 一区欧美 | 亚洲精品美女 | 亚洲成人精品一区 | 久久久精品一区二区三区 | 中文字幕一区二区在线观看 | 日韩成人av在线 | 亚洲综合视频 | 免费在线观看黄网站 | 日韩精品视频一区二区三区 | 成人在线视频网址 | 三级视频网站 | 精品国产欧美一区二区 | 欧美三区视频 | 欧美a在线 | 在线观看日本网站 | 成人在线不卡 | 成人福利片 | 亚洲二区在线 | 国产精品久久久久久吹潮 | 国产成人精品福利 | 第一区在线观看免费国语入口 | 黄色毛片免费 |