找最大值并統(tǒng)計個數(shù)匯編實驗報告(共4頁)_第1頁
找最大值并統(tǒng)計個數(shù)匯編實驗報告(共4頁)_第2頁
找最大值并統(tǒng)計個數(shù)匯編實驗報告(共4頁)_第3頁
找最大值并統(tǒng)計個數(shù)匯編實驗報告(共4頁)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上找最大值&統(tǒng)計負數(shù)個數(shù)一、程序設(shè)計要求1 統(tǒng)計并且顯示負數(shù)的個數(shù)。2 找出真值最大的數(shù),并以十六進制的形式,顯示在屏幕上,顯示格式為:MAX= H3 數(shù)據(jù)自己在數(shù)據(jù)段進行定義,個數(shù)至少為8個。二、程序設(shè)計思路主程序設(shè)計思路:第一步:將BUF單元的第一個數(shù)賦給MAX,將記錄負數(shù)個數(shù)的計數(shù)器COUNT置為0第二步:從BUF中第一個數(shù)開始,與MAX比較,如果比MAX大則將其賦給MAX;再判斷該數(shù)是否為負數(shù),若是將COUNT加1。重復(fù)此過程直至比較完所有數(shù)。第三步:調(diào)用與實驗二相同的子函數(shù)將MAX轉(zhuǎn)化成十六進制數(shù)輸出,同時輸出COUNT。三、程序設(shè)計流程圖四、源程序;-;程序

2、功能:統(tǒng)計并顯示負數(shù)的個數(shù),找出真值最大的數(shù)以十六進制數(shù)顯示在屏幕上;-.486DATASEGMENTUSE16 ;數(shù)據(jù)段定義BUF DB 8H,3H,-1,7H,-6,5H,2H,4H,-34,88LL EQU$-BUFMAX DB ?COUNT DB 0MESG1 DB The number of negtive number is:$MESG2 DB 0DH,0AH,MAX=,4 DUP(?),H,0DH,0AH,$DATA ENDS;-CODESEGMENTUSE16 ;代碼段ASSUMECS:CODE,DS:DATABEG: ;數(shù)據(jù)段初始化 MOVAX,DATA MOVDS,AX M

3、OVCX,LL ;BUF單元數(shù)據(jù)個數(shù)-CX MOV AL,BUF ;BUF單元第一個數(shù)-MAX MOV MAX,AL MOVBX,OFFSET BUF ;BX間址BUF單元AGA: MOVAL,BX CMPAL,MAX ;比較MAX和AL的大小,若小轉(zhuǎn)NEXT JL NEXT MOV MAX,AL ;AL中的數(shù)大于MAX時將AL-MAXNEXT: ADD AL,0 ;判斷AL中的數(shù)是否為負數(shù) JNS LAST INC COUNTLAST: INC BX LOOP AGA ;重復(fù)AGA至比完所以數(shù) MOVAH,9 ;顯示提示信息 MOVDX,OFFSET MESG1 INT21H ; BUF中只

4、有9個數(shù)故由此顯示負數(shù)的個數(shù) MOVDL,COUNT CMPDL,10 JC NEXT2 ADDDL,7NEXT2: ADDDL,30H MOV AH,2 INT21H MOVDL,MAX ;MAX-DX MOVDH,0 ;調(diào)用N2_16ASC子程序 CALLN2_16ASC ;將MAX轉(zhuǎn)化成十六進制數(shù)置于MESG2中 MOVAH,9 MOVDX,OFFSET MESG2 INT21H MOVAH,4CH INT21H;-;子程序功能:將DX中的數(shù)的十六進制數(shù)的ACSII碼放入MESG2中;-N2_16ASCPROC SAL EDX,16 ;左移16位,為實現(xiàn)從高位取4位數(shù)準備 MOV SI,

5、OFFSET MESG2+6 ;MESG2+6的地址-SI MOV COUNT,4 ;計數(shù)LAST1: ROL EDX,4 ;循環(huán)左移4位 AND DL,0FH ;將DL的高4為清零,;保證DL中只存在4位二進制數(shù) CMP DL,10 ;將4位的十六進制數(shù)轉(zhuǎn)化成ACSII碼 JC NEXT1 ADD DL,7NEXT1: ADD DL,30H ;將得到的ACSII-SI MOV SI,DL INC SI ;計數(shù) DEC COUNT JNZ LAST1 RETN2_16ASC ENDP;-CODEENDS END BEG五、測試用例及結(jié)果分析運行程序,結(jié)果如下:分析:BUF單元中存儲的數(shù)據(jù)是:8H,3H,-1,7H,-6,5H,2H,4H,-34,88。統(tǒng)計的負數(shù)個數(shù)為3,最大數(shù)為88,其十六進制形式為0058H。六、實驗總結(jié)所遇問題及解決方法:問 題1:輸出的最大數(shù)始終為00FFH.。原 因: 比較BUF中的數(shù)和MAX中的數(shù)時,用條件轉(zhuǎn)移指令JC,沒有考慮負數(shù)在計算機以補碼形式存在,而CMP指令是兩個數(shù)補碼差,用JC指令時最大的數(shù)永遠是-1。解決方法: 用有符號條件轉(zhuǎn)移指令JL,該指令是比較兩個數(shù)真值的大小。問 題2:統(tǒng)計負數(shù)的個數(shù)出錯。原

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論