組合語言程式設計實習報告

2021-09-28 22:38:04 字數 5655 閱讀 9459

學號 3007218144

姓名趙立夫

學院名稱軟體學院

專業軟體工程

時間 2009 .9.18

目□□錄

(三號、黑體、居中、目錄兩字空兩格、與正文空一行)

第一章、題目 …………

第二章、設計說明書 (空兩格)(小三號、宋體)…×

2.1 時鐘程式

2.2 文字編輯器

………………

第三章、測試分析報告 ×

3.1 時鐘程式

3.2 文字編輯器

………………

第四章、實習總結

4.1 時鐘程式

4.2 文字編輯器

………………

參考文獻

一、 題目

● 原題表述

● 闡述所選的要求及整體規劃

● 詳細說明題目擴充套件後的功能,詳細說明系統中每個環節的具體功能要求

二、 設計說明書

● 主要演算法

● 系統邏輯總體架構(如,總的功能模組圖和說明、設計的邏輯架構圖和說明等)

● 功能模組的實現

a) 每個功能模組的主要功能描述

b) 每個功能模組的實現流程,介面設計(貼圖),關鍵**(只要關鍵的**行,不要整段**)

c) 所用到的計算公式

● 找出本次實習專案中,你自己認為是實現難點並且通過實習成功解決了的幾個問題,描述你的解決方法。

三、 測試分析報告包括的內容

● 測試的目的

● 所有測試用例

● 測試用例的分布統計表

● 測試結果及分布統計表

● 測試結論

四、 實習總結

● 總結在實習過程中的體會

五、 參考文獻

● 三篇以上

● 格式要求必須符合天津大學本科畢業設計**模版中關於參考文獻的格式要求

第一章題目

1.1 時鐘程式

1.1.1 原體表述

要求:a.能夠設定時間

b.能夠設定鬧鐘

c.整點能夠提示

1.1.2 整體規劃與功能要求

主要功能有:

● 能夠正確的計時並顯示時間

● 能夠設定時間

● 可以設定鬧鐘

● 可整點以報時

● 可以顯示每次設定的狀態

功能要求:

顯示時間需要的功能:在全屏模式下畫出表盤,秒針,並能夠保證重新整理正確

計時功能: 要求可以設計正確計時的方法。

設定時間: 要求可以判斷設定時間的格式是否正確,要求可以從鍵盤讀取按鍵,並能夠正確的設定並顯示時間。

設定鬧鐘: 可以發聲音;但發聲前必須正確檢測時間,可以利用按鍵設定鬧鐘並檢測設定時間的格式是否正確。

文字提示: 修改時顯示,修改完成後利用卷屏進行清除文字

顯示狀態: 根據設定時間的格式判斷正確與否並顯示。

1.2 文字編輯器

1.2.1 原體表述

使用win32程式設計設計乙個功能及介面風格類似於記事本的文字編輯器。

主要實現的功能:

主選單應包含基本的檔案操作,包括新建、開啟、儲存、另存、退出,以及基本的文字編輯操作,包括撤銷、剪下、複製、貼上、刪除、全選。

各選單功能項應該有與之相對應的熱鍵字元和快捷鍵。

支援簡單的右鍵選單功能,提供便捷的編輯處理。

較高要求:支援字型、文字顏色等特性。

第二章設計說明書

2.1 時鐘程式

2.1.1 主要演算法

主要演算法:畫圓的演算法。

畫直線的演算法。

直線演算法:從(x0,y0)到(x1,y1)直線。由於螢幕上的畫素點可以認為是網格狀的每一處交點,所以不能精確地顯示直線的每一點,所以只能近似的顯示。

通過比較來尋找周圍離直線最近的點來盡可能的精確直線。所以從(x0,y0)座標開始,可以按照一行一行來找點,因為一行只能有一點來確定其在直線上,所以通過判斷(x0+1)行與直線相交的點,若其剛好為一畫素點,則那點為下一點,若不是,則尋找交點旁邊的兩個座標,通過判斷其哪點離交點最近則選擇之,通過比較,知道下一點為(x0+1,y)或(x0+1,y0+1)。如此一行行判斷直到x1行即可得到近似的直線。

也可以一列列判斷,第一點為(x0,y0),然後看第二列,要麼為(x0,y0+1)或者(x0+1,y0+1),依次一列列判斷即可。

畫圓演算法:與畫線一樣,通過尋找與標準圓最近的一點,然後依次畫點。但是由於圓是對稱的,所以採取八點法來畫,只用尋找出0度到45度之間的點,再通過對稱即可找出其它七點。

例如:0到四十五度一點(x,y),則其與四十五度的直線對成點的是(y,x),再找(y,x)與橫座標對稱的點(y,-x),再找出(y,-x)與135度直線對稱的點(x,-y),再找(x,-y)與縱座標對稱的點(-x,y),再找出(-x,y)與45度直線對稱的點(y,-x),再找(y,-x)與橫座標對稱的點(-y,x),再找(-y,x)與135度對稱的點(-x,y);即找出八點。依次八點畫即可畫出。

2.1.2 系統邏輯總體架構

2.1.2 功能模組的實現

a) 每個功能模組的主要功能描述

1) 設定**模式並畫出表結構:主要為顯示表設定全屏模式,然後畫僺表的外部基本結構

2) 為1ch中斷新增計數顯礚旴蘊的函式:主要為了使1ch可以計數,並且在裡邊添入函式使得秒針,小時和分鐘可以變化。

3) 判斷模組:用來判斷鐘、整點還有按鍵,以產生不同的動作

4) 設定時間:可以設定時間

5) 設定鬧鐘:可以設定鬧鐘時間

6) 停止計時並結束:佻得1ch還原為空例程,然後結敟程式

7) 清除緩衝區:通過判斷無擯按鍵來清除,即不做動作

b) 每個功能模組犄厞現流程,介面設計(貼圖),關鍵**

1) 設定**模式並畫出表結構:

通過呼叫10h中斷改變**模式。畫出表結構:通過畫圓函式來畫出兩個圓,並通過畫線函式來畫出個數字框。

mov ax,0012h;設定**模式

int 10h

;畫表結構

clock proc

mov color,1110b

mov xxin, 320

mov yxin ,240

mov r,120

mov x,0

mov y,120

call yuan ;大圓

mov color,1110b

mov xxin ,320

mov yxin ,280

mov r,30

mov x,0

mov y ,30

call yuan ;小圓

mov color, 1110b

call kua ;畫出數字框

retclock endp

2) 為1ch中斷新增計數顯示時間的函式:

這個為程式的核心部分:通過1ch每秒鐘計數18.2次來計數,到18次秒數增長一,到180次減去計數器兩次。

顯示時間主要有用背景色代替上次的影象,然後產生當前的影象:秒針是每秒去除一次並新產生一次,分鐘是每分鐘產生並新建一次,小時是每小時產生並新建一次。

push ds;

mov ax,seg ctime

mov ds,ax

mov ax,251ch

mov dx,offset ctime

int 21h

pop ds

ctime proc

push ax

push bx

push ds

mov ax,datas

mov ds,ax

cmp count,18

jl ccl1

mov count,0

cmp second,59

jb ccl2

mov second,0

call cm ;當秒針需要動時擦去上一秒的秒針

mov color,1001b

call miao;顯示新的秒針

jmp ccl3

ccl1:

jmp cl1

ccl2:

jmp cl2

ccl3 :

cmp minute,59

jb cl3

mov minute,0

call cmi;擦去上一次的分鐘

mov color,1001b

call mnum;顯示當前分鐘數

cmp hour,23

jb cl4

mov hour,0

call cho;擦去上一小時的分鐘

mov color,1001b

call hnum;顯示當前小時

jmp cl5

cl1:

inc count

mov ax,count

mov bx,10

mov dx,0

div bx

cmp dx,0

jz c1

mov color,0

call ld

jmp cl5

c1:mov color,1001b

call ld

jmp cl5

cl2:

inc second

call cm

mov color,1001b

call miao

jmp cl5

cl3:

inc minute

call cmi

mov color,1001b

call mnum

jmp cl5

cl4:

inc hour

call cho

mov color,1001b

call hnum

cl5:

cmp jcount,182

jb cl6

mov jcount,0

sub count,2

jmp cl7

cl6:

inc jcount

cl7:

pop ds

pop bx

pop ax

iret

ctime endp

3) 判斷模組:

通過普通判斷語句一條條判斷。

jp1:

;測試鬧鐘時間

mov ax,ha

cmp hour,ax

jne last

mov ax,am

cmp minute,ax

jne last

cmp second,5

ja last

mov cx,1000

mov bx,6000

call sound

last:

;測試整點報時

cmp minute,0

jne xin

cmp second ,1

ja xin

mov cx,100

mov bx,3000

call sound

xin: ;檢查鍵盤按鍵

mov ah,1

int 16h

jz jp1

mov ah,8

int 21h

cmp al,'q'

je q

cmp al,'s'

je jp2

cmp al,'c'

je jp3

mov ah,10h

int 16h

jmp jp1

jp2:

call settime

jmp jp1

組合語言程式設計

實驗報告 軟體學院 一 實驗目的與意義 理解並熟練掌握組合語言程式設計過程中的編輯 彙編 鏈結和除錯等各個步驟,提高對彙編課程內容的理解和組合語言的掌握,通過上機練習加深對課程內容的理解和掌握。通過組合語言編制的程式上機除錯 執行檢驗程式設計是否正確。熟悉和掌握編輯 彙編 連線和除錯四個實用程式的使...

三組合語言程式設計

軟體要求 win98或win2000 masm5.0或masm6.0 含masm link debug等程式 硬體要求 ibm pc及相容機 實驗一非壓縮bcd碼乘法 一 實驗目的 學習程式設計的基本方法和技能,熟練掌握用組合語言設計 編寫 除錯和執行程式的方法。為後續課程打下堅實的基礎。同時熟練掌...

組合語言程式設計A卷

2011級組合語言程式設計課程試題 a卷 合分人複查人 1 用組合語言書寫的程式叫做masm要求該檔案的副檔名是編寫32位windows應用程式應選擇儲存模型。2 組合語言語句有兩種,分別是和3 除外設資料外的資料定址方式有3類,分別稱為 和定址。4 進行windows應用程式開發時,需要庫檔案,執...