微機原理第二次實驗報告_第1頁
微機原理第二次實驗報告_第2頁
微機原理第二次實驗報告_第3頁
微機原理第二次實驗報告_第4頁
微機原理第二次實驗報告_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——微機原理第二次實驗報告微機原理其次次試驗報告

試驗二:加法及判斷程序調(diào)試試驗試驗報告

健行理工1402班陳麗紅202224450202

一、試驗目的

1.把握編寫匯編語言源程序的基本方法和基本框架。

2.學會編寫順序結構、分支結構和循環(huán)結構的匯編程序,把握宏定義與宏調(diào)用的方法。

3.把握程序中數(shù)據(jù)的產(chǎn)生與輸入輸出的方法。

二、試驗內(nèi)容

1.用匯編語言編寫一個加法程序:1325十9839,用ASCII碼的形式將加數(shù)與被加數(shù)存放在數(shù)據(jù)區(qū)DATA1和DATA2中,并將相加結果顯示輸出。

2.設有一組數(shù)據(jù):5,-4,0,3,100,-51,編程判斷:每個數(shù)是0、=0、還是0?并輸出其判斷結果。

即:

1當x?0??0?0當xy0?當x?1?三、程序說明

3.1試驗內(nèi)容一:

(1)兩個數(shù)據(jù)先以相反的順序以ASCII碼的形式存放在數(shù)據(jù)段的DATA1和DATA2中,相加時從DATA1和DATA2的起始字節(jié)開始相加,也就是從數(shù)的個位數(shù)開始相加。相加后的結果存放在DATA2開始的存儲單元中,同時用DL保存進位位。

(2)對于此題來說,題目為兩個四位數(shù)相加,所以定義循環(huán)數(shù)為4。

(3)程序中的加法運算是ASCII碼運算,后面應加一條ASCII碼加法調(diào)整指令AAA,經(jīng)AAA調(diào)整的加法指令,將ASCII碼的數(shù)據(jù)高4位清“0〞,因此要將結果每位數(shù)高4位拼成3,變成ASCII碼存到DATA2中。

(4)一位運算終止后將用于保存進位位的DL復原,進入循環(huán),進行下一位求和計算。

(5)由于計算是從個位數(shù)相加開始,所以存入DATA2中的數(shù)據(jù)應當以相反的順序輸出,故再進行一輪循環(huán)輸出,得到最終的計算結果。

3.2試驗內(nèi)容二:

(1)首先將原始數(shù)據(jù)(5,-4,0,3,100,-51)裝入起始地址為VAR的字節(jié)存儲單元中。

(2)將判斷結果以字符串的形式分別存放在數(shù)據(jù)區(qū)中,以便在顯示輸出時調(diào)用。

(3)判斷部分采用CMP指令。從數(shù)據(jù)區(qū)中取出一個數(shù)送給AL,之后與0進行對比,得到分支結構,分別輸出“Y=0〞、“Y=+1〞和“Y=-1〞。

(4)程序中存在一個循環(huán)結構,對于此題,循環(huán)次數(shù)為6,調(diào)用6次分支結構后終止。.

四、程序總框圖4.1試驗內(nèi)容一程序框圖開始

將DATA1的偏移地址SI將DATA2的偏移地址DI定義循環(huán)次數(shù)CX=4取DATA1一位數(shù)BL進行加法運算,并調(diào)整將每一位運算結果拼ASCI碼保存到DATA2中N(CX)-1=0?Y重新定義循環(huán)次數(shù)CX為5通過DI減1,將保存的結果以相反的順序輸出N(CX)-1=0?Y終止

4.2試驗內(nèi)容二程序框圖

五、源程序清單與執(zhí)行結果5.1試驗內(nèi)容一:5.1.1程序源代碼碼的DATA為段名,將兩個數(shù)據(jù)用相反順序以ASCIIDATASEGMENT;定義數(shù)據(jù)段,中形式存放在DATA1,DATA2DATA1DB5231

DATA2DB9389

DATAENDS

CODESEGMENT;定義代碼段ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

SI的偏移地址給;將DATA1LEASI,DATA1

DIDATA2的偏移地址給LEADI,DATA2;將4CX;定義循環(huán)數(shù)為MOVCX,4

AH,DL;初始化MOVAH,00H

MOVDL,00H

NEXT:MOVBL,[SI]

MOVAL,[DI]

ADDAL,DL;將進位位與AL中的數(shù)相加后存儲到AL

ADDAL,BL;將AL,BL相加

AAA;AAA調(diào)整

ADDAL,30H;將結果每位數(shù)高4位拼成3,變成ASCII碼

MOV[DI],AL;將ASCII碼存在DATA2

MOVDL,AH;DL用于存儲進位位

INCSI;將SI,DI加1

INCDI

MOVAH,00H;將進位位復原置0

;循環(huán),進行下一位的計算求和LOOPNEXT

;該部分代碼用于保存最終一個進位位MOVAH,DL

ADDAH,30H

MOV[DI],AH

MOVCX,5

;之前的代碼輸出結果順序為相反的,通過再一次的循環(huán)輸出得到計AH,02HNEXT1:MOV

結果MOVBL,[DI]

MOVDL,BL

INT21H

;減DIDECDI1

LOOPNEXT1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

試驗結果截圖5.1.2.

試驗內(nèi)容二:5.2程序源代碼5.2.1;定義數(shù)據(jù)段DATASEGMENT

VARDB5,-4,0,3,100,-51

;以字符串形式存儲D1DBY=+1,0DH,0AH,$

D2DBY=0,0DH,0AH,$

D3DBY=-1,0DH,0AH,$

DATAENDS

;定義代碼段CODESEGMENT

ASSUMECS:CODE,DS:CODE

START:MOVAX,DATA

DS段賦值MOVDS,AX;給0AX置MOVAX,00H;初始化6為MOVCX,6;定義循環(huán)數(shù)CXDI的開始地址給LEADI,VAR;將VARNEXT1:MOVAL,[DI]

進行對比0CMPAL,0;將DI指向的數(shù)與NEXT2時跳轉至JGENEXT2;當AL=0DX;將D3的偏移值送給MOVDX,OFFSETD3

JMPOPT

NEXT3AL=0時跳轉至;NEXT2:JENEXT3

DX的偏移值送給MOVDX,OFFSETD1;將D1JMPOPT

DX

的偏移值送給D2;將NEXT3:MOVDX,OFFSETD2

JMPOPT

OPT:MOVAH,09H

溫馨提示

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

評論

0/150

提交評論