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

標題: 匯編語言實現數字方陣程序 [打印本頁]

作者: grant110    時間: 2021-4-22 19:17
標題: 匯編語言實現數字方陣程序
將N方個(N=3,4,5)個自然數按螺旋紋路填入N*N方陣,要求程序運行時輸入參數N,然后輸 出所需的N階方陣,如N=4時輸出顯示 :
1   2   3   4
12  13  14  5
11  16  15  6
10  9   8   7

本程序設計主要要求用匯編語言實現數字方陣的創建。
程序提示用戶輸入任一數字n,系統接收該數字,并返回一個n階數字方陣。要求將n2個自然數按螺旋紋路填入這個n階方陣(順時針,由外向內)。本程序設計中,系統提示輸入一個3-9的數字,根據輸入的數字顯示方陣,如輸入4,輸出

     要實現該功能要求,需要顯示提示字符串,接受用戶輸入,調用中斷[2],按要求顯示方陣。
具體要求:
(1)輸出提示輸入,接受在一定范圍內的指定數字(本程序為3到9之間),否則重新輸入,如果是ESC鍵,則推出程序
(2)對接受的數字進行運算,將n2個自然數按螺旋紋路填入n階方陣并顯示該方陣。



2.2.2  子程序工作流程
SHOW循環顯示子程序:  



程序設計分析
算法實現并不是件簡單的事情。高級語言可以設置二維數組實現,不必考慮其位數,輸出也僅是一個元素值。而用匯編則遇到定位鼠標,才是顯示,根據程序要求,想要達到程序要求,必須對鼠標位置做精確定位[3]。匯編一次只能輸出一個字符,對于二位十進制數據時,必須作出處理分別輸出[5]。如果對于一位二進制數不做處理,輸出時的樣子非常難看。處理方案是:當輸出一位十進制數時,在十位位置填充空格,顯示效果良好[1]。根據課題的要求,主要完成一下幾方面的設計:
1.顯示提示輸入,提示輸入 ,并保證輸入大于3小于9,否則重新輸入
2.編寫子程序,用算法實現每次形如矩形的輸出,直至輸出完畢
3.在輸出時,如果是兩位十進制數,使用設計子程序分別輸出個位,十位值,若是一位十進制數,十位填充空格,輸出。

3  主要代碼實現

3.1 主模塊代碼
      主模塊主要完成的功能有:在屏幕顯示提示字符串、準備接收用戶輸入的字符,若為Esc鍵,則推出程序;若為數字字符,則將其轉換成數字,并判斷數字是否在規定范圍內,然后根據數字大小調用相應子模塊,顯示方陣。該模塊主要使用了進棧、出棧,基本加減運算,賦值運算,比較運算以及流程跳轉控制。
  1. PUSH      CS
  2.               POP       DS
  3.               MOV       AX,3
  4.               INT       10H         ;BIOS中斷,置文本顯示模式

  5.               MOV       AX,0B800H
  6.               MOV       ES,AX       ;定位顯存

  7.               MOV       DX,OFFSET MSG
  8.               MOV       AH,9
  9.               INT       21H         ;提示

  10.          T0:  MOV       AH,0
  11.               INT       16H         ;接收數據

  12.               CMP       AL,1BH      ;Esc鍵結束程序  esc(ascii=1Bh)
  13.               JZ        QUIT

  14.               CMP       AL,'3'      ;數據校驗,保證輸入3<al<9
  15.               JB        T0
  16.               CMP       AL,'9'
  17.               JA        T0

  18.               MOV       AH,0EH      ;在Teletype模式下顯示字符
  19.               INT       10H         ;顯示有效數

  20.               SUB       AL,30H      ;得到十進制數字
  21.               PUSH      AX
  22.               MUL       AL          ;al*al
  23.               MOV       SI,AX       ;保存矩陣最大數到si中
  24.               POP       AX
  25.               CBW                   ;chang byte to word
  26.               MOV       BP,1        ;第一個元素值
  27.               MOV       DI,3*80*2
  28.        NEXT:
  29.               MOV       CNT1,AX     ;輸入數據保存到cnt1
  30.               DEC       AX          ;n-1
  31.               MOV       CNT2,AX
  32.               MOV       CNT3,AX
  33.               DEC       AX          ;(n-1)-1
  34.               MOV       CNT4,AX
  35.               ADD       DI,3*2
  36.               CALL      SHOW        ;輸出矩陣
  37.               MOV       AX,CNT1
  38.               SUB       AX,2
  39.               SUB       DI,3*2
  40.               CMP       BP,SI
  41.               JBE       NEXT        ;bp<si,則繼續執行
  42.               MOV       AH,0
  43.               INT       16H         ;等待
  44.               JNZ       START
  45.        QUIT:
  46.               MOV       AX,4C00H
  47.               INT       21H

  48. 3.2 顯示方陣模塊代碼
  49.     顯示方陣模塊主要用于控制數字及其顯示位置[4],以達到題目要求的數字按照螺旋紋路填入n階方陣中。該模塊主要運用了賦值運算,循環控制,比較運算及流程控制。
  50. SHOW:                            ;顯示方陣
  51.               MOV       CX,CNT1       ;right 向右賦值
  52.          M1:  CALL      CRT
  53.              INC       BP            ;下一個元素數值
  54.               LOOP      M1
  55.               MOV       CX,CNT2       ;down 向下賦值
  56.               JCXZ      P2            ;cx=0,則轉p2處
  57.          M2:  ADD       DI,(80-3)*2
  58.               CALL      CRT
  59.               INC       BP
  60.               LOOP      M2
  61.               MOV       CX,CNT3        ;left 向左賦值
  62.               JCXZ      P2
  63.          M3:  SUB       DI,6*2         ;下一個元素位置
  64.               CALL      CRT
  65.               INC       BP
  66.               LOOP      M3
  67.               MOV       CX,CNT4       ;up 向上賦值
  68.               JCXZ      P2
  69.          M4:  SUB       DI,(80+3)*2
  70.               CALL      CRT
  71.               INC       BP
  72.               LOOP      M4
  73.          P2:  RET

  74. 3.3 顯示控制模塊代碼
  75.       控制模塊主要用于控制數字的顯示方式,若為一位數,則顯示個位,并補充空格;若為兩位數,則分別顯示十位和個位,以達到數字的正確顯示。主要進行了數字的修正和各位數字的分離。
  76. CRT:
  77.               MOV       AX,BP
  78.               AAM                      ;調整指令
  79.               OR        AX,3030H
  80.               XCHG      AH,AL          ;交換ah和al
  81.               CMP       AL,'0'
  82.               JNZ       P1
  83.               MOV       AL,20H
  84.          P1:  STOSB                   ;顯示十位
  85.               INC       DI
  86.               MOV       AL,AH
  87.               STOSB                   ;顯示個位
  88.               INC       DI
  89.               MOV       AL,20H
  90.               STOSB                   ;顯示空格
  91.               INC       DI
  92.               RET
復制代碼

運行結果分析
經過上訴分析和模塊設計,編寫出完整的程序代碼。經過不斷的調試和修改得到最終程序設計。該程序能正常運行,并完成規定的功能。現將運行結果截圖如下:
程序開始運行:

                         圖4.1
輸入3,運行結果如下:

                        圖4.2
鍵入9,運行結果如下:

                         圖4.3

全部資料51hei下載地址:
數字方正程序exe匯編.7z (92.81 KB, 下載次數: 5)





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 在线看h | 午夜精品| 亚洲不卡在线观看 | 国产精品99久久久久久www | 在线一区二区三区 | 自拍偷拍第一页 | 人人看人人草 | www.久草.com| 99精品国产一区二区三区 | 久久成人一区 | 人人爽人人爽人人片av | av一级毛片| 国产男女视频网站 | 激情一区二区三区 | 日韩视频在线免费观看 | 亚洲一区二区三区在线观看免费 | 日韩一 | 亚洲高清视频在线 | 91在线精品秘密一区二区 | 蜜桃av人人夜夜澡人人爽 | 免费一区 | 日本中文字幕日韩精品免费 | 国产精品视频一二三区 | 欧美视频二区 | 亚洲一区二区久久 | 成人国产精品久久 | 亚洲成人自拍 | 一级免费毛片 | 亚洲色图在线观看 | 精产国产伦理一二三区 | 日韩美av| v片网站| 亚洲视频区| 欧美在线国产精品 | 亚洲国产成人av好男人在线观看 | 国产欧美精品区一区二区三区 | 欧美另类视频 | 亚洲国产成人精品女人久久久 | 免费能直接在线观看黄的视频 | 情侣av| 99热播精品 |