版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
網(wǎng)絡(luò)教育陜西師范大學(xué)遠(yuǎn)程教育學(xué)院考查課科目____可視化程序設(shè)設(shè)計(jì)_____姓名____________學(xué)號_______專業(yè)____計(jì)算機(jī)應(yīng)用技術(shù)_____批次______12年秋______層次____高中起點(diǎn)??疲撸撸撸撸邔W(xué)習(xí)中心_知金教育上海_
目錄目
錄
......................................................................................................................
1概
述
...................................................................................................................
課程設(shè)計(jì)目的
....................................................................................................
課程設(shè)計(jì)內(nèi)容
....................................................................................................
2
系統(tǒng)需求分析
...........................................................................................................
系統(tǒng)目標(biāo)
............................................................................................................
主體功能
............................................................................................................
開發(fā)環(huán)境
............................................................................................................
3
系統(tǒng)概要設(shè)計(jì)
.........................................................................................................
系統(tǒng)的功能模塊劃分
........................................................................................
系統(tǒng)流程圖
........................................................................................................
4系統(tǒng)詳細(xì)設(shè)計(jì)
.........................................................................................................
流程控制模塊設(shè)計(jì)
............................................................................................
鍵盤監(jiān)測處理模塊設(shè)計(jì)
....................................................................................
計(jì)時處理模塊設(shè)計(jì)
............................................................................................
其他補(bǔ)充說明
....................................................................................................
5
測試
.........................................................................................................................
測試方案
............................................................................................................
測試結(jié)果
............................................................................................................
6
小結(jié)
.........................................................................................................................
附
錄
......................................................................................................................
附錄1
源程序
............................................................................................................
8
1
概
述
課程設(shè)計(jì)目的
本課程設(shè)計(jì)是在學(xué)完教學(xué)大綱規(guī)定的全部內(nèi)容、完成所有實(shí)踐環(huán)節(jié)的基礎(chǔ)上,旨在神話學(xué)生學(xué)習(xí)的匯編語言課程基本知識,機(jī)一部掌握匯編語言程序設(shè)計(jì)方法,提高分析問題、解決問題的綜合應(yīng)用能力。
課程設(shè)計(jì)內(nèi)容
打字計(jì)時練習(xí)程序
2
系統(tǒng)需求分析
系統(tǒng)目標(biāo)
設(shè)計(jì)一個在鍵盤上練習(xí)打字并能統(tǒng)計(jì)時間的程序。通過它練習(xí)英文打字練習(xí),并能夠統(tǒng)計(jì)時間。
主體功能
要求:在緩沖區(qū)中預(yù)放了一些字母,運(yùn)行時,可按照屏幕上顯示的字母輸入練習(xí),每輸入完一行回車鍵后,可顯示練習(xí)輸入的時間。
開發(fā)環(huán)境
Window
XP+TASM5.0
3
系統(tǒng)概要設(shè)計(jì)
系統(tǒng)的功能模塊劃分
流程控制(主程序
)
鍵盤監(jiān)測處理
計(jì)時處理模塊
系統(tǒng)流程圖
主體流程圖:4系統(tǒng)詳細(xì)設(shè)計(jì)
流程控制模塊設(shè)計(jì)
流程控制模塊即為主程序模塊。主要功能為程序環(huán)境配置和流程控制,詳細(xì)如下保存原09H中斷向量,并配置自身中斷(鍵盤中斷入口
KBINT)
保存原1CH中斷向量,并配置自身中斷(時鐘中斷入口
CLINT)
通過BIOS
對屏幕及顯示器所提供的服務(wù)程序設(shè)置顯示方式
允許鍵盤和定時器中斷
顯示提示信息及例句
通過鍵盤監(jiān)測處理模塊顯示用戶輸入,并判斷是否為回車(0DH)。如為回車符,說明一個句子輸入完畢,此時通過計(jì)時處理模塊顯示出打字時間。然后順序顯示下一個例句。如果所存放的例句都已顯示完,則又從第一個例句開始顯示,直至鍵入某一功能鍵(如Esc鍵、Shift鍵等)轉(zhuǎn)入退出部分,結(jié)束打字練習(xí)。
退出程序。在退出前利用DOS功能恢復(fù)系統(tǒng)原中斷向量。
注:5、6、7可參考主程序流程圖。具體實(shí)現(xiàn)代碼參照附錄1
MAIN
程序段。
鍵盤監(jiān)測處理模塊設(shè)計(jì)
此模塊具體實(shí)現(xiàn)可分為兩個部分。
第一部分:KBINT
鍵盤中斷處理程序。通過自編的KBINT鍵盤中斷處理程序替換原09H中斷向量,檢測按鍵時產(chǎn)生的中斷,并把按鍵的掃描碼轉(zhuǎn)換為ASCII碼存入緩存區(qū)buffer,這個工作和ROM09類型的鍵盤中斷例行程序所完成的工作大致相同,只是在解釋各個鍵時作了簡化,即只解釋了可顯示字符,如英文字母、數(shù)字及一些符號;其他特殊鍵,如組合鍵、雙態(tài)鍵、功能鍵等都未作解釋,只作為字符碼0來處理。
第二部分:KBGET
獲取鍵盤鍵入信息。此部分功能較為簡單,為獲取鍵盤鍵入的字符信息以供主程序進(jìn)行流程控制和在屏幕顯示。
注:以上兩個部分的具體實(shí)現(xiàn)代碼分別參照附錄1
KBINT
“鍵盤中斷處理程序”和KBGET
“獲取鍵盤鍵入的信息”。
計(jì)時處理模塊設(shè)計(jì)
此模塊具體實(shí)現(xiàn)亦可分為兩個部分。
第一部分:CLINT
定時器中斷處理程序。打字時間統(tǒng)計(jì)利用自定時器中斷處理程序CLINT來完成。每輸完一例句,計(jì)時一次。在此中斷例行程序中,定時器中斷的次數(shù)記錄在計(jì)數(shù)單元COUTNT中,當(dāng)COUTNT計(jì)數(shù)值為18時,SEC計(jì)數(shù)單元加1
,當(dāng)SEC計(jì)數(shù)值達(dá)到60時,MIN計(jì)數(shù)單元加1
。因?yàn)檩斎胪暌粋€句子無論如何也不會達(dá)到小時級,所以對HOURS計(jì)數(shù)值的調(diào)整判斷,實(shí)際上只起到退出定時器中斷的作用。
第二部分:DISPTIME
顯示打字練習(xí)時間。顯示時間的子程序DISPTIME通過調(diào)用子程序BINDEC將二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù),以min:sec:msec的形式顯示出來。其中msec是由count記數(shù)值轉(zhuǎn)換成的:count×1秒/18.2=count×55ms
。
注:以上兩個部分的具體實(shí)現(xiàn)代碼分別參照附錄1
CLINT
“定時器中斷處理程序”和DISPTIME
“顯示打字練習(xí)時間”。
其他補(bǔ)充說明
提示信息以及例句以字符串形式存儲在代碼中。緩沖區(qū)BUFFER,
BUFPT1
,BUFPT2以及其他變量(如時間參數(shù)
COUNT
SEC
MIN
HOURS等)已在數(shù)據(jù)段定義詳細(xì)可參照附錄1
“數(shù)據(jù)段”。
另,代碼段中有幾個子程序未在上面模塊設(shè)計(jì)中介紹,此處作簡要說明。
INCT:計(jì)時程序中進(jìn)位模塊,協(xié)同時間中斷計(jì)時程序CLINT實(shí)現(xiàn)計(jì)時。
BINDEC
與
DECDIV:實(shí)現(xiàn)具體的進(jìn)制轉(zhuǎn)換功能,協(xié)同DISPTIME
顯示打字練習(xí)時間。
DISPCHAR:字符顯示子程序,以顯示字符5
測試
測試方案
3.打開編譯鏈接后的生成程序,觀察提示信息。
4.按照提示輸入,并回車
5.輸入五次,查看結(jié)果
測試結(jié)果
1.編譯源程序,結(jié)果如下:2.鏈接0BJ文件,結(jié)果如下:3.打開生成的typetest.exe,顯示如下信息:4.按照提示輸入字符,回車后結(jié)果如下:5.按照提示繼續(xù)輸入至五次:回車后,結(jié)果:6.輸入任意控制符(此處輸入Esc),程序退出。
至此,測試完成。
結(jié)論:程序達(dá)到系統(tǒng)目標(biāo)要求,實(shí)現(xiàn)了主體功能,運(yùn)行結(jié)果正確。
6
小結(jié)
在這次的課程設(shè)計(jì),我進(jìn)一步深入了解了匯編語言,自身收獲也不少.這是我第二次用匯編語言來處理一具體的問題,歷時一周終于完成,其間有不少感觸。在編寫程序期間,編譯程序時不斷的出現(xiàn)錯誤,有的錯誤是因?yàn)榇中亩鴮?dǎo)致的,一看就能解決;有的不知道是怎么錯了,連書上都找不到解決的方法,不過通過不斷的學(xué)習(xí)網(wǎng)上老師的教程的幫助很快就解決了。
通過這一周的課程設(shè)計(jì),無論從學(xué)習(xí)上還是從自身角度,我自認(rèn)都提高的非常迅速,發(fā)現(xiàn)了自己的能力和未被挖掘的潛力,認(rèn)證了自身的堅(jiān)強(qiáng)與韌力,總結(jié)出只有在強(qiáng)壓與競爭中才會有意想不到的收獲和進(jìn)步。從要實(shí)現(xiàn)的功能到流程圖的繪制,從程序的編寫到程序的檢查,從程序的調(diào)試到實(shí)驗(yàn)報(bào)告的寫作,其間每一個過程都是自己不斷探索的過程。
通過這次課程設(shè)計(jì),我明白了做任何事情都要腳踏實(shí)地,認(rèn)真鉆研,嚴(yán)格謹(jǐn)慎,容不得半點(diǎn)敷衍。附
錄
附錄1
源程序
STACK
SEGMENT
PARA
STACK
'STACK'
DB
256
DUP(0)
TOP
LABEL
WORD
STACK
ENDS
;-------------------------------------------
;
以下為數(shù)據(jù)段
;-------------------------------------------
DATA
SEGMENT
PARA
PUBLIC
'DATA'
BUFFER
DB
16H
DUP(0)
緩沖區(qū)大小
BUFPT1
DW
0
緩沖區(qū)1
BUFPT2
DW
0
緩沖區(qū)2
KBFLAG
DB
0
參數(shù),80H表示允許,00表示不允許
PROMPT
DB
'
*PLEASE
PRACTISE
TYPING*',0DH,0AH,'$'
定義提示語句
SCANTAB
DB
0,0,'1234567890-=',8,0
定義鍵盤
DB
'QWERTYUIOP[]',0DH,0
定義鍵盤第一行英文字母及符號
DB
'ASDFGHJKL;',0,0,0,0
鍵盤第二行英文字母及符號
DB
'ZXCVBNM,./',0,0,0
鍵盤第三行英文字母及符號
DB
'
',0,0,0,0,0,0,0,0,0,0,0,0,0
DB
'789-456+1230.'
******設(shè)置一些存儲地址便于理解******
EVEN
OLDCS9
DW
?
9號中斷向量地址
OLDIP9
DW
?
9號中斷向量首地址
******預(yù)設(shè)置打字練習(xí)的句子******
STR1
DB
'ABCD
EFGH
IJKL
MNOP
QRST
UVWX
YZ.'
句子1
DB
0DH,0AH,'$'
STR2
DB
'THERE
ARE
SOME
NEWSPAPERS
ON
THE
TABLE.'
DB
0DH,0AH,'$'
STR3
DB
'THERE
ARE
SOME
CLOUDS
IN
THE
SKY.'
DB
0DH,0AH,'$'
STR4
DB
'SHE
ALWAYS
EATS
HER
LUNCH
AT
NOON.'
DB
0DH,0AH,'$'
STR5
DB
'I
DO
NOT
LIKE
AUTUMN
AND
WINTER.'
;句子5CRLF
DB
0DH,0AH,'$'
COLON
DB
':','$'
EVEN
SADDR
DW
STR1,STR2,STR3,STR4,STR5
;******定義時間參數(shù)******
COUNT
DW
0
記時器記數(shù)
SEC
DW
0
秒
MIN
DW
0
分
HOURS
DW
0
小時
SAVE_LC
DW
2
DUP(?)
1C向量地址
DATA
ENDS
;------------------------------------------------
;
以下為代碼段
;------------------------------------------------
CODE
SEGMENT
ASSUME
CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN
PROC
FAR
START:
MOV
AX,STACK
MOV
SS,AX
MOV
SP,OFFSET
TOP
PUSH
DS
現(xiàn)場保護(hù)
SUB
AX,AX
PUSH
AX
MOV
AX,DATA
MOV
DS,AX
MOV
ES,AX
;*******將原中斷向量09H保存在自設(shè)的單元中******
MOV
AH,0
MOV
AL,4
INT
21H
MOV
AH,0BH
MOV
BH,0
MOV
BL,4
INT
11H
MOV
AH,35H
取中斷向量的功能調(diào)用
MOV
AL,09H
INT
21HMOV
OLDCS9,ES
MOV
OLDIP9,BX
;******設(shè)置自編處理程序的中斷向量******
PUSH
DS
MOV
DX,SEG
KBINT
自編中斷類型程序段地址放入DS
MOV
DS,DX
MOV
DX,OFFSET
KBINT
自編中斷類型程序偏移地址放入DX
MOV
AL,09H
MOV
AH,25H
設(shè)置中斷向量功能調(diào)用
INT
21H
POP
DS
;******將原中斷向量1CH保存在自設(shè)的單元中******
MOV
AH,35H
MOV
AL,1CH
INT
21H
MOV
SAVE_LC,BX
MOV
SAVE_LC+2,ES
;******設(shè)置自編處理程序的中斷向量******
PUSH
DS
MOV
DX,SEG
CLINT
MOV
DS,DX
MOV
DX,OFFSET
CLINT
MOV
AL,1CH
MOV
AH,25H
INT
21H
POP
DS
;******允許鍵盤和定時器中斷******
IN
AL,21H
允許鍵盤和定時器中斷
AND
AL,11111100B
OUT
21H,AL
;******設(shè)置顯示方式******
FIRST:
MOV
AH,0
MOV
AL,3
INT
10H
;******顯示提示信息******
MOV
DX,OFFSET
PROMPT
顯示提示信息
MOV
AH,9
INT
21H;******在屏幕上顯示例句******
MOV
SI,0
NEXT:
MOV
DX,SADDR[SI]
顯示例句
MOV
AH,09H
INT
21H
;******初始化變量******
MOV
COUNT,0
設(shè)置初值
MOV
SEC,0
MOV
MIN,0
MOV
HOURS,0
;******允許更高一級的中斷******
STI
FOREVER:
CALL
KBGET
TEST
KBFLAG,,80H
JNZ
ENDINT
PUSH
AX
CALL
DISPCHAR
POP
AX
CMP
AL,0DH
JNZ
FOREVER
MOV
AL,0AH
CALL
DISPCHAR
;******顯示時間******
CALL
DISPTIME
LEA
DX,CRLF
MOV
AH,09H
INT
21H
;******顯示例句結(jié)束否?******
ADD
SI,2
CMP
SI,5*2
JNE
NEXT
JMP
FIRST
;******原來的中斷向量******
ENDINT:
CLI
PUSH
DS
MOV
DX,SAVE_LC
MOV
AX,SAVE_LC+2MOV
DS,AX
MOV
AL,1CH
恢復(fù)中斷向量1CH
MOV
AH,25H
INT
21H
POP
DS
PUSH
DS
MOV
DX,OLDIP9
MOV
AX,OLDCS9
MOV
DS,AX
MOV
AL,09H
MOV
AH,25H
INT
21H
POP
DS
STI
RET
MAIN
ENDP
;******定時器中斷處理程序******
CLINT
PROC
NEAR
PUSH
DS
MOV
BX,DATA
MOV
DS,BX
LEA
BX,COUNT
INC
WORD
PTR[BX]
CMP
WORD
PTR[BX],18
初始化記數(shù)
JNE
RETURN
CALL
INCT
ADJ:
CMP
HOURS,12
是否滿12小時
JLE
RETURN
SUB
HOURS,12
滿足減去12
RETURN:
POP
DS
STI
IRET
CLINT
ENDP
;-------------------------------
INCT
PROC
NEAR
MOV
WORD
PTR[BX],0ADD
BX,2
INC
WORD
PTR[BX]
BX內(nèi)容自增1
CMP
WORD
PTR[BX],60
和60比較
JNE
EXIT
CALL
INCT
EXIT:
RET
INCT
ENDP
;******顯示打字練習(xí)時間******
DISPTIME
PROC
NEAR
顯示時間主段
MOV
AX,MIN
分移動到AX寄存器
CALL
BINDEC
顯示數(shù)字
MOV
BX,0
MOV
AL,':'
MOV
AH,0EH
顯示冒號
INT
10H
MOV
AX,SEC
秒移動到AX
CALL
BINDEC
MOV
BX,0
MOV
AL,':'
MOV
AH,0EH
INT
10H
MOV
BX,COUNT
MOV
AL,55D
百分秒
MUL
BL
CALL
BINDEC
RET
DISPTIME
ENDP
;******將二進(jìn)轉(zhuǎn)化為十進(jìn)顯示時間******
BINDEC
PROC
NEAR
MOV
CX,100D
顯示百位
CALL
DECDIV
MOV
CX,10D
顯示十位
CALL
DECDIV
MOV
CX,1
顯示個位
CALL
DECDIV
RET
BINDEC
ENDPDECDIV
PROC
NEAR
轉(zhuǎn)化成字符顯示
MOV
DX,0
DIV
CX
MOV
BX,0
ADD
AL,30H
轉(zhuǎn)換成ASCII
MOV
AH,0EH
INT
10H
顯示一個字符
MOV
AX,DX
RET
DECDIV
ENDP
;******獲取鍵盤鍵入的信息******
KBGET
PROC
NEAR
PUSH
BX
CLI
MOV
BX,BUFPT1
標(biāo)志緩沖區(qū)的大小
CMP
BX,BUFPT2
JNZ
KBGET2
CMP
KBFLAG,0
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度番番尋標(biāo)寶首頁數(shù)據(jù)挖掘合作合同3篇
- 2025年牛津上海版高三英語下冊月考試卷含答案
- 2025年湘師大新版選擇性必修3生物上冊階段測試試卷
- 2025年人教版六年級英語上冊階段測試試卷含答案
- 2025年度快遞分揀中心運(yùn)營權(quán)轉(zhuǎn)讓合同范本3篇
- 二零二五年度購房貸款合同范本(含旅游度假)3篇
- 二零二五年度管件行業(yè)倉儲物流及配送服務(wù)合同2篇
- 2024版房屋權(quán)屬確認(rèn)協(xié)議
- 2025年度私人健身教練簽約服務(wù)合同模板18篇
- 2025年度自助餐餐廳經(jīng)營管理合同2篇
- 《中華人民共和國藥品管理法實(shí)施條例》
- 2024-2025學(xué)年人教版道法八年級上冊 第一學(xué)期期末測試卷01
- GB/T 8574-2024復(fù)合肥料中鉀含量的測定
- 工程結(jié)算業(yè)務(wù)咨詢服務(wù)協(xié)議書
- 床旁超聲監(jiān)測胃殘余量
- 綜合實(shí)踐活動教案三上
- 公交公司風(fēng)險分級管控臺賬
- 食品安全應(yīng)急管理和突發(fā)事故報(bào)告制度
- 《新能源汽車電氣設(shè)備構(gòu)造與維修》項(xiàng)目三 新能源汽車照明與信號系統(tǒng)檢修
- 國際貿(mào)易風(fēng)險防范與應(yīng)對指南
- 2024年新課標(biāo)《義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)》測試題(附含答案)
評論
0/150
提交評論