可視化程序設(shè)計(jì)考查辦法打字聯(lián)系軟件_第1頁
可視化程序設(shè)計(jì)考查辦法打字聯(lián)系軟件_第2頁
可視化程序設(shè)計(jì)考查辦法打字聯(lián)系軟件_第3頁
可視化程序設(shè)計(jì)考查辦法打字聯(lián)系軟件_第4頁
可視化程序設(shè)計(jì)考查辦法打字聯(lián)系軟件_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論