西電微機原理實驗報告

2021-04-22 17:05:11 字數 4788 閱讀 3867

班級: 031214

學號: 03121370

姓名: 孔玲玲

地點: e-ii-312

時間: 第二批

(1) 掌握組合語言的程式設計方法

(2) 掌握dos功能呼叫的使用方法

(3) 掌握組合語言程式的除錯執行過程

二、實驗裝置

pc機一台。

三、實驗內容

(1) 將指定資料區的字串資料以ascii碼形式顯示在螢幕上,並通過dos功能呼叫完成必要提示資訊的顯示。

(2) 在螢幕上顯示自己的學號姓名資訊。

(3) 迴圈從鍵盤讀入字元並回顯在螢幕上,然後顯示出對應字元的ascii碼,直到輸入「q」或「q」時結束。

(4) 自主設計輸入顯示資訊,完成程式設計與除錯,演示實驗結果。

考核方式:完成實驗內容(1)(2)(3)通過,

完成實驗內容(4)優秀。

實驗中使用的dos功能呼叫: int 21h

表3-1-1 顯示實驗中可使用dos功能呼叫

(1) 執行qthpci軟體,根據實驗內容編寫程式,參考程式流程如圖3-1-1所示。

(2) 使用「專案」選單中的「編譯」或「編譯連線」命令對實驗程式進行編譯、連線。

(3) 「除錯」選單中的「進行除錯」命令進入debug除錯,觀察除錯過程中資料傳輸指令執行後各暫存器及資料區的內容。按f9連續執行。

(4) 更改資料區的資料,考察程式的正確性。

5、實驗程式

data segment

buffer db '03121370konglingling:',0ah,0dh,'$'

buffer2 db 'aabbcc','$'

buffer3 db 0ah,0dh,'$'

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov ah,09h

mov dx,offset buffer

int 21h

mov si,offset buffer2

lab1:

cmp byte ptr [si],'$'

je lab2

mov al,ds:[si]

and al,0f0h取高4位

mov cl,4

shr al,cl

cmp al,0ah是否是a以上的數

jb c2

add al,07h

c2add al,30h

mov dl,alshow character

mov ah,02h

int 21h

mov al,ds:[si]

and al,0fh取低4位

cmp al,0ah

jb c3

add al,07h

c3add al,30h

mov dl,alshow character

mov ah,02h

int 21h

add si,1

jmp lab1

lab2:

mov ah,09h

mov dx,offset buffer3

int 21h

mov ah,01h

int 21h

cmp al,'q'

je lab3

mov bl,al

and al,0f0h取高4位

mov cl,4

shr al,cl

cmp al,0ah是否是a以上的數

jb c4

add al,07h

c4add al,30h

mov dl,alshow character

mov ah,02h

int 21h

mov al,bl

and al,0fh取低4位

cmp al,0ah

jb c5

add al,07h

c5add al,30h

mov dl,alshow character

mov ah,02h

int 21h

jmp lab2

lab3

mov ah,4ch

int 21h

code ends

end start

6、實驗結果

(1) 掌握不同進製數及編碼相互轉換的程式設計方法。

(2) 掌握運算類指令程式設計及除錯方法。

(3) 掌握迴圈程式的設計方法。

二、實驗裝置

pc機一台。

三、實驗內容及說明

(1) 重複從鍵盤輸入不超過5位的十進位制數,按回車鍵結束輸入;

(2) 將該十進位制數轉換成二進位制數;結果以2進製數的形式顯示在螢幕上;

(3) 如果輸入非數字字元,則報告出錯資訊,重新輸入;

(4) 直到輸入「q」或『q』時程式執行結束。

(5) 鍵盤輸入一字串,以空格結束,統計其中數字字元的個數,並在螢幕顯示。

考核方式:完成實驗內容(1)(2)(3)(4)通過,

完成實驗內容(5)優秀。

轉換過程參考流程如圖3-2-2所示。

十進位制數可以表示為:dn*10n+dn-1*10n-1+…+d0*100= di*10i

其中di代表十進位制數1、2、3、…、9、0。

上式可以轉換為: di*10i=(((dn*10+dn-1)*10+ dn-2)*10+…+ d1)*10+ d0

由上式可歸納出十進位制數轉換為二進位制數的方法:從二進位制數的最高位dn開始做乘10加次位的操作。

依此類推,則可求出二進位制數結果。

表3-3-1 數碼轉換對應關係

4、實驗程式

page 60,132

;本實驗將輸入的ascii碼轉換為二進位制,要求輸入位數小於5

data segment

mes db 0ah,0dh,'the ascii code of decimal code are: $'

msg1 db 0ah,0dh,0ah,0dh,0ah,0dh,'please input(exit:q/q):$'

msg2 db 0ah,0dh,'input: $'

msg3 db 0ah,0dh,'input error, please input again!',0ah,0dh,'$'

;bin db 2 dup(0)

buf db 30h,30h,30h,31h,35h

db 10h dup(0)

n dw 0

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov es,ax

mov di,offset buf

clcmov dx,offset msg1

mov ah,09h顯示字串

int 21h

mov dx,offset msg2

mov ah,09h

int 21h

a1: mov ah,01h接收鍵盤輸入

int 21h

cmp al,'q'

jz exit

cmp al,'q'

jz exit

cmp al,39h

ja error

inc n

stosb將輸入資料存放在buf緩衝區中

cmp al,13

jne a1

mov cx,n

dec cx

mov bx,000ah

mov si,offset buf

mov ah,0

mov dx,0

lodsb

cmp cx,1

je a3

sub al,30h將buf中資料轉換為二——十進位制數

dec cx

a2: imul bx

mov dx,ax

lodsb

mov ah,0

a3: sub al,30h

add ax,dx

loop a2

mov [si],ax

mov dx,offset mes

mov ah,09h

int 21h

微機原理實驗報告

一 實驗綜述 實驗目的 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 按序進...

微機原理綜合實驗報告

濱江學院 實驗報告 學生姓名 學號專業資訊工程 班級2016級 二 一八年十二月三十日 微機原理綜合實驗 實驗一利用debug除錯程式除錯程式段 1 實驗目的 1 熟悉debug有關命令的使用方法。2 利用debug掌握有關指令的功能。3 利用debug執行簡單的程式段。2 實驗內容 1 進入和退出...