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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2712|回復: 0
打印 上一主題 下一主題
收起左側

匯編語言實現數字方陣程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:910466 發表于 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)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久久香蕉国产线看观看亚洲 | 久久久视频在线 | 日韩电影免费在线观看中文字幕 | 日本免费一区二区三区 | 国产视频久久久 | 国产成人亚洲精品 | 亚洲视频一| 国产999精品久久久影片官网 | 日本免费一区二区三区四区 | 国产免费一区二区 | 久久国产综合 | 午夜一区二区三区在线观看 | 午夜影院毛片 | 91精品国产欧美一区二区成人 | 亚洲 中文 欧美 日韩 在线观看 | 91精品www| 欧美一区二区在线 | 日韩一区二区三区在线 | 一区在线视频 | 亚洲精品1区 | 亚洲欧美男人天堂 | 91视频国产一区 | 日韩精品一区二区三区在线 | 天天射网站 | 99精品一区二区三区 | www.日本三级| 射欧美| 亚洲福利视频一区二区 | 亚洲毛片在线观看 | 人人鲁人人莫人人爱精品 | 国产精品视频一区二区三 | 一级美国黄色片 | 欧美综合在线观看 | 成人在线免费 | 欧美精品99 | 日韩国产一区二区三区 | 国产二区精品视频 | 欧美精品一区久久 | 免费亚洲一区二区 | 久久一二三区 | 中文字幕第一页在线 |