北郵微機原理第二次軟體實驗報告

2021-03-04 09:59:31 字數 5010 閱讀 1591

微機原理與接**術

中斷實驗與程式設計報告

姓名學院資訊與通訊工程學院

專業班級

學號班內序號

目錄一、 實驗目的 2

二、 實驗任務及內容 2

1 設計思路 2

2 流程圖 3

3 源** 4

4 子程式清單 9

三、 實驗結果 10

四、 實驗總結 12

編一程式,在顯示器上顯示時、分、秒。

借用計數器8253的timer0作為中斷源,通過8259a向cpu發中斷,每10ms產生一次中斷。

在中斷服務程式中管理重新整理時、分、秒。

要求: 輸入檔名,(如clk)後,清屏後顯示:

current time is xx:xx:xx(時分秒鍵盤輸入)

打回車,時、分、秒開始計時。時鐘不停的重新整理。

當鍵入ctrl+c時,停止計時,返回系統,且系統正常執行不宕機。

1. 2.

1) 定義資料段和堆疊段。資料段存放中斷次數count100,輸入的時間資訊(8位字元),用於提示的字串資訊。堆疊段存放256個空字元。

2) 巨集名check的定義。判斷輸入的字元是否超出允許輸入的範圍,若超出範圍,報錯後返回程式開始處。

3) 主程式。

初始化暫存器。

清屏。(執行過程見注釋部分)

顯示字串str1。用於說明輸入格式(xx:xx:xx)和輸入後開始計時的方式(按回車鍵開始)

將輸入的8個字元存入資料段。使用dos功能呼叫01h,通過di,把存放在al中的鍵入字元存入以tenhour為開始的資料段,並使用巨集指令check判斷輸入字元是否超過範圍。

鍵入回車,開始計時。使用dos功能呼叫01h,把鍵入的鍵與回車鍵對應碼0dh進行比較。若鍵入其他鍵,報錯,返回程式開始。

將原來08h中斷號設定的入口位址換成本程式中timer的起始位址,保證在發生08h中斷時,程式自動進入timer過程。

為時鐘計時器置初值。43h埠是指8253三通道定時器中的命令暫存器,所使用的命令字36h表示選用0通道定時器,以3號方式(產生方波)計數等。向埠40h送出的計數器初值選用11932是要求8253每秒發出100次時鐘中斷(08h)。

21h埠為中斷遮蔽暫存器,用以開放外部中斷。

顯示「current time is:」;顯示計時,時鐘不停的重新整理。呼叫子程式dispclk,逐個顯示字元,並檢測秒鐘個位second是否有變化,以達到每秒更新一次顯示的效果。

4) 中斷程式timer。

執行100次中斷後,秒數+1;

依次判斷秒鐘、分鐘、小時的個位和十位是否需要改變;

若不需要改變,繼續呼叫中斷。

5) 子程式dispchar,顯示字元

14號bios功能呼叫,顯示al中的字元到游標位置,且游標進一

程式的執行過程大致是:主程式不停地顯示時鐘值,當發生時鐘中斷08h時,轉入timer過程。timer檢視中斷計數是否達到100次,如果沒有達到則返回主程式;如已達到,表明又過了1秒鐘,則對時鐘的值進行修改,然後再返回主程式。

timer中斷程式:

顯示字元的子程式diapchar只有乙個內容,即使用14號bios功能呼叫,不再畫圖。

主程式:

data segment

count100 db 100中斷次數100次

;8位字元,格式**:**:**

tenhour db 0

hour db 0

tenmin db 0

minute db 0

tensec db 0

second db 0

;用於提示的字串

str1 db ' range 00:00:00~23:

59:59, and hit enter to begin ',13,10, ' starting time is:$'

str2 db '("ctrl+c" to exit) current time is:$'

str3 db ' time format error!',13,10, 13,10,'$'

data ends

stack segment stack

db 256 dup(0)

stack ends

code segment

assume ds:data,cs:code,ss:stack

;巨集定義check。形參為輸入字元、可輸入最大值和最小值

check macro x,min,max

local err, mret ;註明在巨集內部使用的標號

push ax

push bx

mov al,x

mov bl,min

mov bh,max

cmp al,bl

jl err ;輸入值小於最小值,報錯

cmp al,bh

jg err輸入值大於最大值,報錯

pop bx

pop ax

jmp mret

err: mov dx,offset str3 ;顯示報錯資訊

mov ah,09h

int 21h

jmp begin

mret: nop

endm

start: mov ax,data

mov ds,ax

mov es,ax

;程式開始後,先清屏

mov ah,6 ;當前頁上滾

mov al,0 ;整個視窗空白

mov ch,0 ;滾動區域的左上角的行

mov cl,0 ;滾動區域的左上角的列

mov dh,42 ;滾動區域的右下角的行

mov dl,79 ;滾動區域的右下角的列

mov bh,7 ;00000111,背景色黑、前景色白,正常的字元顯示狀態

int 10h顯示i/o

;顯示提示文字

begin: mov dx,offset str1

mov ah,09h

int 21h

;輸入開始時間(格式8個字元),存入資料段

;先錄入小時:

;第1位字元(小時的十位,0~2)

mov di,offset tenhour ;從目的運算元的第一位tenhour開始

mov ah,01h

int 21hdos功能呼叫,鍵入字元

mov bl,albl 備份字元

check al,'0','2'

mov [di],al

;第1位字元是0/1時,第2位字元(小時個位,0~9)

inc di指向下一字元

mov ah,01h

int 21h

cmp bl,'2若鍵入「2」,轉移

jz tenhour2

check al,'0','9'

mov [di],al

jmp nextchar

;第1位字元是2時,第2位字元(小時個位,要求是0~3)

tenhour2: check al,'0','3'

mov [di],al

;再錄入分鐘、秒鐘:

mov bp,0

;第3位字元(:);第6位字元(:)

nextchar: inc di

mov ah,01h

int 21h

check al,':',':'

;第4位字元(分鐘十位,0~5);第7位字元(秒鐘十位,要求是0~5)

inc di

mov ah,01h

int 21h

check al,'0','5'

mov [di],al

;第5位字元(分鐘個位,0~9);第8位字元(秒鐘個位,0~9)

inc di

mov ah,01h

int 21h

check al,'0','9'

mov [di],al

;錄入第3/4/5位字元後,繼續錄入第6/7/8位字元

inc bp

cmp bp,1

je nextchar

;鍵入回車,開始計時

cab: mov ah,01h

int 21h

cmp al, 0dh

jz huanh

mov dx,offset str3 ;鍵入的不是回車,顯示報錯資訊,回到開始

mov ah,09h

int 21h

jmp begin

huanh: mov ah,02h ;回車換行

mov dl,13

int 21h

mov dl,10

int 21h

;將原來08h中斷號設定的入口位址換成本程式中timer的起始位址

cli中斷標誌置零,禁止可遮蔽中斷

mov ax,0

mov es,axdi對應的段位址暫存器es

mov di,20h相應中斷向量的位址4*8=32=20h

mov ax,offset timer ;ax存入timer程式的段內偏移量

stosw字串填充,把ax中的內容存入位址20h

mov ax,cstimer程式的**段位址

stosw

;為時鐘計時器置初值

mov al,36h ;36h表示選用0通道定時器,以3號方式(產生方波)計數等

out 43h,al ;輸出到43h埠(8253三通道定時器中的命令暫存器)

mov bx,11932 ;bx存入計數器初值11932(方波頻率100hz,週期10毫秒)

要求8253每秒發出100次時鐘中斷(08h)

mov al,bl ;將bx送入40h埠

out 40h,al ;低四位

mov al,bh

out 40h,al ;高四位

mov al,0fch ;恢復為允許中斷

out 21h,al

北郵微機原理軟體實驗報告

實驗一1.實驗要求 編一程式,將位址偏移量為100h單元開始的256個單元分別寫入00h,01h,ffh資料 統計寫入的資料塊的0元素 正元素 負元素的個數,並分別將統計結果送入上述資料塊後的三個單元中 用dos功能呼叫顯示上面資料快各單元 包括統計結果 內容,要求每行顯示16個資料,兩個資料之間用...

2019 微機實驗報告第二次 實用

微機實驗報告 1 可程式設計定時器 計數器8254 實驗 1.1 實驗目的 了解計數器的硬體連線方法及時序關係,掌握8254 的各種模式的程式設計及其原理,用示波器觀察各訊號之間的時序關係。1.2 實驗原理圖 可程式設計定時器 計數器8254 原理圖 1.3 實驗內容及說明 將32hz 的晶振頻率作...

北郵遠端辦公軟體應用第二次作業

一 單項選擇題 共10道小題,共100.0分 1.使用powerpoint中的 功能,可以設定每張幻燈片的 時間。a.幻燈片切換方式b.幻燈片動畫設定c.排練計時d.幻燈片母板 知識點 第三單元 標準答案 c 試題分值 10.0 學生答案 c 得分 提示 10 2.要中斷幻燈片的放映過程可以直接按 ...