2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  《微型計算機原理及應(yīng)用》課程設(shè)計</p><p> 圖形畫法</p><p> 姓名</p><p> 院系信息學(xué)院自動化系</p><p> 班級</p><p> 學(xué)號</p><p> 指導(dǎo)教師</p><p> 時間2010年 12月

2、 29日</p><p><b>  目 錄</b></p><p><b>  摘要 I</b></p><p>  introductionII</p><p><b>  1引言1</b></p><p>  1.1課程設(shè)計的目

3、的1</p><p>  1.2課程設(shè)計的內(nèi)容1</p><p>  1.3設(shè)計要求1</p><p><b>  2設(shè)計過程2</b></p><p>  2.1設(shè)計規(guī)劃2</p><p>  2.2程序流程圖2</p><p>  2.3程序及注

4、釋3</p><p><b>  3仿真及調(diào)試6</b></p><p><b>  4結(jié)束語7</b></p><p>  4.1實驗總結(jié)7</p><p><b>  4.2展望7</b></p><p><b>  參考

5、文獻(xiàn)8</b></p><p><b>  摘要</b></p><p>  微型計算機原理與應(yīng)用是通過學(xué)習(xí)8086處理器,理解并熟悉微型計算機的結(jié)構(gòu),組成,最終能通過搭建電路和編寫程序來實現(xiàn)控制和計算等操作。本設(shè)計通過學(xué)習(xí)用匯編語言編寫一個屏幕繪圖程序,在屏幕上繪制一個標(biāo)準(zhǔn)的圓。通過使用系統(tǒng)功能調(diào)用INT 10H繪圖指令來實現(xiàn)坐標(biāo)畫圖。通過一定的算法,

6、計算出圓的點所在的位置,然后在對應(yīng)坐標(biāo)下用INT 10H來打點。程序在EMU8086仿真軟件上編寫和仿真。</p><p>  關(guān)鍵詞:微型計算機;8086處理器;匯編語言;畫圓;INT 10</p><p><b>  圖形畫法</b></p><p>  電氣1081,200811631114,霍兆權(quán)</p><p>

7、;<b>  指導(dǎo)教師:張瑛</b></p><p><b>  引言</b></p><p>  微型計算機簡稱“微型機”、“微機”,由于其具備人腦的某些功能,所以也稱其為“微電腦”。是由大規(guī)模集成電路組成的、體積較小的電子計算機。它是以微處理器為基礎(chǔ),配以內(nèi)存儲器及輸入輸出(I/0)接口電路和相應(yīng)的輔助電路而構(gòu)成的裸機。把微型計算機集成在一個

8、芯片上即構(gòu)成單片微型計算機(Single Chip Microcomputer)。</p><p>  匯編語言(AssemblyLanguage)是面向機器的程序設(shè)計語言。在匯編語合中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標(biāo)號(Label)代替地址碼。這樣用符號代替機器語言的二進(jìn)制碼,就把機器語言變成了匯編語言。于是匯編語言亦稱為符號語言。使用匯編語言編寫的程序,機器不能直接識別,要

9、由一種程序?qū)R編語言翻譯成機器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統(tǒng)軟件中語言處理系統(tǒng)軟件。匯編程序把匯編語言翻譯成機器語言的過程稱為匯編。</p><p>  本設(shè)計用的INT 10H指令,是由 BIOS 對屏幕及顯示器所提供的服務(wù)程序,而后倚天公司針對倚天中文提供了許多服務(wù)程序,這些服務(wù)程序也加掛在 INT 10H 內(nèi)。使用 INT 10H 中斷服務(wù)程序時,先指定 AH 寄存器編號,該編號表示欲

10、調(diào)用的功用,當(dāng)一切設(shè)定好之后再調(diào)用 INT 10H。</p><p><b>  課程設(shè)計的目的</b></p><p>  通過自己完成一個匯編程序設(shè)計,熟悉并掌握微型計算機的編程控制方法和設(shè)計流程,學(xué)習(xí)如何通過微型計算機完成一項工作。通過熟悉匯編指令,可以加深對微型計算機面向機器的特點。</p><p><b>  課程設(shè)計的內(nèi)容

11、</b></p><p>  圖形畫法,通過畫一個圓,掌握使用INT 10H系統(tǒng)功能指令顯示的方法;通過學(xué)習(xí)圓的點的位置計算,熟悉用匯編編寫計算程序的方法。</p><p><b>  設(shè)計要求</b></p><p>  在顯示器上畫出規(guī)則的圖形(圓形)</p><p><b>  設(shè)計過程<

12、;/b></p><p><b>  設(shè)計規(guī)劃</b></p><p>  本設(shè)計采用INT 10H功能號為12的繪圖功能,該功能簡介如下:</p><p>  AH=0Ch/INT 10H 是在繪圖模式中顯示一點 ( 也就是寫入點像,write graphics pixel ),而 AH=0DH/INT 10H 則是讀取點像 ( rea

13、d graphics pixel )。</p><p>  寫入時,要寫入位置 X 座標(biāo)存于 CX 寄存器,Y 座標(biāo)存于 DX 寄存器,顏色存于 AL 寄存器。和文字模式相同,螢光幕上的 Y 座標(biāo)是最上面一列為零,越下面越大,X 座標(biāo)則和數(shù)學(xué)的定義相同。</p><p>  那么,可以采用坐標(biāo)打點的方法,先把圓要畫的點先計算出來,然后按點來作圖。應(yīng)為圓的四象限對稱關(guān)系,通過計算一個象限的坐

14、標(biāo),然后用坐標(biāo)對稱法來把其余象限也畫出來。</p><p>  由于該功能的坐標(biāo)為屏幕上方為y軸起始值,x軸位于屏幕中線。所以,得到的圓的點的坐標(biāo)值還要通過坐標(biāo)平移才能對應(yīng)正確的屏幕坐標(biāo)。</p><p>  位置算法可以采用x^2+y^2=R^2來判斷,可以使用掃描的方法,x先從0開始,把y值從半徑開始,通過判斷x^2+y^2<=R^2來確定該y值是否滿足近似在圓上,不滿足y減一,

15、直到找到y(tǒng)滿足上式為止。找到該點的之后,x自加一,繼續(xù)找下一點。</p><p>  由于x越大,打的點越分散,需要交換坐標(biāo)軸再畫一次。</p><p><b>  程序流程圖</b></p><p><b>  程序及注釋</b></p><p><b>  程序及注釋如下:</b

16、></p><p>  ;****************************************************************</p><p>  ;****************畫圓程序(Cycle)*******************************</p><p>  ;****************Finish

17、ed By FOX*********************************</p><p>  ;****************************************************************</p><p>  data segment </p><p>  x1 dw 320 ;預(yù)設(shè)圓點x坐標(biāo)</p

18、><p>  x2 dw 320 </p><p>  y1 dw 140 ;預(yù)設(shè)圓點y坐標(biāo)=(y1-y2)/2</p><p>  y2 dw 340 </p><p>  color db 6 </p><p>  xx dw 0 ;</p>&

19、lt;p>  yy dw 100 ;預(yù)設(shè)圓半徑</p><p>  count dw 0 ;坐標(biāo)變化差值</p><p>  pow dw 10000 ;半徑R^2值</p><p>  cmp1 dw 420 ;第一次畫圓完成判斷值 </p><p>  cmp2 dw 340 ;

20、第二次畫圓判斷值 </p><p>  exit_text db 'Cycle has finished,press any key to continue....$' </p><p><b>  data ends</b></p><p>  stack segment stack </p><p

21、>  dw 100 dup(?) </p><p>  stack ends </p><p>  code segment</p><p>  assume cs:code,ds:data,ss:stack </p><p><b>  start: </b></p><p&

22、gt;  mov ax,data </p><p>  mov ds,ax </p><p>  mov ax,12h </p><p>  int 10h </p><p>  ;-------------------------------- </p><p>  go1:

23、 ;畫圓的主程序</p><p>  call judge ;判斷x^2+y^2是否小于pow,即圓的半徑,已設(shè)為100</p><p>  mov di,count </p><p>  add y1,di ;圓上半部分的y坐標(biāo)加計算偏移值</p><p>  sub y2,di

24、;圓下半部分的y坐標(biāo)減計算偏移值</p><p>  call doit ;調(diào)用畫圖子程序</p><p>  mov ax,x1</p><p>  cmp ax,cmp1 ;判斷第一次畫圓是否完成</p><p>  je go5 ;完成交換坐標(biāo)y<=>x再畫一次</p>

25、<p>  inc x1 ;x1++ </p><p>  dec x2 ;x2-- </p><p><b>  jmp go1</b></p><p>  ;--------------------------------- </p><p>  g

26、o5: ;交換x與y坐標(biāo)軸 </p><p>  mov xx,0 </p><p>  mov yy,100 </p><p>  mov x1,420 </p><p>  mov x2,220 </p><p>  mov y1,240

27、</p><p>  mov y2,240 </p><p>  go4: ;繼續(xù)畫一個圓</p><p>  call judge </p><p>  mov di,count </p><p>  sub x1,di </p><p>  ad

28、d x2,di </p><p>  call doit </p><p>  mov ax,y1 </p><p>  cmp ax,cmp2 ;判斷畫圓完成,完成運行結(jié)束程序 </p><p>  je exit </p><p><b>  inc y1 </b>

29、</p><p><b>  dec y2 </b></p><p>  jmp go4 </p><p>  ;--------------------------------</p><p>  judge proc ;判斷x^2+y^2是否小于pow,即圓的半徑,已設(shè)為100</

30、p><p><b>  pusha </b></p><p>  mov count,0 </p><p><b>  go2: </b></p><p>  mov ax,xx </p><p>  call mul1 ;把x坐標(biāo)求平方 </p>

31、<p>  mov bx,ax </p><p>  mov ax,yy </p><p>  call mul1 ;把y坐標(biāo)求平方 </p><p>  add ax,bx </p><p>  cmp ax,pow;比較x^2+y^2與半徑的平方 </p><p>  jna go

32、3 ;小于或等于</p><p>  dec yy ;把yy坐標(biāo)減一,找下一點</p><p>  inc count </p><p>  jmp go2 </p><p>  ;------------------------------- </p><p><b>  go3

33、:</b></p><p>  inc xx ;把x坐標(biāo)加一,畫下一個x的點</p><p><b>  popa </b></p><p><b>  ret </b></p><p><b>  endp </b></p><

34、p>  ;-----------------------------------</p><p>  doit proc ;調(diào)用INT 10H來畫圓 </p><p>  pusha ;畫第一象限部分</p><p> 

35、 mov ah,12 ;AH=0Ch/INT 10H,在繪圖模式中顯示一點 </p><p>  mov al,color ;設(shè)置圖片顏色</p><p>  mov dx,y1 ;設(shè)置繪圖y坐標(biāo)</p><p>  mov cx,x1 ;設(shè)置繪圖x坐標(biāo)</p><p>  pusha

36、 ;畫第二象限部分</p><p>  int 10h </p><p><b>  popa </b></p><p>  mov cx,x2 </p><p>  pusha </p><p>  int 10h </p>

37、<p>  popa ;畫第三象限部分</p><p>  mov dx,y2 </p><p><b>  pusha </b></p><p>  int 10h </p><p>  popa ;畫第四象限部分</p><p>

38、  mov cx,x1 </p><p>  int 10h </p><p><b>  popa </b></p><p><b>  ret </b></p><p>  doit endp </p><p>  ;---------------

39、----------------</p><p>  mul1 proc ;把cx的值平方</p><p>  push bx </p><p>  push cx </p><p>  push dx </p><p>  mov cx,ax </p><p&g

40、t;<b>  mul cx </b></p><p><b>  pop dx </b></p><p><b>  pop cx </b></p><p><b>  pop bx </b></p><p><b>  ret

41、 </b></p><p>  mul1 endp </p><p>  ;-------------------------------- </p><p><b>  exit: </b></p><p>  lea dx,exit_text;輸出推出提示信息 </p><p

42、>  mov ah,9 </p><p>  int 21h </p><p>  mov ah,1 </p><p>  int 21h ;等待鍵盤輸入 </p><p>  int 20h ;返回系統(tǒng)</p><p>  code end

43、s </p><p>  end start </p><p>  ;-------------------------------- </p><p>  code ends </p><p>  end start</p><p><b>  仿真及調(diào)試</b></p&g

44、t;<p>  通過仿真發(fā)現(xiàn),只畫一次圓的效果不好,只有x較小時效果好,而當(dāng)x變大,打的點越分散,如圖3.1</p><p><b>  圖3.1</b></p><p>  而通過交換坐標(biāo)軸,也就是以屏幕y軸來掃描,就可以把比較分散的那部分補畫好,如圖3.2</p><p><b>  圖3.2</b>&l

45、t;/p><p><b>  結(jié)束語</b></p><p><b>  實驗總結(jié)</b></p><p>  本設(shè)計通過查找相關(guān)書籍,網(wǎng)上查找相應(yīng)的例程,通過閱讀例程和優(yōu)化例程來成功實現(xiàn)繪制一個比較標(biāo)準(zhǔn)的圓。整個設(shè)計關(guān)鍵點是計算圓的起始坐標(biāo)值、坐標(biāo)平移和INT 10H的功能調(diào)用。這需要一定的數(shù)學(xué)知識。通過這次設(shè)計,使我提高了

46、編程的能力,特別是對程序改錯的能力。編寫一個程序,一定要有清晰的程序執(zhí)行流程,這不僅可以更有效的按程序的流程圖來編寫程序,而且可以清晰的那些執(zhí)行過程是循環(huán),可以使用子程序來減少編寫程序的工作量和程序的大少。一個比較大的程序,需要按程序塊的編寫方法來逐步完成整體設(shè)計,而不能一蹴而就,這樣,就不好調(diào)試和發(fā)現(xiàn)程序中的問題。這次設(shè)計用到了不少編程的思想,如子程序調(diào)用,程序參數(shù)傳遞等等,對熟悉課本知識和以后的設(shè)計有很大的幫助。</p>

47、<p><b>  展望</b></p><p>  本設(shè)計通過計算圓在點的坐標(biāo)的值來來繪圖的,雖然已經(jīng)四等分圓來對稱畫了,但是計算量還是不少,導(dǎo)致圖形出現(xiàn)時間過長。由于圓是一個可以任意等分的圖形,可以選擇適當(dāng)?shù)姆椒▉淼确謭A,通過對稱畫法來減少計算量,特別是平方的計算次數(shù)。</p><p><b>  參考文獻(xiàn)</b></p&

48、gt;<p>  [1]鄭學(xué)堅.微型計算機原理及應(yīng)用.北京:清華大學(xué)出版社,2010</p><p>  [2]鄭逢興.微型計算機接口原理與技術(shù).長沙:國防科技大學(xué)出版社,1993</p><p>  [3]劉復(fù)華.8098單片機及其應(yīng)用系統(tǒng)設(shè)計.北京:清華大學(xué)出版社,1992</p><p>  [4]朱仲英.微型計算機原理及應(yīng)用.上海:上海交通大學(xué)

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論