微機原理綜合實驗報告

2022-10-21 11:36:06 字數 5479 閱讀 5583

濱江學院

實驗報告

學生姓名

學號專業資訊工程

班級2016級

二o一八年十二月三十日

微機原理綜合實驗

實驗一利用debug除錯程式除錯程式段

1、實驗目的

1)熟悉debug有關命令的使用方法。

2)利用debug掌握有關指令的功能。

3)利用debug執行簡單的程式段。

2、實驗內容

1)進入和退出debug程式。

2)學會debug中的d命令、e命令、r命令、t命令、a命令、g命令等的使用。對於u命令、n命令、w命令等,也應試一下。

3)利用debug,驗證乘法、除法、加法、減法、帶進製加、帶借位減、堆疊操作指令、串操作指令的功能。

3、實驗準備

1)仔細閱讀有關debug命令的內容,對有關命令,都要事先準備好使用的例子。

2)作為例子,準備用a命令,輸入在顯示器上顯示字元「s」的系統呼叫程式段。

3)閱讀將ax左移9位的程式段。

4、實驗步驟

1)在dos提示符下,進入debug程式。

2)在dos目錄下啟動debug。

3)詳細記錄每一步所用的命令,以及檢視結果的方法和具體結果。

5、實驗報告要求

1)如何啟動和退出debug程式。

2)整理每個debug命令使用的方法,實際示例及執行結果。

3)啟動debug後,要裝入某乙個.exe檔案,應通過什麼方法實現?

實驗結果:

實驗二分支程式實驗

1、實驗目的

1)掌握分支程式的設計方法。

2)掌握利用debug修改引數、檢查結果的方法。

3)掌握組合語言源程式的編輯、彙編、連線及除錯過程。

2、實驗內容

1)編寫乙個程式,顯示al暫存器中的兩位十六進製制數

2)編寫乙個程式,判別鍵盤上輸入的字元;若是1-9字元,則顯示之;若為a-z或a-z字元,均顯示「c」;若是回車字元(其ascii碼為0dh),則結束程式,若為其它字元則不顯示,繼續等待新的字元輸入。

3、實驗準備

1)編寫實驗內容要求的兩個程式。

2)寫出除錯以上程式,即修改程式引數,檢查結果的操作方法。

3)熟悉源程式彙編、連線命令的使用方法即要回答的內容。

4、實驗步驟

1)用edit或其它編輯軟體,編寫.asm源程式,例如及

2)對其進行彙編及連線,產生.exe檔案。

133)對.exe檔案進行除錯執行。

(1)用debug除錯執行,學會修改al內容的方法。

(2)對鍵入不同的字元,分別進行除錯。

(3)在ms-dos下執行這兩個.exe檔案。

5、實驗報告要求

1)畫出兩個程式的流程圖,若要獨立編寫程式,應列出相應的程式清單。

2)說明本實驗是如何利用debug進行除錯的。

6、參考程式清單

1)顯示al中兩位十六進製制數程式:

;code segment

assume cs:code

start: mov al,3eh

mov bl,al

mov dl,al

mov cl,4

shr dl,cl

cmp dl,9

jbe next1

add dl,7

next1: add dl,30h

mov ah,2

int 21h ;顯示高位ascii碼

mov dl,bl

and dl,0fh

cmp dl,9

jbe next2

add dl,7

next2: add dl,30h

mov ah,2

int 21h ;顯示低位ascii碼

mov ah,4ch

int 21h

code ends ;返回dos

end start

2)顯示鍵入字元程式

;code segement

assume cs:code

start: mov ah,1

int 21h ;等待鍵入字元,送al

cmp al,0dh ;是否是回車符?

jz done ;是則轉done退出程式

cmp al,』0』

jb next

cmp al,』9』

ja charup

實驗結果:

mov dl,al

mov ah,2

int 21h

jmp start

charup: cmp al,41h

jb next

cmp al,5ah

ja chrdn

dispc: mov dl,』c』

mov ah,2

int 21h

next: jmp start

chrdn: cmp al,61h

jb next

cmp al,7ah

ja next

jmp dispc

done: mov ah,4ch

int 21h

code: ends

end start

實驗三迴圈程式實驗

1、實驗目的:

1)掌握迴圈程式的設計方法

2)進一步熟悉利用debug程式修改引數的方法,並檢查和驗證結果的正確性。

3)學會針對不同的問題,選用不同的組織迴圈的方法。

2、實驗內容

1)將字串strn(以「$」結尾)中的每乙個字元均加上偶校驗位,並統計有多少個字元因含有奇數個「1」而加上了校驗位。統計結果存於n單元中。

2)儲存單元dat1及dat2中各有10位元組的二進位制數,高位位元組放在高位位址中。試編寫一程式將這兩個資料相加,結果存放在從dat3開始的單元中。並思考減法和bcd碼的運算程式的編寫。

3、實驗準備

1)預習迴圈程式的兩種基本結構及應用場合,學會正確地組織迴圈。

2)寫出實驗程式清單,並畫出程式流程圖。

3)思考用不同的程式去實現同乙個功能。

4、實驗步驟

1)編寫、彙編和連線源程式,產生可執行的 .exe檔案

2)程式除錯成功後,修改有關引數進行除錯執行並驗證結果的正確性。

3)對多位元組二進位制數加法,用另乙個程式加以實現。

5、實驗報告要求

1)畫出兩個程式的流程圖,獨立編寫程式,列出相應的程式清單。

2)總結迴圈程式的結構和組織迴圈的方法。

6、參考程式清單

1)偶校驗程式清單:

;desg segment

strn db 『ascdefghijklmnopquvw』,『$』

n db ?

dseg ends

assume cs: cseg segment

start cseg, ds: dseg

: mov ax, dseg

mov ds, ax

lea si, strn

mov dl, 0

again: mov al, [si]

cmp al, 『$』

je done

test al, 0ffh

jpe next

or al, 80h

mov [si], al

inc dl

next: inc si

jmp again

done: mov n, dl

mov ah, 4ch

int 21h

cseg ends

end start

;以上是條件控制的迴圈。因為事先不知道字串strn共有多少字元,故採用條件控制的迴圈程式實現。

2)加法程式清單:

;code segment

assume cs: cseg, ds: dseg

start: mov ax, cs

mov ds, ax

lea si, dat1

lea di, dat2

lea bx, dat3

mov cx, 10

xor al, al ;0→cf

again: mov al, [si]

adc al, [di]

mov [bx], al

inc si

inc di

inc bx

loop again

mov ah, 4ch

int 21h

dat1 db 70h, 80h, 90h, a0h, a1h, a2h, a3h

db 74h, 65h, 56h

dat2 db 45h, 67h, 89h, 1ah, 2bh, 3ch

db 4dh, 5eh, 6fh, 04h

dat3 db 10 dup(?)

code ends

end start

;本程式中,ds及cs同處乙個邏輯段code中,所以,應將cs值送至ds中。

實驗結果:

實驗四子程式實驗

1、實驗目的

1)掌握主程式與子程式之間的呼叫關係及呼叫方法。

2)掌握子程式呼叫過程中近程呼叫與遠端呼叫的區別。

3)掌握通過堆疊轉送引數的方法。

2、實驗內容

1)將buf開始的10個單元中的二進位制數轉換成兩位十六進製制數的ascii碼,在螢幕上顯示出來。要求碼型轉換通過子程式hexac實現,在轉換過程中,通過子程式disp實現顯示。

2)編寫乙個主程式,從鍵盤接收若干個字元,然後用遠呼叫的方法,呼叫子程式統計字串中字元』b』的個數.子程式的引數是字串的首位址table,字串長度n及字元」b」.子程式返回字元"b」的個數.

引數傳送採用堆疊實現.主程式在子程式返回後,顯示字元」b」及其個數(設為一位十六進製制數)。

3、實驗說明

1)第乙個實驗程式用子程式的近程呼叫實現。由於在呼叫hexasc子程式時,子程式又呼叫了disp子程式,這叫子程式的巢狀呼叫。實驗過程中可以從堆疊的內容看到兩個子程式的返回位址值。

由於是近呼叫,位址值只包括返回位址的段內偏移量。在每個子程式的執行中,檢查cs值是不變的。

2)第二個程式是利用遠呼叫的方法呼叫子程式的。在遠呼叫情況下,主程式與子程式處在不同的邏輯**段中,可在子程式執行中檢視cs值,它與主程式中的cs值是不同的。子程式呼叫後,堆疊中保留了返回位址的段位址及段內偏移量。

3)第二個程式中,主程式與子程式之間引數的傳送是由堆疊實現的。一段是將引數(此處是串首址table,串的長度n及待統計的字元「b」)順序壓如堆疊,在子程式呼叫後,通過bp指針對堆疊中的引數訪問,並將統計的結果通過堆疊返回。有關該方法的原理此處不再介紹。

4、實驗準備

1)預習子程式設計的基本方法,根據實驗內容要求,畫出子程式及主程式的流程圖。

2)熟悉鍵盤鍵入字串及用堆疊傳送引數的程式段編制方法。

5、實驗步驟

1)編輯、彙編兩個源程式,生成相應的可執行檔案(.exe)。

2)用debug的r 命令,t 命令或g命令和d命令檢查遠端呼叫及近程呼叫時堆疊的變化。特別是通過堆疊傳送的引數和子程式取出的引數是返回引數的詳細過程。

微機原理實驗報告

一 實驗綜述 實驗目的 1 熟悉debug環境,在debug中輸入程式。2 掌握基本指令的用法。3 分析程式執行結果。4 會按要求編寫基本程式,完成基本功能。二 實驗過程 實驗步驟 資料記錄 實驗3.57 若ax 1001h,dx 20ffh,當執行add ax,dx指令以後,請列出和數及標誌暫存器...

微機原理實驗報告

實驗報告 課程名稱 實驗名稱 班級姓名學號 實驗組別同實驗者 實驗日期實驗地點 評定成績評閱教師 實驗報告要目 1 實驗目的要求 2 實驗儀器 裝置 3 實驗線路 原理框圖 4 實驗方法步驟 5 實驗的原始資料和分析 6 實驗討論 1 從螢幕輸入20個資料,有效資料從00 99 十進位制 2 按序進...

西電微機原理實驗報告

班級 031214 學號 03121370 姓名 孔玲玲 地點 e ii 312 時間 第二批 1 掌握組合語言的程式設計方法 2 掌握dos功能呼叫的使用方法 3 掌握組合語言程式的除錯執行過程 二 實驗裝置 pc機一台。三 實驗內容 1 將指定資料區的字串資料以ascii碼形式顯示在螢幕上,並通...