版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 微機應(yīng)用系統(tǒng)設(shè)計與</b></p><p><b> 綜合實驗設(shè)計報告</b></p><p> 設(shè)計題目 圓餅顯示商品日銷售量的百分比 </p><p> 指導(dǎo)老師 </p><p> 設(shè)計者
2、 </p><p> 專業(yè)班級 </p><p> 設(shè)計日期 2013年12月21日~2014年1月15日</p><p><b> 目 錄</b></p><p> 第一章 微機應(yīng)用系統(tǒng)課程設(shè)計的目的意義1
3、</p><p> 1.1 設(shè)計目的1</p><p> 1.2 課程在教學(xué)計劃中的地位和作用2</p><p> 第二章 設(shè)計任務(wù)2</p><p> 2.1 設(shè)計內(nèi)容及要求2</p><p> 2.2 課程設(shè)計的要求3</p><p> 第三章 總體設(shè)計方案
4、4</p><p> 3.1 設(shè)計思想5</p><p> 3.2 總體設(shè)計流程圖6</p><p> 第四章 軟件設(shè)計6</p><p> 4.1 流程圖及其說明6</p><p> 4.2 軟件系統(tǒng)的使用說明22</p><p> 4.3 源程序及其說明
5、24</p><p> 第五章 程序調(diào)試與使用49</p><p> 5.1 程序調(diào)試49</p><p> 5.2 使用說明51</p><p> 第六章 收獲、體會53</p><p><b> 參考文獻55</b></p><p> 微機
6、應(yīng)用系統(tǒng)課程設(shè)計的目的意義</p><p><b> 1.1 設(shè)計目的</b></p><p> 充分認識理論知識對應(yīng)用技術(shù)的指導(dǎo)性作用,進一步加強理論知識與應(yīng)用相結(jié)合的實踐和鍛煉。通過設(shè)計實踐能夠進一步加深對專業(yè)</p><p> 知識和理論知識學(xué)習(xí)的認識和理解,使自己的設(shè)計水平和對所學(xué)的知識的應(yīng)用能力以及分析問題解決問題的能力得到全
7、面提高。</p><p> 通過課程設(shè)計進一步鍛煉同學(xué)們在微型計算機應(yīng)用方面的實際工作能力。計算機科學(xué)在應(yīng)用上得到飛速發(fā)展,因此,學(xué)習(xí)這方面的知識必須緊密聯(lián)系實際:掌握這方面的知識更要強調(diào)解決實際問題的能力。同學(xué)們要著重學(xué)會面對一個實際問題,如何去自己收集資料,如何自己去學(xué)習(xí)新的知識,如何自己去制定解決問題的方案并通過實踐不斷地去分析和解決前進道路上的一切問題,最終到達勝利的彼岸。本設(shè)計的目的在于全面消化已學(xué)的
8、相關(guān)課程內(nèi)容。深刻理解微機原理與接口技術(shù)課程的內(nèi)涵。為此,主要應(yīng)完成的任務(wù)是:從硬件的角度掌握微機的組成,接口部件的結(jié)構(gòu)和彼此之間的聯(lián)系,從軟件的角度理解和應(yīng)用微機系統(tǒng)的運行機制。</p><p> 1.2 課程在教學(xué)計劃中的地位和作用</p><p> 《微機應(yīng)用系統(tǒng)設(shè)計與綜合實驗》課程是測控技術(shù)專業(yè)本科生必修的一門技術(shù)基礎(chǔ)課程。通過該課程的學(xué)習(xí)使學(xué)生對微機系統(tǒng)有一個全面的了解、掌
9、握常規(guī)芯片的使用方法、掌握簡單微型計算機應(yīng)用系統(tǒng)軟硬的設(shè)計方法。為了使我們微機應(yīng)用課程設(shè)計目標(biāo)更明確,要求更具體,學(xué)生收獲更大,我們特編寫課程設(shè)計任務(wù)書,學(xué)生可根據(jù)本人的愛好任選其中一個課題,要求獨立完成課題,寫出課程設(shè)計說明書,設(shè)計出電路原理圖,說明工作原理,編寫程序及程序流程圖。希望同學(xué)認真閱讀本任務(wù)書,認真查閱資料與上機調(diào)試,圓滿完成課程設(shè)計。通過課程設(shè)計進一步鍛煉同學(xué)們在微型計算機應(yīng)用方面的實際工作能力。計算機科學(xué)在應(yīng)用上得到飛
10、速發(fā)展,因此,學(xué)習(xí)這方面的知識必須緊密聯(lián)系實際:掌握這方面的知識更要強調(diào)解決實際問題的能力。同學(xué)們要著重學(xué)會面對一個實際問題,如何去自己收集資料,如何自己去學(xué)習(xí)新的知識,如何自己去制定解決問題的方案并通過實踐不斷地去分析和解決前進道路上的一切問題,最終到達勝利的彼岸。</p><p><b> 設(shè)計任務(wù)</b></p><p> 2.1 設(shè)計內(nèi)容及要求</
11、p><p> 用匯編語言編程,實現(xiàn):從鍵盤輸入十種商品的日銷售量后,在屏幕上用圓餅顯示出每種商品的日銷售量的百分比。</p><p> 2.2 課程設(shè)計的要求</p><p> 編程,畫出程序流程圖,程序調(diào)試。</p><p><b> 總體設(shè)計方案</b></p><p><b>
12、; 3.1 設(shè)計思想</b></p><p> 3.1.1 基本方法-BIOS 系統(tǒng)調(diào)用</p><p> 通常,高級語言都是通過輸出函數(shù)來實現(xiàn)各種輸出顯示效果,匯編語言相對低級,若要顯示輸出就需要中斷調(diào)用。對PC 機的ROM BIOS 進行中斷調(diào)用,可以實現(xiàn)圖形和動畫的顯示,其功能號為10H,通過選擇顯示方式設(shè)置屏幕像素,并對像素點進行讀寫來繪制出線條和形狀。<
13、/p><p><b> 3.1.2數(shù)據(jù)準備</b></p><p> 通過鍵盤輸入每一個商品的數(shù)量,然后對其求和,算每件商品對應(yīng)百分比及圓心角,圓心角精度在1°以內(nèi),也就是說扇形的顯示誤差小于0.27%,因為扇形圖的精度要求不是很高,所以我采用量化角度代替理論圓心角,量化角度與理論值得誤差在1°以內(nèi),總計累計誤差在1%以內(nèi)。除量化角度外,還應(yīng)知道每
14、一個量化角度對應(yīng)的序號,根據(jù)該序號可以查出該量化角度對應(yīng)的余弦值和正弦值。</p><p><b> 3.1.3扇形繪制</b></p><p> 扇形繪制的關(guān)鍵在于通過BIOS 10號中斷的調(diào)用繪制像素點,通過像素點繪制直線段,通過直線段構(gòu)成扇形。</p><p> 繪制方式:四個象限分別采用不同的線段繪制方式,第一、三象限:繪制豎線;
15、第二、四象限:繪制橫線;這樣做的目的是為了簡化扇形圖的繪制難度,用一種繪制原理解決所有象限的繪制問題。在繪制時,需要知道三個參數(shù),線段起始點和行(或列)起點。這些點通過計算直線方程可以算出。確定一條過原點的直線只要知道其斜率即可,斜率通過圓心角來計算,由于匯編不便于做浮點運算和正余弦的計算,我采用查表的方式獲得正余弦的值,在繪制扇形時,有兩個極限位置來決定繪制的終點和改變繪制方式的點,分別對應(yīng)參數(shù)LIMIT_Y,LIMIT_X。<
16、/p><p> 繪制順序:逆時針繪制,先繪制第一象限,再繪制第四象限,再繪制第三象限,最后繪制第四象限。</p><p> 繪制時問題及解決方法:例如某一扇形跨越兩個象限,則先繪制完其在前一個象限的部分,再繪制其在下一象限的部分。</p><p> 3.2 總體設(shè)計流程圖</p><p> 軟件的主體包括兩部分:數(shù)據(jù)操作部分(對應(yīng)數(shù)據(jù)操作
17、界面),扇形圖顯示部分(對應(yīng)扇形顯示界面)??偭鞒虉D如下:</p><p><b> 軟件設(shè)計</b></p><p> 4.1 流程圖及其說明</p><p> 4.1.1.主程序模塊</p><p> 運行程序后,進入主界面(MENU),0-9為商品選項,輸入0-9可以設(shè)置對應(yīng)的P0-P9商品的數(shù)量,輸入D
18、或d顯示扇形圖,輸入E或e退出程序,輸入L或l顯示所有商品數(shù)量信息,然后跳回菜單界面。</p><p> 4.1.2.數(shù)據(jù)輸入子函數(shù)模塊</p><p> 預(yù)先定義數(shù)據(jù)緩沖區(qū)BUFFER1,用于存放輸入的商品數(shù)量信息,輸入完成后,將緩沖區(qū)的數(shù)據(jù)移存至AMOUNT內(nèi)存單元,即完成了數(shù)據(jù)的輸入流程,流程圖如下</p><p><b> 數(shù)據(jù)輸入流圖<
19、;/b></p><p> 4.1.3.數(shù)據(jù)求和模塊</p><p> 定義數(shù)據(jù)SUM,用于存放商品數(shù)量總和,然后依次累加所有商品的數(shù)量存于SUM中,流圖如下:</p><p> 4.1.4.圓心角計算模塊</p><p> 根據(jù)公式圓心角=商品數(shù)目×100×360÷100÷商品總數(shù)可以避
20、免使用浮點數(shù),且角度的計算誤差小于1°。</p><p> 4.1.5.角度量化模塊</p><p> 量化標(biāo)準值相差2°,如理論值為43°,而量化標(biāo)準值44°>43°,而42°<43°,我取42°作為角度的量化值,并取42÷2=21作為該量化角度的序號,從COSAN數(shù)組中查得該角度的
21、余弦值cos42,從TANAN中查得正切值tan42。</p><p> 4.1.6.計算百分比模塊</p><p> 商品百分比=商品數(shù)÷商品總數(shù)*100%求得,并存入PERCENTAGE內(nèi)存單元。</p><p> 4.1.7.計算圓上行坐標(biāo)模塊</p><p> 由圓的方程,在給定的X值下,可以求出Y,計算過程涉及開方
22、運算。</p><p> 4.1.8.ASCII碼轉(zhuǎn)二進制模塊</p><p> ASCII碼先減去30H,然后高位乘以10加低位數(shù)即可得到該ASCII碼對應(yīng)的二進制數(shù)。</p><p> 4.1.9.二進制轉(zhuǎn)十進制模塊</p><p> 二進制數(shù)除以10,商為十位數(shù),余數(shù)為個位數(shù),即可實現(xiàn)二進制到十進制的轉(zhuǎn)換。</p>
23、<p> 4.1.10.繪制橫線模塊</p><p> 給定行值,和列的起始和終止值,調(diào)用10號中斷,依次從左到右繪出多個像素點構(gòu)成一條橫線。</p><p> 4.1.11.繪制豎線模塊</p><p> 給定列值,和行的起始和終止值,調(diào)用10號中斷,依次從上到下繪出多個像素點構(gòu)成一條豎線。</p><p> 4.1.
24、12.繪制小矩形模塊</p><p> 通過繪制橫線的方式構(gòu)成矩形,矩形的長和寬及位置在數(shù)據(jù)段有定義。</p><p> 4.1.13.顯示商品名、百分比模塊</p><p> 從PERCENTAGE內(nèi)存單元取出每件商品的百分數(shù),并通過2好DOS功能調(diào)用進行顯示。</p><p> 4.1.14.第一象限扇形繪制模塊</p>
25、;<p> 同第三象限的繪制方法,通過繪制豎線,來繪制扇形。</p><p> 4.1.15.第四象限扇形繪制模塊</p><p> 同第二象限的繪制方法,通過繪制橫線,來繪制扇形。</p><p> 4.1.16.第三象限扇形繪制模塊</p><p> 同第一象限的繪制方法,通過繪制豎線,來繪制扇形。</p&g
26、t;<p> 4.1.17.第二象限扇形繪制模塊</p><p> 同第四象限的繪制方法,通過繪制橫線,來繪制扇形。</p><p> 4.2 軟件系統(tǒng)的使用說明</p><p> 運行程序后,進入主界面,如圖:</p><p> 圖為主菜單界面,0-9為商品選項,輸入0-9可以設(shè)置對應(yīng)的P0-P9商品的數(shù)量,輸入D
27、或d顯示扇形圖,輸入E或e退出程序,輸入L或l顯示所有商品數(shù)量信息,然后跳回菜單界面。</p><p><b> 輸入D或d:</b></p><p> 出現(xiàn)顯示界面,顯示扇形圖。按R或r鍵可以返回主菜單界面。</p><p><b> 輸入L或l:</b></p><p> 顯示商品的數(shù)量
28、并返回主菜單。</p><p> 4.3 源程序及其說明</p><p> ;宏的作用:屏幕初始化</p><p> ;---------------------------------------------------------------------------------------------------------------------<
29、;/p><p> SCREEN MACRO</p><p> MOV AX,12H</p><p> INT 10H ;設(shè)置屏幕顯示方式</p><p> MOV AH,0BH ;選擇背景色/選擇調(diào)試板</p><p><b> MOV BH,
30、0</b></p><p> MOV BL,1 ;設(shè)置背景顏色</p><p> INT 10H</p><p><b> ENDM</b></p><p> ;-------------------------------------------------------------------
31、------------------------------------</p><p><b> ;功能:畫一條豎線</b></p><p> ;啞元意義:x為豎線的列值</p><p> ; Y1和Y2分別為豎線的兩端點的行值</p><p> ;----------------------
32、---------------------------------------------------------------------------------</p><p> LINE MACRO X,Y1,Y2 ;畫列值為x,行值從Y1到Y(jié)2的直線</p><p> LOCAL LL,FIRST</p><p> MOV CX,X;
33、</p><p> LEA DI,COLOR</p><p> MOV AL,[DI]</p><p> MOV BH,0</p><p> MOV DX,Y1</p><p> JMP FIRST</p><p><b> LL:</b>&l
34、t;/p><p> INC DX;行值加1</p><p><b> FIRST:</b></p><p> MOV AH,0CH</p><p> INT 10H;寫一個像素點</p><p> CMP DX,Y2</p><p&
35、gt; JNZ LL ;判斷Y1和Y2是否相等,若相等則完成</p><p><b> ENDM</b></p><p> ;------------------------------------------------------------------------ </p><p> LINE2
36、 MACRO Y,X1,X2 ;畫行值為Y,列值從X1到X2的直線</p><p> LOCAL LL2,FIRST2</p><p> MOV DX,Y;</p><p> LEA DI,COLOR</p><p> MOV AL,[DI]</p><p> MOV BH,0&l
37、t;/p><p> MOV CX,X1</p><p> JMP FIRST2</p><p><b> LL2:</b></p><p> INC CX;列值加1</p><p><b> FIRST2:</b></p><
38、;p> MOV AH,0CH</p><p> INT 10H;寫一個像素點</p><p> CMP CX,X2</p><p> JNZ LL2 ;判斷X1和X2是否相等,若相等則完成</p><p><b> ENDM</b></p>
39、<p> ;---------------------------------------------------------------------------------------------------------------------</p><p> ;功能:通過分別在左右平面畫垂直于x軸的弦來畫一個實心圓</p><p> ;---------------
40、------------------------------------------------------------------------------------------------------</p><p> WRITE MACRO</p><p> MOV A,0 ;初始化圓的橫坐標(biāo)</p><p><b> AG
41、A:</b></p><p> CALL SQRT ;計算縱坐標(biāo)的值</p><p> MOV CH,0</p><p> MOV CL,A</p><p> ADD CX,XX</p><p> MOV RIGHT,CX ;右平面弦的列值&l
42、t;/p><p> MOV CH,0</p><p> MOV CL,A</p><p><b> NEG CX</b></p><p> ADD CX,XX</p><p> MOV LEFT,CX ;左平面弦的列值</p><p&
43、gt; MOV DX,H</p><p><b> NEG DX</b></p><p> ADD DX,YY</p><p> MOV UP,DX;弦的上端點的行值</p><p> MOV DX,H</p><p> ADD DX,YY<
44、/p><p> MOV DOWN,DX;弦的下端點的行值</p><p> LINE LEFT,UP,DOWN;在左平面畫弦</p><p> LINE RIGHT,UP,DOWN;在右平面畫弦</p><p> INC A;繼續(xù)畫其他弦至畫出圓</p><p>
45、MOV AL,R</p><p> CMP A,AL</p><p> JNZ AGA</p><p><b> ENDM</b></p><p> ;----------------------------------------------------顯示理論圓心角</p>
46、;<p> ANGM MACRO</p><p> MOV AH,09H</p><p> MOV DX,OFFSET MESG4</p><p> INT 21H</p><p><b> MOV CX,10</b></p><p> LEA S
47、I,ANGLE</p><p> DIS_ANGLE:</p><p> MOV AX,WORD PTR[SI]</p><p><b> CALL BTOD</b></p><p><b> MOV AH,2</b></p><p> MOV DL,' &
48、#39;;顯示空格</p><p><b> INT 21H</b></p><p><b> ADD SI,2</b></p><p> LOOP DIS_ANGLE</p><p> ;CALL ENTERP</p><p><b> ENDM<
49、/b></p><p> ;--------------------------------------------------------------顯示量化后角度</p><p> LIAN_ANGM MACRO</p><p> MOV AH,09H</p><p> MOV DX,OFFSET MESG5&l
50、t;/p><p> INT 21H</p><p><b> MOV CX,10</b></p><p> LEA SI,ANGLE_L</p><p> DIS_ANGLE_L:</p><p> MOV AX,WORD PTR[SI]</p><p>
51、<b> CALL BTOD</b></p><p><b> MOV AH,2</b></p><p> MOV DL,' ';顯示空格</p><p><b> INT 21H</b></p><p><b> ADD SI,2</
52、b></p><p> LOOP DIS_ANGLE_L</p><p> CALL ENTERP</p><p><b> ENDM</b></p><p> ;---------------------------------------------------------------顯示扇形</
53、p><p> DIS_PIEM MACRO</p><p><b> MOV CX,9</b></p><p><b> MOV BX,0</b></p><p> MOV SUM_ANGLE,0</p><p> MOV SUM_TW,0</p>&l
54、t;p> MOV TW_MARK,0</p><p> MOV SUM_TH,0</p><p> MOV TH_MARK,0</p><p> MOV SUM_FO,0</p><p> MOV FO_MARK,0</p><p><b> DIS_PIES:</b></
55、p><p> MOV AL,COLORS[BX]</p><p> MOV COLOR,AL</p><p><b> PUSH CX</b></p><p> CALL DIS_PIE;顯示扇形</p><p><b> POP CX</b></p>&
56、lt;p><b> INC BX</b></p><p> LOOP DIS_PIES</p><p><b> ENDM</b></p><p> ;---------------------------------------------------------------顯示矩形</p>
57、<p> DIS_RECTM MACRO</p><p><b> MOV CX,10</b></p><p><b> MOV BX,0</b></p><p> MOV START_Y,SATRT_Y_RE</p><p> DIS_RECTS:</p>&l
58、t;p> MOV AL,COLORS[BX]</p><p> MOV COLOR,AL</p><p><b> PUSH CX</b></p><p> CALL RECTANGLE;顯示矩形</p><p><b> POP CX</b></p><
59、p><b> INC BX</b></p><p> LOOP DIS_RECTS</p><p><b> ENDM</b></p><p> ;-------------------------------------------------------------------------------
60、--------------------------------------</p><p> DATA SEGMENT USE16;數(shù)據(jù)段</p><p> R DB ? ;R為圓的半徑</p><p> R2 DW ?</p><p> A D
61、B ? ;存放圓的橫坐標(biāo)</p><p> A2 DW ?</p><p> H DW ? ;存放圓的縱坐標(biāo)</p><p> YY EQU 260 ;縱坐標(biāo)的行值</p><p> XX E
62、QU 400 ;橫坐標(biāo)的列值</p><p> LV EQU 45 ;量化級別</p><p> L_360 EQU 91</p><p> RECT_WIDTH EQU 30 ;矩形寬度</p><p> RECT_HEIGHT EQ
63、U 20 ;矩形寬度</p><p> RELATIVE_POSI EQU 20 ;與圓的最近距離</p><p> SATRT_Y_RE EQU 93</p><p> START_Y DW SATRT_Y_RE</p><p> START_X
64、 EQU 40</p><p> DIST_Y EQU 12 ;矩形之間的距離</p><p> DIST_X EQU 10 ;矩形之間的距離</p><p> COLOR DB 4 ;像素值</p><p&g
65、t; RIGHT DW ? ;存放右平面的列值</p><p> LEFT DW ? ;存放左平面的列值</p><p> UP DW ? ;存放上半平面的行值</p><p> DOWN DW ? ;
66、存放下半平面的行值</p><p> LIMT_Y DW ?</p><p> K100 DW 0;無窮</p><p> K100_2 DW ?</p><p> LIMT_X DW 0</p><p> SUM_ANGLE DW 0</p>
67、<p> SUM_TW DW 0</p><p> TW_MARK DW 0</p><p> SUM_TH DW 0</p><p> TH_MARK DW 0</p><p> SUM_FO DW 0</p><p> FO_MARK DW
68、 0</p><p> APERENT_X DW ?</p><p> COLORS DB 7,8,12,11,10,1,2,3,6,4;0-綠色,1-淺藍,2,5-紫,3-淺灰,4-紅色,6-橙色,7-淺灰,8-深灰,9-灰藍,10-淺綠,11-淺藍,12-粉紅</p><p> PNAME DB 'P0-','
69、;P1-','P2-','P3-','P4-','P5-','P6-','P7-','P8-','P19-'</p><p> P1 DB 'P0P1P2P3P4P5P6P7P8P9'</p><p> LIE DW ?&
70、lt;/p><p> AMOUNT DW 10 DUP(3032H)</p><p> AMOUNT1 DW ?</p><p> AMOUNT2 DW ?</p><p> ANGLE DW 10 DUP(?)</p><p> PERCENT DW 10 DUP(3030H)</p>
71、<p> SUM_P DW 100</p><p> ANGLE_L DW 10 DUP(?);可能大于90°,解決方法,先畫90°扇形,再畫剩余部分扇形</p><p> ANGLE_X DW 10 DUP(?)</p><p> ANGLE_P DB 0,2,4,6,8,10,12,14,16,18,20,22,
72、24,26,28,30,32,34,36,38,40,42,44,46,48,50</p><p> DB 52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98</p><p> DB 100,102,104,106,108,110,112,114,116,118,120,122,124,126,
73、128,130,132,134</p><p> DB 136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170</p><p> DB 172,174,176,178,180</p><p><b> DW 360</b></p><
74、;p> COSAN DB 200,200,199,198,198,197,195,194,192,190,188,185,183,180,176</p><p> DB 173,170,166,162,158,153,149,144,139,134,128,123,118,111,106</p><p> DB 100,94,87,82,75,68,62,56,48,42,
75、34,28,21,14,7,0;78度</p><p> TANAN DW 0,3,7,11,14,18,21,25,29,32,36,40,45,49,53,58,62,67,73,78,84</p><p> DW 90,96,104,111,119,128,138,148,160,173,188,205,225,248,275</p><p> DW
76、 308,349,401,470,567,711,951,1430,2864,0 </p><p> MENU DB '-----MAIN MENU------',0DH,0AH</p><p> DB '0.P1',0DH,0AH</p><p> DB '1.P2',0DH,0AH</p>&l
77、t;p> DB '2.P3',0DH,0AH</p><p> DB '3.P4',0DH,0AH</p><p> DB '4.P5',0DH,0AH</p><p> DB '5.P6',0DH,0AH</p><p> DB '6.P7',0
78、DH,0AH</p><p> DB '7.P8',0DH,0AH</p><p> DB '8.P9',0DH,0AH</p><p> DB '9.P10',0DH,0AH</p><p> DB 'D.DISPLAY',0DH,0AH</p><
79、p> DB 'E.EXIT',0DH,0AH</p><p> DB 'L.LIST',0DH,0AH</p><p> DB 0DH,0AH,'$'</p><p> BUFFER1 DB 3 ;商品數(shù)量緩沖區(qū)</p><p><b> DB
80、 ?</b></p><p> DB 3 DUP(?) </p><p> MESG DB 'press r to return!',0DH,0AH,'$'</p><p> MESG1 DB 'please input the amount of the product!(pre
81、ss ENTER to end)',0DH,0AH,'$'</p><p> MESG2 DB 'please choose',0DH,0AH,'$'</p><p> MESG3 DB 'SUM:',0DH,0AH,'$'</p><p> MESG4
82、DB 'ANGLES:',0DH,0AH,'$'</p><p> MESG5 DB 'ANGLES HAVE BEEN LIANGED:',0DH,0AH,'$'</p><p> MESG6 DB 'PRODUCTS PERCENTAGES:',0DH,0AH,'$'
83、;</p><p> MESG7 DB 'NO PRODUCTS,PRESS r TO ADD',0DH,0AH,'$'</p><p> HUANHANG DB 0DH,0AH,'$'</p><p><b> SUM DW 0</b></p><p>
84、 DATA ENDS</p><p> ESSS SEGMENT</p><p><b> DB '15%'</b></p><p> ESSS ENDS</p><p> ;------------------------------------------------------
85、---------------------------------------------------------------</p><p> CODE SEGMENT USE16;代碼段</p><p> ASSUME CS: CODE,DS: DATA,ES:ESSS</p><p><b> BEG: </b>
86、</p><p> MOV AX,DATA</p><p> MOV DS,AX</p><p> MOV AX,ESSS</p><p><b> MOV ES,AX</b></p><p> CLEAR: SCREEN</p><p>
87、 SHOW_MENU:</p><p> CALL ENTERP</p><p> MOV AH,09H</p><p> LEA DX,MENU</p><p><b> INT 21H</b></p><p> LEA DX,MESG2</p><p>&l
88、t;b> INT 21H</b></p><p><b> MOV AH,1</b></p><p><b> INT 21H</b></p><p> CMP AL,'D'</p><p> JZ DISPLAY</p><p>
89、 CMP AL,'d'</p><p> JZ DISPLAY</p><p> CMP AL,'E'</p><p><b> JZ EXIT</b></p><p> CMP AL,'e'</p><p><b> JZ
90、 EXIT</b></p><p> CMP AL,'L'</p><p><b> JZ LIST</b></p><p> CMP AL,'l'</p><p><b> JZ LIST</b></p><p>
91、CALL INIT_PROD</p><p> JMP SHOW_MENU</p><p> MOV AH,1H</p><p> INT 21H</p><p> MOV AX,2</p><p> INT 10H</p><p><
92、;b> EXIT:</b></p><p> MOV AH,4CH</p><p> INT 21H</p><p><b> DISPLAY:</b></p><p> MOV R,200 </p><p> SCREEN
93、 ;屏幕初始化</p><p> MOV AH,09H </p><p> MOV DX,OFFSET MESG3</p><p> INT 21H</p><p><b> CALL SUMP</b></p><p> LEA SI
94、,SUM</p><p> MOV AX,[SI]</p><p><b> CMP AX,0</b></p><p><b> JZ NO_PRO</b></p><p><b> CALL BTOD</b></p><p> CALL EN
95、TERP</p><p> MOV COLOR,4</p><p> WRITE ;在屏幕上畫出半徑為R的圓</p><p><b> MOV BX,0</b></p><p><b> C_ANGLE:</b></p><p> CALL ANG
96、LEP;計算每個商品對應(yīng)的圓心角</p><p><b> ADD BX,2</b></p><p><b> CMP BX,20</b></p><p> JNZ C_ANGLE</p><p><b> ;角度計算完成</b></p><p>
97、;<b> ;顯示角度</b></p><p> ;ANGM;計算顯示角度</p><p> ;----------------------------------------------------------------------計算百分比</p><p><b> MOV BX,0</b></p>
98、;<p> MOV SI,PERCENT</p><p><b> MOV CX,10</b></p><p><b> CA_PERC:</b></p><p> CALL CALCU_PER</p><p><b> ADD BX,2</b><
99、/p><p> LOOP CA_PERC</p><p> ;-----------------------------------------------------------------------顯示百分比</p><p><b> ;DIS_PEM</b></p><p><b> MOV CX,
100、10</b></p><p> CALL ENTERP</p><p> CALL ENTERP</p><p> CALL ENTERP</p><p> CALL ENTERP</p><p> MOV DI,OFFSET P1</p><p> MOV SI,PER
101、CENT;顯示百分數(shù)</p><p> DIS_STRING:</p><p> CALL STRING;顯示名字</p><p> CALL ENTERP</p><p> LOOP DIS_STRING</p><p><b> DIS_RECTM</b></p>&l
102、t;p> ;-----------------------------------------------------------------------角度量化</p><p> NEXT_P: MOV BX,0</p><p><b> NEXT_L:</b></p><p> CALL ANGLE_LIANG</p
103、><p><b> ADD BX,2</b></p><p><b> CMP BX,20</b></p><p> JNZ NEXT_L</p><p><b> ;量化完成</b></p><p><b> ;顯示量化結(jié)果</b
104、></p><p> ;LIAN_ANGM</p><p> ;---------------------------------------------------------------------顯示扇形</p><p><b> DIS_PIEM </b></p><p> MOV AH,09H&l
105、t;/p><p> MOV DX,OFFSET MESG</p><p> INT 21H</p><p><b> MOV AH,1</b></p><p><b> INT 21H</b></p><p> CMP AL,'r'
106、</p><p><b> JZ CLEAR</b></p><p><b> JMP EXIT</b></p><p><b> NO_PRO:</b></p><p> MOV DX,OFFSET MESG7</p><p><b>
107、; MOV AH,9H</b></p><p><b> INT 21H </b></p><p><b> MOV AH,1</b></p><p><b> INT 21H</b></p><p> CMP AL,'r'</p&g
108、t;<p><b> JZ CLEAR</b></p><p><b> JMP EXIT</b></p><p> ;------------------------------------------------------------------顯示商品數(shù)量</p><p><b>
109、LIST:</b></p><p><b> MOV BX,0</b></p><p> LEA DI,PNAME</p><p> LEA SI,AMOUNT</p><p><b> MOV AH,2</b></p><p> CALL ENTER
110、P</p><p><b> DIS_NAME:</b></p><p> MOV DL,[DI];name</p><p><b> INT 21H</b></p><p><b> INC DI</b></p><p> CMP DL,
111、39;-'</p><p> JNZ DIS_NAME</p><p><b> MOV CX,2</b></p><p> DIS_AMOUNT:</p><p><b> CLD</b></p><p> MOV DL,[SI+BX]</p>
112、<p><b> INT 21H</b></p><p><b> INC BX</b></p><p> LOOP DIS_AMOUNT</p><p> MOV DL,' '</p><p><b> INT 21H</b></
113、p><p><b> CMP BX,20</b></p><p> JZ SHOW_MENU</p><p> JMP DIS_NAME;顯示下一個商品信息</p><p> ;-------------------------------------------------------------------計算行
114、坐標(biāo)</p><p> SQRT PROC FAR </p><p> MOV AL,A</p><p><b> MUL AL</b></p><p> MOV A2,AX</p><p> MOV AL,R</
115、p><p><b> MUL AL</b></p><p> SUB AX,A2</p><p> MOV CX,0</p><p><b> LAST1:</b></p><p> MOV DX,CX</p><p>
116、 ADD DX,DX</p><p> INC DX</p><p> SUB AX,DX</p><p> JC EXIT1</p><p> INC CX</p><p> JMP LAST1</p><p><b>
117、; EXIT1: </b></p><p> MOV H,CX ;計算結(jié)果保存在H單元內(nèi)</p><p><b> RET</b></p><p> SQRT ENDP</p><p> ;-----------------------------------
118、-------------------------------數(shù)據(jù)初始化</p><p> INIT_PROD PROC NEAR</p><p> CALL ENTERP</p><p> MOV AH,09H</p><p> MOV DX,OFFSET MESG1</p><p><b> I
119、NT 21H</b></p><p> SUB AL,30H</p><p> CALL INPUT_AMOUNT</p><p> CALL ENTERP</p><p><b> MOV BX,0</b></p><p><b> MOV BL,AL</b
120、></p><p><b> PUSH BX</b></p><p><b> MOV AL,BL</b></p><p><b> MOV DL,3</b></p><p><b> MUL DL</b></p><p&
121、gt; XCHG AX,BX</p><p><b> DISPLAY1:</b></p><p> LEA SI,PNAME</p><p> MOV DL,[SI+BX]</p><p><b> MOV AH,2</b></p><p><b>
122、INT 21H</b></p><p><b> INC BX</b></p><p> CMP DL,'-'</p><p> JNE DISPLAY1</p><p><b> POP BX</b></p><p> SHL BX,1
123、;左移1位乘2</p><p><b> DISPLAY2:</b></p><p> MOV SI, OFFSET AMOUNT</p><p> MOV DL,[SI+BX];放幾個數(shù)便顯示幾個數(shù)</p><p><b> MOV AH,2</b></p><p>
124、;<b> INT 21H</b></p><p><b> INC BX</b></p><p> LOOP DISPLAY2</p><p> CALL ENTERP</p><p><b> RET</b></p><p> INIT_
125、PROD ENDP</p><p> ;-----------------------------------------------------------------數(shù)據(jù)輸入程序</p><p> INPUT_AMOUNT PROC NEAR</p><p> MOV DX,OFFSET BUFFER1</p><p> MOV
126、AH,0AH</p><p><b> INT 21H</b></p><p><b> MOV BX,DX</b></p><p><b> MOV CX,0</b></p><p> MOV CL,[BX+1];放實際輸入數(shù)據(jù)長度</p><p&
127、gt;<b> CMP CL,1</b></p><p> JZ DAN_SHU</p><p><b> PUSH CX</b></p><p><b> ADD BX,1</b></p><p> LEA DI,AMOUNT</p><p&g
128、t;<b> PLACE:</b></p><p> MOV AH,[BX+1];放入字符到AH</p><p><b> PUSH BX</b></p><p><b> MOV BX,0</b></p><p> MOV BL,AL;對號入座(產(chǎn)品-數(shù)量對應(yīng))&l
129、t;/p><p> SHL BX,1;左移1位乘2</p><p> MOV [DI+BX],AH;放入第一個數(shù)字</p><p><b> INC DI</b></p><p><b> POP BX</b></p><p><b> INC BX</
130、b></p><p> LOOP PLACE</p><p><b> POP CX</b></p><p><b> RET </b></p><p><b> DAN_SHU:</b></p><p><b> ADD CX
131、,1</b></p><p> LEA DI,AMOUNT</p><p><b> ADD BX,1</b></p><p> MOV AH,[BX+1]</p><p><b> MOV BX,0</b></p><p><b> MOV
132、BL,AL</b></p><p><b> SHL BX,1</b></p><p> MOV DL,30H</p><p> MOV [DI+BX],DL</p><p><b> INC DI</b></p><p> MOV [DI+BX],AH
133、 </p><p><b> RET</b></p><p> INPUT_AMOUNT ENDP</p><p> ;--------------------------------------------------------------------求和程序</p><p> SUMP PROC NEAR&
134、lt;/p><p><b> PUSH SI</b></p><p><b> PUSH DX</b></p><p> LEA SI,AMOUNT</p><p> LEA DI,SUM</p><p><b> MOV BX,0</b><
135、/p><p> MOV [DI],BX</p><p><b> MOV AX,0</b></p><p><b> MOV DX,0</b></p><p> CALCUTE_SUM:</p><p> CALL ASCTOBI</p><p>
136、;<b> INC BX</b></p><p><b> CMP BX,20</b></p><p> JNZ CALCUTE_SUM</p><p> MOV AX,WORD PTR[DI]</p><p><b> POP SI</b></p>&
137、lt;p><b> POP DX</b></p><p><b> RET</b></p><p><b> SUMP ENDP</b></p><p> ;-----------------------------------------------------------------
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論