匯編動(dòng)畫“心”程序課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  學(xué)生課程設(shè)計(jì)(論文)</p><p>  題 目: 動(dòng)畫“心”程序 </p><p>  學(xué)生姓名: 學(xué) 號(hào): </p><p>  所在院(系): 計(jì)算機(jī)學(xué)院 </p><p>  專 業(yè):

2、 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  班 級(jí): 10級(jí)計(jì)本一班 </p><p>  指 導(dǎo) 教 師: 職稱: 講師 </p><p>  2012年 1 月5日</p><p>  本科學(xué)生課程設(shè)計(jì)任務(wù)書</p><p><b

3、>  摘要</b></p><p>  根據(jù)匯編設(shè)計(jì)任務(wù):闡述動(dòng)畫心匯編程序的設(shè)計(jì)基本思想與方案,在一套PC機(jī)子上實(shí)現(xiàn)動(dòng)畫心的程序,繪制程序相應(yīng)的設(shè)計(jì)流程圖,運(yùn)用8086CPU提供的指令、偽指令、宏指令及DOS,BIOS功能調(diào)用編寫程序源代碼,同時(shí)在重要的部分要給出相應(yīng)的說(shuō)明注釋。利用計(jì)算機(jī)提供的相關(guān)軟件調(diào)試工具對(duì)所編寫會(huì)匯編程序進(jìn)行調(diào)試運(yùn)行,記錄下整個(gè)編寫設(shè)計(jì)調(diào)試分析的過(guò)程與運(yùn)行結(jié)果。<

4、/p><p>  關(guān)鍵詞:匯編語(yǔ)言、動(dòng)畫心、方案、程序原代碼、調(diào)試。</p><p><b>  Abstract</b></p><p>  According to compile the design task: animated heart assembler described the basic idea of ??the design

5、 and program a PC in the heart of the machine to achieve the animation process, the corresponding flow chart drawing program, the use of 8086CPU provide instructions, directives, macros, and DOS , BIOS function calls to

6、program source code, while an important part to give the corresponding explanatory comment. The use of computers and related software debugging tools will be written to run debu</p><p>  Keywords: assembly l

7、anguage, animated heart, programs, program source code, debugging.</p><p><b>  目錄</b></p><p><b>  摘要4</b></p><p>  Abstract5</p><p>  1、設(shè)計(jì)任務(wù)及要

8、求8</p><p>  2、程序設(shè)計(jì)基本思想9</p><p>  2、1本程序設(shè)計(jì)基本思路9</p><p>  2、2匯編程序設(shè)計(jì)過(guò)程9</p><p>  3、設(shè)計(jì)方案及程序流程圖11</p><p><b>  3.1方案11</b></p><p>

9、<b>  3.2擴(kuò)展11</b></p><p>  3.3動(dòng)畫心程序流程圖11</p><p>  4、程序源代碼與運(yùn)行結(jié)果13</p><p>  4.1程序源代碼13</p><p>  4.2程序運(yùn)行結(jié)果18</p><p>  4.3調(diào)試記錄與分析19</p>

10、<p><b>  5、總結(jié)22</b></p><p><b>  6、參考文獻(xiàn)23</b></p><p><b>  7、附錄24</b></p><p><b>  1、設(shè)計(jì)任務(wù)及要求</b></p><p>  本次課程設(shè)計(jì)要求

11、是編寫一個(gè)完整的程序以實(shí)現(xiàn)一個(gè)小動(dòng)畫。該動(dòng)畫要求先顯示一些提示信息,然后按任意鍵進(jìn)入,只見一個(gè)方框向中間由大變小,并留下痕跡,然后出現(xiàn)一個(gè)心,按空格重復(fù)出現(xiàn)心,按其他鍵將重復(fù),按Q鍵退出程序。一個(gè)顏色方框從四周向中間由大變小,中心位置出現(xiàn)一顆紅“心”。</p><p>  設(shè)計(jì)要求即為:1)按任意鍵進(jìn)入圖形顯示;</p><p>  2)按空格鍵重復(fù)出現(xiàn)“心”;</p>&l

12、t;p>  3)按回車鍵將重復(fù)整個(gè)圖形;</p><p>  4)按Q鍵退出程序。</p><p>  2、程序設(shè)計(jì)基本思想</p><p>  2、1本程序設(shè)計(jì)基本思路</p><p>  本程序主要是利用BIOS功能調(diào)用的10H中斷類型實(shí)現(xiàn)的。利用其12號(hào)功能,設(shè)置像素點(diǎn)的顏色、坐標(biāo)和個(gè)數(shù),從而畫出圖形需要的線段,如畫方框、畫斜線、

13、畫水平垂直線,以及采用行、列坐標(biāo)連續(xù)寫像素的方法填充圖形等。畫完圖形之后延時(shí),清屏。同時(shí),利用dos功能調(diào)用的08號(hào)功能,從鍵盤輸入字符。如果是任意鍵,則進(jìn)入圖形顯示;如果是回車鍵,則重新顯示這個(gè)圖形;如果是空格鍵,則改變“心”的大小;如果是“q”鍵,則退出。</p><p>  2、2匯編程序設(shè)計(jì)過(guò)程</p><p>  本次匯編語(yǔ)言程序設(shè)計(jì)要求綜合以前所學(xué)知識(shí),根據(jù)設(shè)計(jì)具體要求分析問(wèn)題

14、,將問(wèn)題分解成一個(gè)一個(gè)的步驟,每步用匯編語(yǔ)言中的指令性語(yǔ)句,按先后順序表達(dá),設(shè)計(jì)一個(gè)不僅要滿足要求,能正常運(yùn)行,實(shí)現(xiàn)指定功能的程序;還應(yīng)滿足結(jié)構(gòu)化、簡(jiǎn)明、易讀、易調(diào)試、易維護(hù)、執(zhí)行速度快、占用存儲(chǔ)空間盡量少的好程序。</p><p>  設(shè)計(jì)總過(guò)程流程圖如下圖1所示:</p><p>  3、設(shè)計(jì)方案及程序流程圖</p><p><b>  3.1方案&l

15、t;/b></p><p>  由基本設(shè)計(jì)思路擬訂出原方案。先分別編寫畫方框、畫對(duì)角線、畫水平垂直線,畫斜線,畫心型;以及清屏、清除心型、延時(shí)和顯示文本信息的子程序。然后,通過(guò)編寫主程序調(diào)用這些子程序來(lái)實(shí)現(xiàn)設(shè)計(jì)的要求。</p><p><b>  3.2擴(kuò)展</b></p><p>  通過(guò)改變BIOS功能調(diào)用的10H中斷類型的11號(hào)功能

16、(BL)的賦值來(lái)改變圖形與線條以及背景的顏色。</p><p>  將原設(shè)計(jì)任務(wù)要求的方框由大變小改成方框由小變大。同時(shí),也可改變方框變化劃過(guò)的軌跡變化,使其不在是從大框一直到小框,而是從小框到大框;使改變后的方框變化看上去是移動(dòng)的不斷從小到大變化。</p><p>  為了使運(yùn)行的動(dòng)畫人眼看上去是連續(xù)移動(dòng)的,我們可以根據(jù)人眼的反應(yīng)時(shí)間來(lái)設(shè)置延時(shí)程序。通過(guò)計(jì)算得出延時(shí)程序所需的循環(huán)的次數(shù),

17、以達(dá)到以上目的。計(jì)算式為:(人眼的反應(yīng)時(shí)間:響應(yīng)時(shí)間如果超過(guò)40毫秒,人眼就會(huì)出現(xiàn)運(yùn)動(dòng)圖像的遲滯現(xiàn)象。)</p><p>  以上擴(kuò)展方案會(huì)在程序源代碼中具體說(shuō)明。</p><p>  3.3動(dòng)畫心程序流程圖</p><p>  由設(shè)計(jì)方案畫出動(dòng)畫心程序流程圖如圖2所示:</p><p><b>  流程圖簡(jiǎn)單說(shuō)明:</b&g

18、t;</p><p>  4、程序源代碼與運(yùn)行結(jié)果</p><p><b>  4.1程序源代碼</b></p><p>  根據(jù)程序設(shè)計(jì)基本思路與方案,由于小組的分工合作,在此主要負(fù)責(zé)編寫主程序源代碼。</p><p><b>  主程序:</b></p><p>  da

19、ta segment</p><p>  buff1 db ' Welcome you to run this program!'</p><p>  db ' '</p><p>  db ' *****

20、Please press any key *****$'</p><p>  buff2 db ' My heart beats with yours!'</p><p>  db ' ***** Please press q to quit *****$'</p><p

21、><b>  data ends</b></p><p>  stack segment stack ;定義堆棧段</p><p>  stack ends</p><p>  code segment</p><p>  main proc far</p><p>  ass

22、ume cs:code,ds:data</p><p><b>  start:</b></p><p><b>  push ds</b></p><p><b>  sub ax,ax</b></p><p><b>  push ax</b><

23、/p><p>  mov ax,data</p><p><b>  mov ds,ax</b></p><p>  mov ah,00 ;設(shè)置顯示方式為320*200彩色圖形方式</p><p><b>  mov al,04</b></p><p><b>

24、  int 10h</b></p><p>  mov ah,0bh ;利用BIOS調(diào)用的10H中斷類型11號(hào)功能設(shè)定背景色</p><p><b>  mov bh,00</b></p><p>  mov bl,1 ;通過(guò)(bl)的賦值0-15設(shè)定顏色,此為藍(lán)色</p><p><b>

25、  int 10h</b></p><p>  mov ah,0bh ;設(shè)置彩色組</p><p><b>  mov bh,1</b></p><p>  mov bl,2 </p><p><b>  int 10h</b></p><p>  m

26、ov dx,offset buff1 ;顯示提示信息,即buff1的字符串內(nèi)容 </p><p><b>  mov ah,09</b></p><p><b>  int 21h</b></p><p>  mov ah,08 ;從鍵盤輸入1個(gè)字符,但不送顯示器顯示</p>&l

27、t;p><b>  int 21h</b></p><p>  call clear ;調(diào)用清屏子程序 </p><p>  sss: call text ;顯示文本信息 </p><p>  mov di,2

28、 ;開始畫大方框</p><p>  mov al,1 </p><p>  mov cx,70 ;顯示點(diǎn)所在列號(hào)</p><p>  mov dx,20 ;顯示點(diǎn)所在行號(hào)</p><p>  mov bx,160 ;確定方框大小</

29、p><p>  call box ;調(diào)用畫方框子程序</p><p>  mov cx,71 ;畫方框移動(dòng)軌跡,使方框變化看上去是移動(dòng)的</p><p>  mov dx,21 </p><p>  mov bx,158</p><p>  again: mov al,1

30、 ;由大到小畫軌跡方框</p><p><b>  mov di,0</b></p><p><b>  call box</b></p><p>  call delay</p><p><b>  mov al,0</b></p><

31、p><b>  mov di,0</b></p><p><b>  call box</b></p><p>  inc cx ;每次軌跡圖的行號(hào)和列號(hào)是自加1,軌跡圖是由大變小</p><p><b>  inc dx</b></p><p>  sub bx

32、,2 ;設(shè)定每次軌跡圖大小減小的程度</p><p>  cmp cx,94 ;當(dāng)軌跡方框大小與下一個(gè)方框相等時(shí),退出畫軌跡</p><p><b>  jnz again</b></p><p>  mov di,0 ;畫第二個(gè)方框,具體畫法與畫大方框相同</p><p>&

33、lt;b>  mov cx,95</b></p><p><b>  mov dx,45</b></p><p><b>  mov al,1</b></p><p>  mov bx,110 ;第二個(gè)方框較第一個(gè)方框較小</p><p><b>  cal

34、l box</b></p><p><b>  mov cx,96</b></p><p><b>  mov dx,46</b></p><p>  mov bx,108</p><p>  again_00: mov al,1</p><p><b>

35、;  mov di,0</b></p><p><b>  call box</b></p><p>  call delay</p><p>  call delay</p><p><b>  mov al,0</b></p><p><b>  m

36、ov di,0</b></p><p><b>  call box</b></p><p><b>  inc cx</b></p><p><b>  inc dx</b></p><p><b>  sub bx,2</b></p&

37、gt;<p>  cmp cx,114</p><p>  jnz again_00</p><p>  mov cx,115 ;畫第三個(gè)方框 </p><p><b>  mov dx,65</b></p><p><b>  m

38、ov al,1</b></p><p>  mov bx,70 ;第三個(gè)方框較前兩個(gè)小</p><p><b>  call box</b></p><p>  mov cx,116</p><p><b>  mov dx,66</b></p>

39、;<p><b>  mov bx,68</b></p><p><b>  again_01:</b></p><p><b>  mov al,1</b></p><p><b>  mov di,0</b></p><p><b&

40、gt;  call box</b></p><p>  call delay</p><p>  call delay</p><p><b>  mov al,0</b></p><p><b>  mov di,0</b></p><p><b> 

41、 call box</b></p><p><b>  inc cx</b></p><p><b>  inc dx</b></p><p><b>  sub bx,2</b></p><p>  cmp cx,129</p><p> 

42、 jnz again_01</p><p>  mov di,2 ;畫最小的方框,此時(shí)不需要畫軌跡圖</p><p>  mov al,1 </p><p>  mov cx,130</p><p><b>  mov dx,80</b>

43、</p><p><b>  mov bx,40</b></p><p><b>  call box</b></p><p>  mov di,2 ;畫對(duì)角線</p><p>  mov al,3 </p>

44、<p><b>  mov si,0</b></p><p>  mov cx,71 ;確定點(diǎn)所在列號(hào)</p><p>  mov dx,21 ;確定點(diǎn)所在行號(hào)</p><p>  mov bx,59 ;設(shè)置對(duì)角線長(zhǎng)度</p><

45、;p>  call xie_line ;調(diào)用畫對(duì)角線子程序</p><p>  mov cx,171</p><p>  mov dx,121</p><p><b>  mov bx,59</b></p><p>  call xie_line</p><p>&

46、lt;b>  mov si,1</b></p><p><b>  mov cx,71</b></p><p>  mov dx,179</p><p><b>  mov bx,59</b></p><p>  call xie_line</p><p>

47、  mov cx,171</p><p><b>  mov dx,79</b></p><p><b>  mov bx,59</b></p><p>  call xie_line</p><p>  mov cx,150 ;畫十字線,確定點(diǎn)所在列號(hào)</p>

48、;<p>  mov dx,20 ;確定點(diǎn)所在行號(hào)</p><p><b>  mov si,0</b></p><p>  mov bx,60 ;確定十字線長(zhǎng)度</p><p>  call draw_line ;調(diào)用畫線子程序</p>

49、;<p>  mov cx,150</p><p>  mov dx,120</p><p><b>  mov bx,60</b></p><p>  call draw_line</p><p><b>  mov cx,70</b></p><p>  m

50、ov dx,100</p><p><b>  mov si,1</b></p><p><b>  mov bx,60</b></p><p>  call draw_line</p><p>  mov cx,170</p><p>  mov dx,100</p&

51、gt;<p><b>  mov bx,60</b></p><p>  call draw_line</p><p>  mov cx,149 </p><p>  mov dx,120</p><p><b>  mov al,2</b>

52、</p><p><b>  mov bx,60</b></p><p><b>  mov si,0</b></p><p>  call draw_line</p><p>  mov si,1 ;畫斜線</p><p>

53、<b>  mov cx,70</b></p><p><b>  mov dx,60</b></p><p><b>  mov bx,60</b></p><p>  call mid_line ;調(diào)用畫斜線子程序</p><p> 

54、 mov cx,170 ;確定顯示點(diǎn)所在列號(hào)</p><p>  mov dx,110 ;確定顯示點(diǎn)所在行號(hào)</p><p>  mov bx,60 ;設(shè)置斜線長(zhǎng)度</p><p>  call mid_line</p&g

55、t;<p><b>  mov si,2</b></p><p>  mov cx,110</p><p><b>  mov dx,20</b></p><p><b>  mov bx,30</b></p><p>  call mid_line</p&

56、gt;<p>  mov cx,160</p><p>  mov dx,120</p><p><b>  mov bx,30</b></p><p>  call mid_line</p><p><b>  mov si,3</b></p><p><

57、;b>  mov cx,70</b></p><p>  mov dx,140</p><p><b>  mov bx,60</b></p><p>  call mid_line</p><p>  mov cx,170</p><p><b>  mov dx,9

58、0</b></p><p><b>  mov bx,60</b></p><p>  call mid_line</p><p><b>  mov si,4</b></p><p>  mov cx,110</p><p>  mov dx,180</p

59、><p><b>  mov bx,30</b></p><p>  call mid_line</p><p>  mov cx,160</p><p><b>  mov dx,80</b></p><p><b>  mov bx,30</b><

60、/p><p>  call mid_line</p><p>  mov cx,149</p><p>  mov dx,120</p><p><b>  mov al,2</b></p><p><b>  mov bx,60</b></p><p>

61、<b>  mov si,0</b></p><p>  call draw_line</p><p>  heart_: ;畫心 </p><p>  call cls_box ;清除最小方框內(nèi)的內(nèi)容/清除心</p><p>  call he

62、art ;調(diào)用畫心子程序</p><p>  mov ah,08 ;從鍵盤輸入一個(gè)字符,但不送顯示器顯示</p><p><b>  int 21h</b></p><p>  cmp al,'q' ;(al)=’q’時(shí),執(zhí)行ok的內(nèi)容,即退出<

63、;/p><p><b>  jz ok</b></p><p>  cmp al,20h ;(al)=空格時(shí),轉(zhuǎn)去執(zhí)行heart_的內(nèi)容,即清除心并重新畫心</p><p><b>  jz heart_</b></p><p>  call clear ;(al)=其他

64、鍵,則調(diào)用清屏子程序清屏</p><p>  jmp sss ;清屏后轉(zhuǎn)去執(zhí)行sss的內(nèi)容,即動(dòng)畫重復(fù)</p><p>  ok: ;退出分支程序</p><p><b>  ret</b></p><p>  main endp

65、 ;主程序結(jié)束</p><p><b>  code ends</b></p><p><b>  4.2程序運(yùn)行結(jié)果</b></p><p>  結(jié)論:原程序:動(dòng)畫“心”畫圖程序運(yùn)行結(jié)果如下列圖所示:</p><p>  圖3 運(yùn)行結(jié)果圖——顯示提示信息</p><p&g

66、t;  圖4運(yùn)行結(jié)果圖——步驟一</p><p>  圖5運(yùn)行結(jié)果圖——步驟二</p><p>  圖6 運(yùn)行結(jié)果圖——完整動(dòng)畫心圖</p><p>  4.3調(diào)試記錄與分析</p><p><b>  原程序調(diào)試過(guò)程:</b></p><p>  根據(jù)設(shè)計(jì)原理先分別編寫出畫方框、畫對(duì)角線、畫水平

67、垂直線,畫斜線,畫心型;以及清屏、清除心型、延時(shí)和顯示文本信息的子程序;然后通過(guò)主程序調(diào)用每個(gè)子程序編寫成可實(shí)現(xiàn)設(shè)計(jì)要求的完整程序。</p><p>  先將程序轉(zhuǎn)換成目標(biāo)文件,系統(tǒng)沒(méi)發(fā)現(xiàn)語(yǔ)法錯(cuò)誤。轉(zhuǎn)換成目標(biāo)文件屏幕截圖如下圖11所示:</p><p>  圖11轉(zhuǎn)換成目標(biāo)文件截圖</p><p>  將目標(biāo)文件生連接生成可執(zhí)行文件后,命令提示符顯示“ There

68、was 1 error detected.”系統(tǒng)發(fā)現(xiàn)存在一個(gè)錯(cuò)誤,并提示“Warning:No STACK segment.”</p><p>  沒(méi)有定義堆棧段,程序可以不定義堆棧段,該錯(cuò)誤可以忽略。生成可執(zhí)行文件的屏幕截圖如下圖12所示:</p><p>  圖12 生成可執(zhí)行文件截圖</p><p>  但為了不存在錯(cuò)誤,我們?cè)诔绦蛑卸x一段堆棧段</p

69、><p>  stack segment stack</p><p>  stack ends</p><p>  定義堆棧段后錯(cuò)誤消失了,如下圖13所示:</p><p>  圖13 加入堆棧段后生成可執(zhí)行文件截圖</p><p><b>  5、總結(jié)</b></p><p&g

70、t;  為期一周的匯編語(yǔ)言課程設(shè)計(jì)實(shí)驗(yàn)課,通過(guò)自己輸入?yún)R編語(yǔ)言的代碼上機(jī)實(shí)驗(yàn)調(diào)試,翻書查閱相關(guān)資料(包括教材),也學(xué)同學(xué)相互討論、交流、商議等。整個(gè)匯編語(yǔ)言課程設(shè)計(jì)使得我對(duì)匯編語(yǔ)言這門課程有了進(jìn)一步的認(rèn)識(shí),提高了自己的閱讀代碼能力,雖然本次的課程設(shè)計(jì)的代碼是比較現(xiàn)呈的,但設(shè)計(jì)本事是綜合度較高,沒(méi)有涉及硬件,實(shí)施起來(lái)還是有很大的難度。在課后與平時(shí)的學(xué)習(xí)中,我們學(xué)習(xí)與接觸的匯編知識(shí)很少很少,更不用去說(shuō)是去用匯編語(yǔ)言來(lái)寫程序?qū)嵺`。而我自己所選

71、擇的課程項(xiàng)目基本上要用到微機(jī)原理的所有知識(shí)。在實(shí)踐的過(guò)程中,還是遇到了不少的問(wèn)題難題,但是在老師、書籍和同學(xué)們的幫助下,解決了這些問(wèn)題中的大部分,最終才能基本正常的運(yùn)行處我想要的結(jié)果。通過(guò)此次對(duì)“動(dòng)畫心”程序編程,我對(duì)匯編語(yǔ)言及微機(jī)原理有了更明確的更深的認(rèn)識(shí),但是也讓我在做課程設(shè)計(jì)的同時(shí)重溫并鞏固了匯編預(yù)言的基礎(chǔ)知識(shí),真正的做到了學(xué)以致用。總之,此次課程設(shè)計(jì)實(shí)驗(yàn)的收獲不小,但是其安排不太合理,影響了其他科的學(xué)習(xí)。</p>

72、<p><b>  6、參考文獻(xiàn)</b></p><p>  [1] 吳向軍、羅源明、劉廣旋,《匯編語(yǔ)言程序設(shè)計(jì)》,高等教育出版社,2009.11 第二版</p><p>  [2] 李珍香、劉紅梅、趙潤(rùn)海,《匯編語(yǔ)言課程設(shè)計(jì)案例精編》.北京:中國(guó)水利水電出版社,2004.3</p><p>  [3] 于春凡、朱耀庭,《宏匯編語(yǔ)言程

73、序設(shè)計(jì)》.天津:南開大學(xué)出版社,1996.6第一版</p><p>  [4] 馬瑞芳,《匯編語(yǔ)言程序設(shè)計(jì)》.西安:西北工業(yè)大學(xué)出版社,2002.3第一版</p><p>  [5] 吳向軍、羅源明、劉廣旋,《匯編語(yǔ)言程序設(shè)計(jì)》,高等教育出版社,2009.11 第二版</p><p>  [6]《匯編語(yǔ)言程序設(shè)計(jì)》,吳向軍等,高等教育出版社,2002</p&

74、gt;<p>  [7]《IBM-PC匯編語(yǔ)言及程序設(shè)計(jì)》(第2版), 沈美明等,清華大學(xué)出版社,2001</p><p>  [8]《IBM-PC匯編語(yǔ)言及程序設(shè)計(jì)實(shí)驗(yàn)教程》,沈美明等,清華大學(xué)出版社 ,2001</p><p>  [9]《匯編語(yǔ)言程序設(shè)計(jì)》, 錢曉捷等,電子工業(yè)出版社,2000</p><p>  [10]《匯編語(yǔ)言程序設(shè)計(jì)》,

75、張志明等,重慶大學(xué)出版社,1997</p><p><b>  7、附錄</b></p><p><b>  完整程序源代碼:</b></p><p>  data segment</p><p>  buff1 db ' Welcome you to run this </p&g

76、t;<p>  code segment</p><p>  main proc far</p><p>  assume cs:code,ds:data</p><p><b>  start:</b></p><p><b>  push ds</b></p><

77、;p><b>  sub ax,ax</b></p><p><b>  push ax</b></p><p>  mov ax,data</p><p><b>  mov ds,ax</b></p><p>  mov ah,00 &l

78、t;/p><p>  programe!'</p><p>  db ' '</p><p>  db ' *****Please press any key*****$'</p><

79、;p>  buff2 db ' My heart beats with yours!'</p><p>  db ' ***** Please q to quit *****$'</p><p><b>  data ends</b></p><p>

80、 ??;設(shè)置顯示方式為320*200彩色圖形方式</p><p><b>  mov al,04</b></p><p><b>  int 10h</b></p><p>  mov ah,0bh </p><p><b> ??;設(shè)置彩色組</b>&

81、lt;/p><p><b>  mov bh,00</b></p><p><b>  mov bl,1</b></p><p><b>  int 10h</b></p><p>  mov ah,0bh</p><p><b>  mov bh

82、,1</b></p><p><b>  mov bl,2</b></p><p><b>  int 10h</b></p><p>  mov dx,offset buff1 </p><p><b> ?。伙@示提示信息</b></

83、p><p><b>  mov ah,09</b></p><p><b>  int 21h</b></p><p><b>  mov ah,08</b></p><p><b>  int 21h</b></p><p>  ca

84、ll clear </p><p><b>  ;清屏</b></p><p><b>  sss:</b></p><p>  call text </p><p><b>  ;顯示文本</b&

85、gt;</p><p><b>  mov di,2</b></p><p>  mov al,1 </p><p><b>  ;畫大方框</b></p><p><b>  mov cx,70</b></p><

86、p><b>  mov dx,20</b></p><p>  mov bx,160</p><p><b>  call box</b></p><p>  mov cx,71 </p><p><b>  mov dx,21</b></p><p&

87、gt;  mov bx,158</p><p><b>  again:</b></p><p><b>  mov al,1</b></p><p><b>  mov di,0</b></p><p><b>  call box</b></p&

88、gt;<p>  call delay</p><p><b>  mov al,0</b></p><p><b>  mov di,0</b></p><p><b>  call box</b></p><p><b>  inc cx</b

89、></p><p><b>  inc dx</b></p><p><b>  sub bx,2</b></p><p><b>  cmp cx,94</b></p><p><b>  jnz again</b></p><

90、p>  mov di,0 </p><p><b> ?。划嫷诙€(gè)方框</b></p><p><b>  mov cx,95</b></p><p><b>  mov dx,45</b></p><p><b>  mov al,1</b>&

91、lt;/p><p>  mov bx,110</p><p><b>  call box</b></p><p><b>  mov cx,96</b></p><p><b>  mov dx,46</b></p><p>  mov bx,108<

92、;/p><p><b>  again_00:</b></p><p><b>  mov al,1</b></p><p><b>  mov di,0</b></p><p><b>  call box</b></p><p> 

93、 call delay</p><p>  call delay</p><p><b>  mov al,0</b></p><p><b>  mov di,0</b></p><p><b>  call box</b></p><p><b

94、>  inc cx</b></p><p><b>  inc dx</b></p><p><b>  sub bx,2</b></p><p>  cmp cx,114</p><p>  jnz again_00</p><p>  mov cx,11

95、5 </p><p><b> ?。划嫷谌齻€(gè)方框</b></p><p><b>  mov dx,65</b></p><p><b>  mov al,1</b></p><p><b>  mov bx,70<

96、/b></p><p><b>  call box</b></p><p>  mov cx,116</p><p><b>  mov dx,66</b></p><p><b>  mov bx,68</b></p><p><b>

97、;  again_01:</b></p><p><b>  mov al,1</b></p><p><b>  mov di,0</b></p><p><b>  call box</b></p><p>  call delay</p><

98、;p>  call delay</p><p><b>  mov al,0</b></p><p><b>  mov di,0</b></p><p><b>  call box</b></p><p><b>  inc cx</b><

99、/p><p><b>  inc dx</b></p><p><b>  sub bx,2</b></p><p>  cmp cx,129</p><p>  jnz again_01</p><p><b>  mov di,2</b></p&g

100、t;<p>  mov al,1 </p><p><b> ??;畫小方框</b></p><p>  mov cx,130</p><p><b>  mov dx,80</b></p><p><b>  mov bx,40</b></

101、p><p><b>  call box</b></p><p><b>  mov di,2</b></p><p>  mov al,3 </p><p><b> ??;畫對(duì)角線</b></p><p&g

102、t;<b>  mov si,0</b></p><p><b>  mov cx,71</b></p><p><b>  mov dx,21</b></p><p><b>  mov bx,59</b></p><p>  call xie_line

103、</p><p>  mov cx,171</p><p>  mov dx,121</p><p><b>  mov bx,59</b></p><p>  call xie_line</p><p><b>  mov si,1</b></p><p

104、><b>  mov cx,71</b></p><p>  mov dx,179</p><p><b>  mov bx,59</b></p><p>  call xie_line</p><p>  mov cx,171</p><p><b>  m

105、ov dx,79</b></p><p><b>  mov bx,59</b></p><p>  call xie_line</p><p>  mov cx,150 </p><p><b> ??;畫十字線</b></p&

106、gt;<p><b>  mov dx,20</b></p><p><b>  mov si,0</b></p><p><b>  mov bx,60</b></p><p>  call draw_line</p><p>  mov cx,150</

107、p><p>  mov dx,120</p><p><b>  mov bx,60</b></p><p>  call draw_line</p><p><b>  mov cx,70</b></p><p>  mov dx,100</p><p>

108、;<b>  mov si,1</b></p><p><b>  mov bx,60</b></p><p>  call draw_line</p><p>  mov cx,170</p><p>  mov dx,100</p><p><b>  mov

109、bx,60</b></p><p>  call draw_line</p><p>  mov si,1 </p><p><b> ??;畫斜線</b></p><p><b>  mov cx,70</b></p&g

110、t;<p><b>  mov dx,60</b></p><p>  mov bx,60 </p><p>  call mid_line </p><p>  mov cx,170</p><p>  mov dx,110</p><p><b>  mov

111、bx,60</b></p><p>  call mid_line</p><p><b>  mov si,2</b></p><p>  mov cx,110</p><p><b>  mov dx,20</b></p><p><b>  mov

112、 bx,30</b></p><p>  call mid_line</p><p>  mov cx,160</p><p>  mov dx,120</p><p><b>  mov bx,30</b></p><p>  call mid_line</p><

113、;p><b>  mov si,3</b></p><p><b>  mov cx,70</b></p><p>  mov dx,140</p><p><b>  mov bx,60</b></p><p>  call mid_line</p>&l

114、t;p>  mov cx,170</p><p><b>  mov dx,90</b></p><p><b>  mov bx,60</b></p><p>  call mid_line</p><p><b>  mov si,4</b></p>&

115、lt;p>  mov cx,110</p><p>  mov dx,180</p><p><b>  mov bx,30</b></p><p>  call mid_line</p><p>  mov cx,160</p><p><b>  mov dx,80</b

116、></p><p><b>  mov bx,30</b></p><p>  call mid_line</p><p>  mov cx,149 </p><p><b> ?。籦old</b></p><p

117、>  mov dx,120</p><p><b>  mov al,2</b></p><p><b>  mov bx,60</b></p><p><b>  mov si,0</b></p><p>  call draw_line</p><

118、p>  mov cx,151</p><p>  mov dx,120</p><p><b>  mov al,2</b></p><p><b>  mov bx,60</b></p><p><b>  mov si,0</b></p><p&g

119、t;  call draw_line</p><p>  heart_: </p><p><b> ??;畫心</b></p><p>  call cls_box</p><p>  call heart</p><p><b&

120、gt;  mov ah,08</b></p><p><b>  int 21h</b></p><p>  cmp al,'q' </p><p> ??;(al)=’q’ 退出</p><p><b>  jz ok</b>

121、;</p><p>  cmp al,20h </p><p> ?。?al)=空格 重復(fù)出現(xiàn)心</p><p><b>  jz heart_</b></p><p>  call clear</p><p><b>  jmp sss&

122、lt;/b></p><p><b>  ok:</b></p><p><b>  ret</b></p><p>  main endp </p><p><b>  ;主程序結(jié)束</b></p><

123、p>  draw_Line proc near </p><p><b> ?。划嬀€子程序</b></p><p><b>  push bx</b></p><p><b>  cmp si,0</b></p><p>  jz V_lin

124、e1</p><p><b>  add bx,cx</b></p><p><b>  H_line:</b></p><p>  mov ah,0ch </p><p><b>  ;寫像素</b></p><

125、p><b>  int 10h</b></p><p><b>  cmp di,0</b></p><p><b>  jz aa0</b></p><p><b>  cmp di,1</b></p><p><b>  jz aa1&

126、lt;/b></p><p>  call delay</p><p><b>  aa1:</b></p><p>  call delay</p><p><b>  aa0:</b></p><p><b>  inc cx</b></

127、p><p><b>  cmp cx,bx</b></p><p>  jne H_line</p><p>  jmp exit_line</p><p><b>  V_line1:</b></p><p><b>  add bx,dx</b><

128、/p><p><b>  V_line:</b></p><p>  mov ah,0ch</p><p><b>  cmp di,0</b></p><p><b>  jz bb0</b></p><p><b>  cmp di,1<

129、/b></p><p><b>  jz bb1</b></p><p>  call delay</p><p><b>  bb1:</b></p><p>  call delay</p><p><b>  bb0:</b></p&g

130、t;<p><b>  int 10h</b></p><p><b>  inc dx</b></p><p><b>  cmp dx,bx</b></p><p>  jne V_line</p><p>  exit_line:</p>&l

131、t;p><b>  pop bx</b></p><p><b>  ret</b></p><p>  draw_Line endp </p><p>  xie_line proc near </p><p>&l

132、t;b> ?。划媽?duì)角線子程序</b></p><p><b>  add bx,cx</b></p><p><b>  cmp si,1</b></p><p>  jz xieline_1</p><p>  xieline_0:</p><p>  m

133、ov ah,0ch</p><p><b>  int 10h</b></p><p><b>  inc dx</b></p><p><b>  inc cx</b></p><p><b>  cmp cx,bx</b></p><

134、;p>  jne xieline_0</p><p>  jmp exit_xie</p><p>  xieline_1:</p><p>  mov ah,0ch</p><p><b>  int 10h</b></p><p><b>  dec dx</b>&

135、lt;/p><p><b>  inc cx</b></p><p><b>  cmp cx,bx</b></p><p>  jne xieline_1</p><p><b>  exit_xie:</b></p><p><b>  ret

136、</b></p><p>  xie_line endp</p><p>  Mid_line proc near ;畫斜線子程序</p><p><b>  add bx,cx</b></p><p><b>  cmp si,2</b></p><p>

137、  jz midline_2</p><p><b>  cmp si,3</b></p><p>  jz midline_3</p><p><b>  cmp si,4</b></p><p>  jz midline_4</p><p>  midline_1: &l

138、t;/p><p>  mov ah,0ch</p><p><b>  int 10h</b></p><p><b>  inc dx</b></p><p><b>  add cx,2</b></p><p><b>  cmp cx,bx&

139、lt;/b></p><p>  jne midline_1</p><p>  jmp exit_lines</p><p>  midline_2:</p><p>  mov ah,0ch</p><p><b>  int 10h</b></p><p>&l

140、t;b>  add dx,2</b></p><p><b>  inc cx</b></p><p><b>  cmp cx,bx</b></p><p>  jne midline_2</p><p>  jmp exit_lines</p><p>

141、  midline_3:</p><p>  mov ah,0ch</p><p><b>  int 10h</b></p><p><b>  dec dx</b></p><p><b>  add cx,2</b></p><p><b&g

142、t;  cmp cx,bx</b></p><p>  jne midline_3</p><p>  jmp exit_lines</p><p>  midline_4:</p><p>  mov ah,0ch</p><p><b>  int 10h</b></p>

143、;<p><b>  sub dx,2</b></p><p><b>  inc cx</b></p><p><b>  cmp cx,bx</b></p><p>  jne midline_4</p><p>  exit_lines:</p>

144、<p><b>  ret</b></p><p>  mid_line endp</p><p>  box proc near </p><p><b>  ;畫方框子程序</b></p><p><b>  push cx</

145、b></p><p><b>  push dx</b></p><p><b>  push cx</b></p><p><b>  push dx</b></p><p><b>  push cx</b></p><p&g

146、t;<b>  push dx</b></p><p><b>  push cx</b></p><p><b>  push dx</b></p><p><b>  mov si,1</b></p><p>  call draw_line

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論