




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
研究性學習報告——匯編語言及其程序設計目錄題目一 3題目分析: 3程序設計: 3程序調試: 4題目二 6題目分析: 6程序設計: 7程序調試: 8題目三 10題目分析: 10程序設計: 11程序調試: 12題目四 13題目分析: 13程序設計 14程序調試: 15題目一18.編寫程序,將MBUF為起始單元的5個數按相反次序傳送到NBUF開始的存儲單元中。題目分析:SI-2,DI+2AX→[DI][SI]→AX初始化NBUF起始地址送DIMBUF末尾地址送SI段基址送DS開始 在數據段中定義兩個數組,第一個為MBUF,用于存放題目要求的5個數,另一個為NBUF,用于反序存放MBUF中的數。主要利用數據傳送指令MOV實現該功能,設計程序流程框圖如下SI-2,DI+2AX→[DI][SI]→AX初始化NBUF起始地址送DIMBUF末尾地址送SI段基址送DS開始(CX)=0?N(CX)=0?結束Y結束程序設計:DATASEGMENT MBUFDW1,2,3,4,5 NBUFDW5DUP(?)DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX MOVSI,OFFSETMBUF MOVDI,OFFSETNBUF MOVCX,4 ADDSI,8LOP:MOVAX,[SI] MOV[DI],AX DECSI DECSI INCDI INCDI LOOPLOP MOVAH,4CH INT21HCODEENDS ENDSTART程序調試:匯編結果鏈接結果TD調試結果 根據運行結果可以看到,數據段中從起始位置開始存放的字分別為1、2、3、4、5,程序運行后,之后的數據段,即NBUF,分別存放的字為5、4、3、2、1,程序運行結果正確。題目二20.編寫程序,將內存中某數據塊中的正數和負數分開,并分別將這些正數和負數送同一數據段的兩個緩沖區中,并在屏幕上顯示正數和負數的個數。題目分析: 該題的重點是區分數據塊中所存數據的正負,即使其和0比較,大于零則為正數,存入數據段相應位置,并將記錄正數個數的變量加一;負數同理,最后利用字符顯示功能,將存放正負數個數的變量顯示在屏幕上,但需要注意的是,這兩個變量中存放的為16進制數,如果直接輸出,則顯示的是其所對應的ASKⅡ碼,所以需要轉換為相應的數字。程序設計框圖如下:開始開始 初始化初始化正數單元首地址送SI正數單元首地址送SI負數單元首地址送DI負數單元首地址送DI與0比較與0比較小于零大于零存入[DI]負數+1DI+1存入[存入[DI]負數+1DI+1存入[SI]正數+1正數+1SI+1CX=0?NCX=0?Y輸出輸出結束結束程序設計:DATASEGMENT;定義代碼段BUFDB1,2,-3,-4,-5,6,7,8,-9,10COUNTEQU$-BUF;將BUF中數據的個數送入COUNTZHENGDB?;存放正數的個數FUDB?;存放負數的個數ORG0010HD1DB8DUP(?);正數存放單元D2DB8DUP(?);負數存放單元DATAENDSSTACK1SEGMENTSTACKDW100DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVBX,OFFSETBUFMOVCX,COUNTMOVZHENG,0MOVFU,0MOVSI,OFFSETD1;正數存放單元的首地址送SIMOVDI,OFFSETD2;負數存放單元的首地址送DILOP:MOVAL,[BX]CMPAL,0;比較[BX]和零JGELOP1;大于零跳轉到LOP1JLELOP2;小于零跳轉到LOP2LOP1:INCZHENGMOVAL,[BX]MOV[SI],ALINCSI;指向下一個數據INCBXDECCXJNZLOPJMPOKLOP2:INCFUMOVAL,[BX]MOV[DI],ALINCDIINCBXDECCXJNZLOPOK:MOVDL,ZHENGORDL,30HMOVAH,02HINT21HMOVDL,FUORDL,30HMOVAH,02HINT21HMOVAH,4CHINT21HCODEENDSENDSTART程序調試:匯編結果鏈接結果運行結果TD調試結果 根據程序運行后的數據段可以看出,00H~09H地址中存放的為之前定義的10個有符號數,(0AH)=06,代表有6個正數,(0BH)=04,表明有4個負數;DS:10~17存放的是正數,DS:18~1F存放的是負數,結果符合題目要求。題目三21.編寫程序,從內存BLOCK開始,存放著10個字節的有符號數,從這些數中找出絕對值最大的數,將其存入MAX中。題目分析: 本題可用類似冒泡算法的方法來實現,但首先需要判斷數字的正負,如果為負,則需取絕對值后再與前一個數比較大小,大的存入MAX中,不斷重復,直至比較完全部的數為止。程序框圖如下:開始開始MAX=0MAX=0,數據地址存入BX判斷正負?判斷正負?負取反取反正存入AHBX+1存入AHBX+1判斷正負?判斷正負?MAX=AH比較DH,AH大小MAX=AH比較DH,AH大小存入DHBX+1取反MAX=AHDH>AH AH>DH結束結束程序設計:DATASEGMENT;定義代碼段 BLOCKDB1,2,-3,-4,-5,-6,7,8,9,-10 COUNTEQU$-BLOCK MAXDB0DATAENDSSTACK1SEGMENTSTACK;定義堆棧段 DW100DUP(?)STACK1ENDSCODESEGMENT;定義數據段 ASSUMECS:CODE,DS:DATA,SS:STACK1START: MOVAX,DATA MOVDS,AX MOVCX,COUNT MOVBX,OFFSETBLOCK;BX指向BLOCK的第一個數據LOOP1: CMPCX,0;判斷CX是否為正數 JZOK;跳轉到OK MOVAL,MAX;將MAX送入AL CMPAL,0;判斷AL的正負 JGEL1;若為正數,則跳轉到L1 MOVAH,0 SUBAH,AL;為負數,則取反存入AH JMPLOOP2;準備進行下一個數的比較L1: MOVAH,AL LOOP2: MOVDL,[BX];將BLOCK下一個數送給DL CMPDL,0;判斷正負 JGEL2;若為正數則跳轉到L2 MOVDH,0 SUBDH,DL;若為負數,則取反存入DH JMPCOMPARE;跳轉到COMPAREL2: MOVDH,DL COMPARE:CMPAH,DH;比較AH和DH,較大的數存入MAX JGEFANG MOVMAX,DL JMPNEXTFANG: MOVMAX,AL NEXT: DECCX;CX減一 INCBX;BX指向下一個數據 JMPLOOP1;繼續進行比較OK: MOVAH,4CH INT21HCODEENDS ENDSTART程序調試:匯編結果鏈接結果TD調試結果 TD調試結果如上圖,可以看到數據段中DS:00~09中存放的是題目中定義的10個字節的有符號數,DS:0A中存放的是運行結束后所找出的絕對值最大的數,該程序中,該數為-10(F6H),符合題目要求。題目四26.編寫程序,將內存中N個無符號數據從大到小排序后輸出顯示。題目分析: 該題為典型的冒泡算法,即設置兩重循環,逐次比較大小,較小的數據右移,最終實現從大到小排序,程序流程圖如下:開始開始CX=N-1CX=N-1CXCX→SIBX=0BX=0[BX]<[BX+1][BX]<[BX+1] NY兩數交換兩數交換BX=BX+1CX=CX-1BX=BX+1CX=CX-1CXCX≠0?YNCX=SICX=SICX=CX-1CXCX≠0? Y結束 N結束程序設計DATASEGMENTBUFDB12,22,56,89,36,20,48;定義數組COUNTEQU$-BUFDATAENDSSTACK1SEGMENTSTACK;定義堆棧段DW100DUP(?)STACK1ENDSCODESEGMENT;定義代碼段ASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVCX,COUNTDECCX;設置循環次數LOP1:MOVSI,CXMOVBX,0LOP2:MOVAL,BUF[BX];將BUF中第一個數送入AL中CMPAL,BUF[BX+1];比較第一個數與第二個數的大小JNBLOP3;若第一個數小于第二個數,跳轉到LOP3XCHGAL,BUF[BX+1];若大于,則交換兩個數
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建省福州市金山中學2025年高三下學期4月開學英語試題含解析
- 云南省龍陵一中2025年高三《天府大聯考》(二)物理試題試卷含解析
- 吉林建筑科技學院《蒙古族民間文學概論》2023-2024學年第二學期期末試卷
- 贛州師范高等專科學校《醫學影像信息學》2023-2024學年第一學期期末試卷
- 個人述職與未來規劃
- 廣東科貿職業學院《軟件測試綜合實踐》2023-2024學年第二學期期末試卷
- 肋骨骨折并血胸護理查房
- 廣東省廣州市三元里中學2025屆中考預測密卷:化學試題試卷含解析
- 大連醫科大學中山學院《人類遺傳病》2023-2024學年第二學期期末試卷
- 肋骨骨折的護理
- 肺彌散功能測定標準
- 肌少癥的診斷評估與治療專家共識(2023年版)
- 國際疾病分類ICD11編碼庫
- 醫療廢物管理條例課件
- 升壓斬波電路
- 產品特殊價格申請表
- 2023年河南鄭州大學第二附屬醫院經開院區招聘藥學工作人員筆試備考題庫及答案解析
- 衛生部手術分級目錄(2023年1月份修訂)
- 鋼棧橋施工監理細則
- 優秀員工榮譽證書模板
- 金蝶PLM詳細介紹
評論
0/150
提交評論