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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  計(jì)算機(jī)硬件技術(shù)基礎(chǔ)課程設(shè)計(jì)</p><p><b>  計(jì)程車計(jì)價(jià)器設(shè)計(jì)</b></p><p> ?。ㄓ糜?jì)算機(jī)系統(tǒng)的輸入輸出設(shè)備完成)</p><p><b>  引言</b></p><p>  現(xiàn)今,不管是在那些大城市,還是小縣城。出租車早已經(jīng)成為了一種重要的交通工具。不

2、但解決了公交車較慢的煩惱,也解決了自己開車沒停車位的弊端??傊?,出租車早已融入了這個(gè)城市的生活。</p><p>  既然如此,我們不得不考慮下出租車收費(fèi)的問題。擁有良好性能的計(jì)價(jià)器無論是對(duì)廣大出租車司機(jī)朋友還是乘客來說都是很必要的。所以我們下面就用匯編語(yǔ)言來設(shè)計(jì)出租車計(jì)價(jià)系統(tǒng)。</p><p>  設(shè)計(jì)的重要內(nèi)容和方案</p><p>  1.1 設(shè)計(jì)的主要內(nèi)容&

3、lt;/p><p>  設(shè)計(jì)一個(gè)計(jì)程車計(jì)價(jià)器,能用計(jì)算機(jī)系統(tǒng)的輸入輸出設(shè)備完成計(jì)程車計(jì)價(jià)器的基本功能,并在此基礎(chǔ)上自行完善和優(yōu)化系統(tǒng)功能?;竟δ芫唧w要求如下:</p><p>  以計(jì)算機(jī)系統(tǒng)的輸入輸出設(shè)備為基礎(chǔ),一鍵盤作為輸入設(shè)備,顯示器作為輸出設(shè)備,完成設(shè)計(jì);(允許使用PC機(jī)的揚(yáng)聲器作為發(fā)生設(shè)備)</p><p>  按鍵啟動(dòng)計(jì)程車和停車,可以在行進(jìn)過程中按鍵調(diào)整

4、車速。</p><p>  按鍵開始計(jì)價(jià)和停止計(jì)價(jià)。開始計(jì)價(jià)后,3公里內(nèi)幾家結(jié)果為起步價(jià),3公里后,根據(jù)車速和行進(jìn)時(shí)間計(jì)算所行距離,所行距離每達(dá)到1公里時(shí),計(jì)價(jià)結(jié)果增加1次單價(jià),要求精確到角。若在計(jì)價(jià)過程中停車,則每隔一段時(shí)間(具體時(shí)間間隔自行設(shè)置),計(jì)價(jià)結(jié)果增加1次單價(jià)。晚上10點(diǎn)到次日早上7點(diǎn),按晚間起步價(jià)和晚間每公里單價(jià)計(jì)算。</p><p>  屏幕上要求顯示當(dāng)前車速,當(dāng)前計(jì)價(jià)結(jié)果

5、,本次計(jì)價(jià)時(shí)間。停止計(jì)價(jià)后,本次計(jì)價(jià)結(jié)果保持一段時(shí)間后清為0.</p><p>  顯示當(dāng)前燃料量,車輛行進(jìn)過程中反映燃料的消耗,當(dāng)燃料量低于警戒值時(shí)報(bào)警。</p><p><b>  1.2 設(shè)計(jì)方案</b></p><p>  我們經(jīng)過組內(nèi)激烈的討論,將基本功能分為了幾個(gè)小模塊。如下:</p><p>  速度、時(shí)間

6、差、油量模塊,計(jì)算里程計(jì)價(jià)模塊。</p><p>  等待計(jì)價(jià)模塊,總油量、每公里耗油模塊。</p><p>  顯示車速、計(jì)價(jià)結(jié)果、時(shí)間模塊。</p><p>  設(shè)置起步價(jià)、單價(jià),并判斷是否白天晚上,并將輸入的元,轉(zhuǎn)化為角模塊。</p><p>  我們小組四人分別將這四個(gè)子模塊分別編輯。然后共同構(gòu)想了主程序模塊,以上各個(gè)模塊的思路請(qǐng)看流

7、程圖。</p><p><b>  任務(wù)分工</b></p><p>  袁云軍:設(shè)置起步價(jià)、單價(jià),并判斷是否白天晚上模塊;輸入的起步價(jià)和單價(jià)的單位元,化為角模塊,并共同完成論文。</p><p>  周桂鋒:編寫取第一次系統(tǒng)時(shí)間程序,取系統(tǒng)時(shí)間通用程序,計(jì)算相鄰時(shí)間差子程序,計(jì)算總里程及總價(jià)格子程序,共同完成論文。</p>&l

8、t;p>  劉 亞:編寫子程序每次計(jì)程車運(yùn)行的總時(shí)間的提取,換算稱實(shí)際的時(shí)分秒格式并顯示;每次運(yùn)行的總價(jià)格的計(jì)算,及顯示;聲音模塊的寫入及調(diào)用;及有關(guān)論文的撰寫。</p><p>  實(shí)驗(yàn)中運(yùn)用的一些實(shí)驗(yàn)原理</p><p>  2.1 鍵盤按鍵中斷</p><p>  程序中用到的中斷:引發(fā)9號(hào)中斷,鍵盤的輸入到達(dá)60h端口時(shí),相關(guān)的芯片就會(huì)向CPU發(fā)出中

9、斷類型碼為9的可屏蔽終端信息。CPU檢測(cè)到該中斷信息后,如果IF=1,則響應(yīng)中斷,引發(fā)中斷過程,轉(zhuǎn)去執(zhí)行int 9中斷例程。</p><p>  編寫int 9中斷例程:①鍵盤產(chǎn)生掃描碼;②掃描碼送入60h端口;③引發(fā)9號(hào)中斷;④CPU執(zhí)行int 9中斷例程處理鍵盤輸入。</p><p><b>  2.2 取系統(tǒng)時(shí)間</b></p><p>

10、  取當(dāng)前系統(tǒng)時(shí)間采用int 21h中斷的2ch號(hào)功能,分別將當(dāng)前時(shí)刻的時(shí)、分、秒和百分之一秒存入對(duì)應(yīng)的寄存器:ch、cl、dh、dl。</p><p>  2.3 揚(yáng)聲器驅(qū)動(dòng)系統(tǒng)原理</p><p>  在PC中,8254的通道2與計(jì)算機(jī)的揚(yáng)聲器相連,由通道2工作于方式3產(chǎn)生一定頻率的方波信號(hào)去驅(qū)動(dòng)揚(yáng)聲器按一定頻率發(fā)聲。其原理如圖1所示。從圖中可見,系統(tǒng)使用并行I/O接口8255A中PB

11、端口的最低兩位來控制該發(fā)聲驅(qū)動(dòng)系統(tǒng):PB0作為8254通道2的門控信號(hào)GATE2,控制通道2定時(shí)計(jì)數(shù)啟停;PB1與通道2的OUT2信號(hào)相與后去控制揚(yáng)聲</p><p>  器的接通和斷開。PC中8255A的端口地址為60H~63H,8254的端口地址為40H~43H。</p><p>  可見,要使揚(yáng)聲器發(fā)聲,PB0置1,通道2才能工作;PB1置1,OUT2上產(chǎn)生的一定頻率的方波信號(hào)才能通

12、過與門送到驅(qū)動(dòng)器,從而使揚(yáng)聲器發(fā)聲。</p><p>  圖1 揚(yáng)聲器驅(qū)動(dòng)電路原理圖</p><p><b>  3.操作說明</b></p><p>  在程序開始運(yùn)行后,系統(tǒng)的初始狀態(tài)是出租車停止,具體操作方式如下:</p><p>  1、按任意“s”鍵啟動(dòng)系統(tǒng);</p><p>  2、設(shè)

13、置白天的起步價(jià)和單價(jià);</p><p>  3、設(shè)置晚上的起步價(jià)和單價(jià);</p><p>  4、按鍵選擇白天或晚上;</p><p>  5、按加速鍵“+”調(diào)速啟動(dòng)出租車,即速度由0變?yōu)檎?,?jì)價(jià)器開始里程計(jì)價(jià);</p><p>  6、在計(jì)價(jià)過程中通過“+”,“-”鍵實(shí)現(xiàn)車速的調(diào)節(jié);</p><p>  7、按減速鍵

14、“-”使車速重新回到0,進(jìn)入等待計(jì)價(jià);</p><p>  8、等待計(jì)價(jià)時(shí),如果按加速鍵“+”使速度變?yōu)檎?,則重新進(jìn)入里程計(jì)價(jià)</p><p>  9、等待計(jì)價(jià)時(shí) 按“q”鍵,出租車停車,停止計(jì)價(jià)。</p><p>  4.主程序及子模塊流程圖</p><p><b>  主程序流程圖</b></p>&l

15、t;p><b>  按鍵中斷服務(wù)程序</b></p><p><b>  計(jì)算當(dāng)前油量子模塊</b></p><p><b>  等待計(jì)價(jià)子模塊</b></p><p>  輸入白天和晚上的起步價(jià)和單價(jià)模塊</p><p><b>  元轉(zhuǎn)化成角模塊</b

16、></p><p><b>  N </b></p><p><b>  Y</b></p><p>  計(jì)算時(shí)間差子程序流程圖</p><p><b>  Y</b></p><p><b>  N</b></p>

17、;<p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p>  里程計(jì)價(jià)子程序流程圖</p><p><

18、;b>  N</b></p><p><b>  Y</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  N</b></p><p><b>

19、;  Y</b></p><p>  5.每個(gè)人的心得體會(huì)</p><p><b>  1、課程設(shè)計(jì)的目的</b></p><p>  本次設(shè)計(jì)的題目分為兩大類,5個(gè)題目,只是一種是涉及硬件的題目,一種是純軟件寫出的題目。我們小組有4個(gè)同學(xué),分別是郭洋成,袁云軍,周桂峰,我一起商量以后選擇了:計(jì)程車計(jì)價(jià)器設(shè)計(jì)(用計(jì)算機(jī)系統(tǒng)的輸入輸出

20、設(shè)備完成),這個(gè)題目。</p><p>  選取這個(gè)題目大家有這樣幾點(diǎn)考慮:</p><p>  第一,怎樣設(shè)計(jì)總體方案(思路清晰)</p><p>  第二,分成幾個(gè)子模塊且每個(gè)模塊怎么融合(連接簡(jiǎn)單)</p><p>  第三,總程序的調(diào)試及功能的實(shí)現(xiàn)(顯示清晰)</p><p><b>  2、課程設(shè)計(jì)

21、的任務(wù)</b></p><p>  拿到題目后,4個(gè)同學(xué)集思廣益,都紛紛開動(dòng)腦筋,思想的火花一下子全都迸發(fā)出來了,最后經(jīng)過綜合后,留下了大家覺得比較合適的、好的、容易實(shí)現(xiàn)的思想后,完成了總體方案的設(shè)計(jì)和定稿。</p><p>  我們的任務(wù)是實(shí)現(xiàn)計(jì)價(jià)器的一些基本功能,設(shè)置不同時(shí)段(白天、黑夜)的起步價(jià)、單價(jià);用按鍵的方式實(shí)現(xiàn)計(jì)程車的起動(dòng)和停止以及行進(jìn)過程中調(diào)整車速;用按鍵實(shí)現(xiàn)起

22、動(dòng)車時(shí)計(jì)價(jià),停車時(shí)結(jié)束計(jì)價(jià);3公里內(nèi)記為起步價(jià),超過3公里距離每超過1公里計(jì)價(jià)一次,要求精確到角;若在計(jì)價(jià)過程中有停車等待,超過某一個(gè)時(shí)間設(shè)定值單價(jià)增加1次;整個(gè)過程分時(shí)段計(jì)價(jià)(晚上10點(diǎn)到次日早上7點(diǎn))。</p><p>  設(shè)計(jì)的顯示效果分為兩部分,一是實(shí)時(shí)的車速,計(jì)價(jià)結(jié)果,油量(油量低于某個(gè)設(shè)定值報(bào)警提示);二是本次總里程,計(jì)價(jià)總時(shí)間,總價(jià)格,且在停止計(jì)價(jià)后一段時(shí)間所有計(jì)數(shù)清零。</p>&l

23、t;p><b>  3、課程設(shè)計(jì)的內(nèi)容</b></p><p>  在明確設(shè)計(jì)任務(wù)后,大家按照設(shè)計(jì)要求明確地分了工。我的部分是顯示計(jì)價(jià)總時(shí)間,總價(jià)格,并在其他同學(xué)需要的時(shí)候做一些輔助工作。</p><p>  我的設(shè)計(jì)程序段比較簡(jiǎn)單,因此比較容易實(shí)現(xiàn),基本思想是,取出起動(dòng)計(jì)程車時(shí)的時(shí)間后停止計(jì)程車時(shí)的時(shí)間,然后按照時(shí)間顯示的格式,時(shí):分:秒,分段計(jì)算時(shí)差,加到后

24、一時(shí)間的分作差,計(jì)算出分差,再加到秒上作差,最后計(jì)算出總秒數(shù),再分別按時(shí),分,秒,除以3600,60,得出時(shí)分秒的具體值。注意的是時(shí)分秒的數(shù)學(xué)格式為 “ 0:00: 00 ",而匯編語(yǔ)言是基礎(chǔ)語(yǔ)言,只能是一位一位的顯示,并且只有1~9才有ASC||碼,所以在計(jì)算分和秒的時(shí)候有可能除出來的數(shù)是大于9的數(shù),這時(shí)需要將分?jǐn)?shù)在除以10,并將商數(shù)加上30h輸出ASC||碼放到第一個(gè)分位,余數(shù)加上30h輸出ASC||碼放到第二位,類似秒位

25、也如此。具體的程序段 見程序附錄。</p><p><b>  4、課程設(shè)計(jì)的總結(jié)</b></p><p>  這次設(shè)計(jì)基本上實(shí)現(xiàn)了任務(wù)書上的要求,可以設(shè)置不同時(shí)段的起步價(jià)、單價(jià);按鍵可以起停車并變速;滿足在相應(yīng)的公里數(shù)下計(jì)價(jià)加價(jià),如是停車等待也可以按設(shè)定值來加價(jià);可以在行進(jìn)途中實(shí)現(xiàn)實(shí)時(shí)顯示價(jià)錢,油量,車速。</p><p>  本次設(shè)計(jì)總共歷

26、時(shí)9天(含中秋放假),我的程序差不多總時(shí)間累計(jì)起來有3天左右。總結(jié)起來,自己的匯編語(yǔ)言基本上沒怎么學(xué)懂,同學(xué)們?cè)谟懻摰囊恍〇|西基本上算不知道,嘆息自己的學(xué)習(xí)能力了,很多東西沒學(xué)過干,對(duì)自己說聲‘’仍需努力,加油吧”。不過值得高興的是,和同學(xué)們相處的這一周多時(shí)間里面還是了解了很多東西,像我的程序段的顯示,原來我是每個(gè)字位用一個(gè) mov ah,09h;int 21h,而郭洋成同學(xué)的指導(dǎo)僅用了一個(gè) 定義數(shù)據(jù)段中的格式“ ‘ 0: 00 :00

27、 ’”,然后地址每加1位,很簡(jiǎn)潔的就解決了(詳細(xì)的程序見程序附錄)。并且也體會(huì)到了團(tuán)隊(duì)工作的相互配合,相互協(xié)作重要性,明確自己什么時(shí)候去配合他人,也要知道什么時(shí)候讓他人幫助自己,有時(shí)候單靠自己是費(fèi)力不討好的事,凝聚產(chǎn)生力量,所以集體的力量是無窮的的。</p><p>  期待,下一次的團(tuán)隊(duì)合作!</p><p>  非常感謝有這樣一個(gè)機(jī)會(huì)讓我獲益匪淺!</p><p&g

28、t;<b>  6.參考文獻(xiàn)</b></p><p>  [1].楊天怡主編.計(jì)算機(jī)硬件基礎(chǔ)(A).重慶大學(xué)出版社</p><p>  [2].黃勤主編.計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)教程.重慶大學(xué)出版社</p><p>  [3].王爽主編.匯編語(yǔ)言(第二版).清華大學(xué)出版社 </p><p>  [4].匯編語(yǔ)言指令

29、大全(詳解版)</p><p><b>  7.附錄</b></p><p><b>  .486</b></p><p>  data segment</p><p>  disp_start db 'please press the "s" key to start

30、the taxi!',0ah,0dh,'$' ;開、停車提示語(yǔ)</p><p>  xwtz0 db ' ',0ah,0dh,'$' </p><p>  xwtz db 'pleas press on the key &q

31、uot;q" to stop the car ?',0ah,0dh,'$'</p><p>  pricing db ? ;定義兩個(gè)內(nèi)存空間,存入需要用的起步價(jià)和單價(jià)</p><p>  ppm db ?</p><p>  pricing1 db ? ;定義兩個(gè)內(nèi)存空間,臨時(shí)存入白天的起步價(jià)和單價(jià)</p&g

32、t;<p>  ppm1 db ?</p><p>  pricing2 db ? ;定義兩個(gè)內(nèi)存空間,臨時(shí)存入晚上的起步價(jià)和單價(jià)</p><p><b>  ppm2 db ?</b></p><p>  keybuf db 10 ;定義一個(gè)存字符串的數(shù)組</p><p>  count

33、 db ?</p><p>  keynum db 10 dup(?)</p><p>  mess0 db 'please set the prices (0.0-9.9 yuan)',0ah,0dh,'$'</p><p>  mes1 db 'the start price of day: ','$&#

34、39;</p><p>  mes2 db 0ah,0dh,'the pice per kilometer of day: ','$'</p><p>  mes3 db 0ah,0dh,'the the start price of night: ','$'</p><p>  mes4 db 0ah

35、,0dh,'he pice per kilometer of night: ','$'</p><p>  mes5 db 0ah,0dh,'press "d" or "n" to judge the day or night',0ah,0dh,'$'</p><p>  tt db &

36、#39;totaltime:',0ah,0dh,'$' ;實(shí)時(shí)顯示字符串緩沖區(qū)</p><p>  tt1 db 'wait time:',0ah,0dh,'$' </p><p>  tp db 'totalprice:',0ah,0dh,'$'</p>&

37、lt;p>  ttd db '0:00:00',0ah,0dh,'$'</p><p>  ttd1 db '0:00:00',0ah,0dh,'$'</p><p>  tpd db '000.0 yuan',0ah,0dh,'$'</p><p>  disp1

38、 db 'speed: 000 km/h',0dh,0ah,'$'</p><p>  disp2 db 'current oil: 000 L',0ah,0dh,'$'</p><p>  disp3 db 'total distance: 000 km',0ah,0dh,'$'</p&

39、gt;<p>  ttd0 db '0:00:00',0ah,0dh,'$' ;初始化顯示字符串,清零</p><p>  ttd10 db '0:00:00',0ah,0dh,'$'</p><p>  tpd0 db '000.0 yuan',0ah,0dh,&

40、#39;$'</p><p>  disp10 db 'speed: 000 km/h',0dh,0ah,'$'</p><p>  disp20 db 'current oil: 000 L',0ah,0dh,'$'</p><p>  disp30 db 'total distanc

41、e: 000 km',0ah,0dh,'$'</p><p>  minite db ?</p><p>  second db ?</p><p>  msecond dw ?</p><p>  daytime db ?</p><p><b>  mile dd 0</b&

42、gt;</p><p>  p dw 0 ;計(jì)價(jià)的總價(jià)格</p><p>  miletest dd 3000</p><p>  miletest1 dd 1000</p><p>  priceflag db 0</p><p>  timea dw ? ;

43、開始計(jì)價(jià)時(shí)刻的時(shí)和分</p><p>  timeb dw ? ;停止計(jì)價(jià)時(shí)刻的秒</p><p>  timec dw ? ;停止計(jì)價(jià)時(shí)刻的時(shí)和分</p><p>  timed db ? ;停止計(jì)價(jià)時(shí)刻的秒</p><p>  time1 dw ?</p>

44、<p>  time2 dw ?</p><p>  time3 dw ?</p><p>  time4 dw ?</p><p><b>  t1 dw ?</b></p><p><b>  t2 dw ?</b></p><p><b>  t

45、3 dw ?</b></p><p><b>  t4 dw ?</b></p><p>  flagtime db 0 ;為0表示與初始時(shí)間做時(shí)間差chesu db ?</p><p>  time_lag dw 10 ;設(shè)置等待計(jì)價(jià)的時(shí)間間隔</p><p>  tota

46、llag dw 10 ;定義總時(shí)間間隔標(biāo)志位,等待計(jì)價(jià)</p><p>  time5_1 dw ? ;時(shí)</p><p>  time5_2 dw ? ;分</p><p>  time6_1 dw ? ;時(shí)</p><p>  time6_2 dw ?

47、 ;分</p><p>  time_flag db 0</p><p>  time_wait dw 0</p><p>  msecond1 dw 0</p><p>  msecond0 dw 0</p><p>  wait1 dw 100</p><p>  freq dw 2

48、61 ;設(shè)置警報(bào)聲的頻率和時(shí)間長(zhǎng)度</p><p>  slong dw 01ffh</p><p>  speed db 00h ;出租車車速0~255km</p><p>  chesu db 00h ;折算速度,一小時(shí)按以分鐘計(jì)算,模擬運(yùn)行</p><p>  keep_es d

49、w ?</p><p>  keep_bx dw ?</p><p><b>  disp dw ?</b></p><p>  oil_total dw 100 ;設(shè)置本次運(yùn)行的總油量</p><p>  oil_current dw ? ;當(dāng)前油量</p><p>  oi

50、l_pm db 1 ;每公里耗油量</p><p>  oil_warn dw 20 ;設(shè)置油量警戒值</p><p>  oil_flag db 0 ;油量報(bào)警標(biāo)志位</p><p>  gongli db 0 ;總里程整數(shù)公里數(shù)</p><p>  hang db ?

51、 ;光標(biāo)顯示初始行位置</p><p>  lie db ? ;光標(biāo)顯示初始列位置</p><p><b>  data ends</b></p><p>  code segment</p><p>  main proc far</p><p>

52、  assume cs:code,ds:data</p><p>  start:mov ax,data</p><p><b>  mov ds,ax</b></p><p>  lea dx,disp_start ;啟動(dòng)車提示語(yǔ)</p><p>  mov ah,09h</p><p>

53、;<b>  int 21h</b></p><p>  jxx1:mov ah,01h ;繼續(xù)等待時(shí)間,檢測(cè)按鍵和車速</p><p><b>  int 16h</b></p><p>  jz jxx1 ;無鍵按下,跳轉(zhuǎn)jxx1,繼續(xù)等待按鍵</p>

54、<p><b>  mov ah,0</b></p><p><b>  int 16h</b></p><p>  cmp al,'s' ;有開始鍵按下,跳轉(zhuǎn)</p><p><b>  jz kaishi</b></p><p&

55、gt;  jmp jxx1 ;無開始鍵按下,跳轉(zhuǎn),繼續(xù)等待</p><p>  kaishi:lea dx,mess0 ;設(shè)置起步價(jià),單價(jià)提示語(yǔ)</p><p>  mov ah,09h</p><p>  int 21h </p><p>  call srdq

56、;設(shè)置白天,晚上的起步價(jià)和單價(jià)子程序</p><p>  ;設(shè)置按鍵中斷,并開中斷</p><p>  cli ;清中斷標(biāo)志位</p><p>  mov ah,35h ;讀取原中斷向量 </p><p>  mov al,09h</p>

57、;<p><b>  int 21h</b></p><p>  mov keep_es,es</p><p>  mov keep_bx,bx</p><p><b>  push ds</b></p><p>  mov dx,offset jsd ;裝入自編鍵盤中斷

58、程序的中斷矢量</p><p>  mov ax,seg jsd</p><p><b>  mov ds,ax</b></p><p>  mov ah,25h</p><p>  mov al,09h</p><p><b>  int 21h</b></p>

59、<p><b>  pop ds</b></p><p>  in al,21h ;允許鍵盤中斷</p><p>  and al,0fdh</p><p>  out 21h,al</p><p>  sti ;開中斷</p

60、><p>  mov bh,00h ;記錄須顯示的初始光標(biāo)的位置</p><p>  mov ah,03h </p><p><b>  int 10h</b></p><p>  mov hang,dh</p><p>  mov lie,dl</p>

61、<p>  call xscsh ;顯示初始化</p><p>  again:cmp speed,0 ;檢測(cè)速度是否為零</p><p><b>  jz again</b></p><p>  call getsystime1 ;調(diào)用取開始時(shí)間子程序&l

62、t;/p><p><b>  jmp lllp1</b></p><p>  qushi:mov dh,hang ;等待計(jì)時(shí)結(jié)束后,即速度重新由零變?yōu)檎?,跳轉(zhuǎn)到的位置</p><p>  mov dl,lie</p><p><b>  add dh,9</b></p&

63、gt;<p>  mov bh,00h</p><p>  mov ah,02h</p><p>  int 10h ;置光標(biāo)位置</p><p>  lea dx,xwtz0</p><p>  mov ah,09h</p><p>  int 21h

64、 ;清楚屏幕停車提示語(yǔ)</p><p>  mov dh,hang ;置光標(biāo)回到初始位置</p><p>  mov dl,lie</p><p>  mov bh,00h</p><p>  mov ah,02h</p><p><b>  int 10

65、h</b></p><p>  call systime ;調(diào)用取當(dāng)前時(shí)刻時(shí)間子程序</p><p>  lllp1:mov ecx,00ffffffh ;延時(shí),可調(diào)時(shí)長(zhǎng)</p><p>  xh0:loopd xh0</p><p>  lllp0:call systime

66、 ;再次調(diào)用取當(dāng)前時(shí)刻時(shí)間子程序</p><p>  call duration ;計(jì)算相鄰兩次調(diào)用時(shí)間的時(shí)間差</p><p>  mov cl,speed </p><p>  cmp cl, 240</p><p><b>  jbe lllp</b>

67、;</p><p>  mov speed,240</p><p>  lllp:call jichesu ;折算車速</p><p>  call price ;計(jì)算總里程和總價(jià)格</p><p>  call youhao ;計(jì)算當(dāng)前油量</p><

68、;p>  call show_zcx ;時(shí)間,總價(jià),車速,油量,總里程顯示子程序</p><p>  cmp speed,0 ;判斷速度是否為零</p><p>  jz jjdd ;速度為零跳轉(zhuǎn)到等待計(jì)價(jià)模塊</p><p>  mov ecx,00ffffffh

69、;延時(shí),可調(diào)</p><p>  xh1:loopd xh1</p><p><b>  jmp lllp0</b></p><p>  jjdd:call ddjj ;跳到等待計(jì)價(jià)子程序模塊</p><p>  tuichu:call show_zcx ;顯示子程序&

70、lt;/p><p>  mov ecx,0bfffffffh</p><p>  yanshi10:loopd yanshi10 ;顯示一段時(shí)間 清零</p><p>  call xscsh ;顯示初始化,清零</p><p>  mov dh,hang </p

71、><p>  mov dl,lie</p><p>  add dh,10 ;光標(biāo)跳到新的一行顯示結(jié)束,返回dos</p><p>  mov bh,00h</p><p>  mov ah,02h</p><p><b>  int 10h</b></p&g

72、t;<p>  mov ah,4ch ;按任意鍵返回Dos</p><p><b>  int 21h</b></p><p><b>  main endp</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

73、;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;;;;;;;;;;;屏幕時(shí)間,總價(jià),速度,油量和總里程顯示子程序 ;;;;;;;;;;;;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  show_zcx p

74、roc near</p><p><b>  pusha</b></p><p>  call getsystime2 </p><p>  call totaltime</p><p>  call totalprice</p><p><b>  call ddjs

75、</b></p><p>  call speed_disp</p><p>  call oil_disp</p><p>  call distance_disp</p><p>  mov dh,hang</p><p>  mov dl,lie</p><p>  mov b

76、h,00h</p><p>  mov ah,02h</p><p><b>  int 10h</b></p><p><b>  popa</b></p><p><b>  ret</b></p><p>  show_zcx endp</p

77、><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;;;;;;;;;;;;;;設(shè)置白天或者晚上起步價(jià)和單價(jià)子程序;;;;;;;;;;;;;;;;;;</p><p>  ;;;;;;通過鍵盤輸入判斷白天黑夜,分別設(shè)置不同的起步價(jià)和單價(jià);;;;;;;;&l

78、t;/p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; </p><p>  srdq proc near</p><p><b>  pusha</b></p><p>  ;;分別輸入白天晚上的起步價(jià)和單價(jià)</p

79、><p>  lea dx,mes1</p><p>  mov ah,09h</p><p><b>  int 21h</b></p><p>  lea dx,keybuf</p><p>  mov ah,0ah</p><p><b>  int 21h&l

80、t;/b></p><p>  call erjzzh</p><p>  mov pricing1,bl</p><p>  lea dx,mes2</p><p>  mov ah,09h</p><p><b>  int 21h</b></p><p>  l

81、ea dx,keybuf</p><p>  mov ah,0ah</p><p><b>  int 21h</b></p><p>  call erjzzh</p><p>  mov ppm1,bl</p><p>  lea dx,mes3</p><p>  m

82、ov ah,09h</p><p><b>  int 21h</b></p><p>  lea dx,keybuf</p><p>  mov ah,0ah</p><p><b>  int 21h</b></p><p>  call erjzzh</p>

83、<p>  mov pricing2,bl</p><p>  lea dx,mes4</p><p>  mov ah,09h</p><p><b>  int 21h</b></p><p>  lea dx,keybuf</p><p>  mov ah,0ah</p&

84、gt;<p><b>  int 21h</b></p><p>  call erjzzh</p><p>  mov ppm2,bl</p><p>  lea dx,mes5</p><p>  mov ah,09h</p><p><b>  int 21h<

85、/b></p><p>  l: mov ah,01h ;檢測(cè)是否有鍵按下。</p><p>  int 16h </p><p><b>  jz l</b></p><p>  mov ah,0 ;有,就讀入這個(gè)鍵,分別和d和n的ascii比較,</p&

86、gt;<p>  int 16h ;讀入是d就講轉(zhuǎn)換的白天值存入內(nèi)存,反之則存入晚上的內(nèi)存</p><p>  cmp al,'d'</p><p><b>  jz day</b></p><p>  cmp al,'n'</p><p><

87、;b>  jz night</b></p><p><b>  jmp l</b></p><p>  day: mov dl,pricing1</p><p>  mov pricing,dl</p><p>  mov dl,ppm1</p><p>  mov ppm

88、,dl</p><p><b>  jmp l1</b></p><p>  night: mov dl,pricing2</p><p>  mov pricing,dl</p><p>  mov dl,ppm2</p><p>  mov ppm,dl </p><

89、p>  l1: popa</p><p><b>  ret</b></p><p>  srdq endp </p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;;;;;;;;;;將白天

90、和晚上的單價(jià)和起步價(jià)分別轉(zhuǎn)換為整數(shù)角;;;;;;;;;;</p><p>  ;;;;;;;;;;;;;輸入的單價(jià)和起步價(jià)在0.1~9.9之間;;;;;;;;;;;;;;;;;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  erjzzh proc

91、 near</p><p><b>  push ax</b></p><p><b>  push cx</b></p><p><b>  push di </b></p><p>  lp: mov bl,0</p><p><b&

92、gt;  mov di,0</b></p><p>  mov al,keynum[di]</p><p>  sub al,30h ;轉(zhuǎn)換輸入的第一位</p><p><b>  mov cl,10</b></p><p><b>  mul cl</b></p>

93、<p><b>  mov bl,al</b></p><p><b>  inc di </b></p><p>  mov al,keynum[di]</p><p>  cmp al,2eh ;判斷是整數(shù)還是小數(shù),是整數(shù)就直接跳出,是小數(shù)就繼續(xù)運(yùn)算十分位。</p><p

94、><b>  jnz llp0</b></p><p>  inc di ;跳過小數(shù)點(diǎn)</p><p>  mov al,keynum[di]</p><p>  sub al,30h</p><p>  add bl,al ;將得到的結(jié)果存入寄存器bl</p>

95、<p>  llp0:pop di</p><p><b>  pop cx</b></p><p><b>  pop ax </b></p><p><b>  ret</b></p><p>  erjzzh endp</p>&l

96、t;p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;;;;;;;;;;;;;;;;;等待計(jì)價(jià)子程序;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

97、</p><p>  ddjj proc neat</p><p><b>  pusha</b></p><p>  mov dh,hang ;置光標(biāo)位置</p><p>  mov dl,lie</p><p><b>  add dh,9</b></

98、p><p>  mov bh,00h</p><p>  mov ah,02h</p><p><b>  int 10h</b></p><p>  lea dx,xwtz</p><p>  mov ah,09h</p><p>  int 21h

99、;顯示提示語(yǔ) 是否按鍵停止計(jì)價(jià)停車,q鍵</p><p>  mov dh,hang ;置光標(biāo)初始位置</p><p>  mov dl,lie</p><p>  mov bh,00h</p><p>  mov ah,02h</p><p><b>  int 10h</b>&

100、lt;/p><p>  jxdd: mov ah,2ch ;dos 2c號(hào)功能調(diào)用,獲取系統(tǒng)時(shí)間,ch,cl,dh分別存放小時(shí),分鐘,秒.</p><p>  int 21h </p><p>  mov time5_1,cx</p><p>  mov time5_2,dx

101、</p><p>  in al,60h ;開按鍵中斷int 21h的09h號(hào)功能,讀鍵的掃描碼</p><p>  push ax ;不能使用int 16h的01h和00h號(hào)功能</p><p><b>  in al,61h</b></p><p><b>  or

102、 al,80h</b></p><p>  out 61h,al</p><p>  and al,7eh</p><p>  out 61h,al</p><p><b>  pop ax</b></p><p>  cmp al,10h ;10h為q鍵的掃描碼

103、</p><p>  jz tuichu ;按下q鍵跳到退出程序段</p><p>  jxx:cmp speed,0</p><p>  jnz qushi ;車速不為0,跳出,并開始計(jì)時(shí),到計(jì)算里程計(jì)價(jià)</p><p>  mov ecx,00ffffffh ;延時(shí),可調(diào)<

104、;/p><p>  xh111:loopd xh111 </p><p>  mov ah,2ch ;dos 2c號(hào)功能調(diào)用,獲取系統(tǒng)時(shí)間,ch,cl,dh分別存放小時(shí),分鐘,秒.</p><p>  int 21h </p><p>  m

105、ov time6_1,cx</p><p>  mov time6_2,dx</p><p>  mov second,0</p><p>  mov ax,time5_1</p><p><b>  mov t1,ax</b></p><p>  mov ax,time5_2</p>

106、<p><b>  mov t2,ax</b></p><p>  mov ax,time6_1</p><p><b>  mov t3,ax</b></p><p>  mov ax,time6_2</p><p><b>  mov t4,ax</b><

107、;/p><p><b>  mov ax,t3</b></p><p><b>  mov bx,t1</b></p><p><b>  mov cl,al</b></p><p>  sub ah,bh ;差,ah中存小時(shí)之差</p><p&

108、gt;  jz next10 ;若小時(shí)數(shù)相等,則無需處理</p><p>  mov al,ah ;al存小時(shí)之差</p><p><b>  mov ah,0</b></p><p><b>  mov bh,60</b></p><p>  mul bh

109、 ;將小時(shí)之差化為分鐘</p><p><b>  add al,cl</b></p><p>  mov minite,al ;小時(shí)化為分鐘數(shù)加上最近一次的分鐘數(shù)存于minite中</p><p>  jmp then10</p><p>  next10: mov ax,t3</p>

110、<p><b>  mov bx,t1</b></p><p><b>  sub al,bl</b></p><p>  jmp then20</p><p>  then10:mov bx,t1</p><p>  mov al,minite</p><p>

111、  sub al,bl ;差,al中存分鐘之差</p><p>  then20: jz next20</p><p><b>  mov dl,60</b></p><p><b>  mov ah,0</b></p><p><b>  mul dl</b>

112、;</p><p>  mov second,al ;分鐘之差化為秒,存于second</p><p>  next20: mov ax,t4</p><p>  mov bx,t2;ax為最近一次秒和1%秒</p><p>  cmp al,bl </p><p>  jb next3

113、0 ;若最近一次的1%秒數(shù)小于上一次,不夠減</p><p>  sub al,bl ;1%秒數(shù)差存于al中</p><p><b>  and cx,0</b></p><p><b>  mov cl,al</b></p><p>  mov msecond1

114、,cx ;夠減情況下,1%秒之差存于msecond</p><p>  jmp next40</p><p>  next30: dec ah ;借位</p><p>  add al,100</p><p>  sub al,bl ;1%秒數(shù)之差存于al</p><p

115、><b>  and cx,0</b></p><p><b>  mov cl,al</b></p><p>  mov msecond1,cx ;不夠減情況下,1%秒存于msecond</p><p>  next40: mov dh,second</p><p>  add a

116、h,dh </p><p>  sub ah,bh ;秒數(shù)之差</p><p>  mov al,ah ;秒數(shù)差存于al</p><p><b>  mov ah,0</b></p><p>  mov bl,100</p><p>  m

117、ul bl ;此時(shí)由秒數(shù)求得的1%秒存于ax中</p><p>  add msecond1,ax ;此時(shí)msecond1中存總的間隔時(shí)間</p><p>  mov ax,msecond1</p><p>  add msecond0,ax</p><p>  mov ax,wait1</p>

118、<p>  cmp msecond0,ax</p><p><b>  jb jxdd</b></p><p>  add wait1,100</p><p>  inc time_wait </p><p>  mov cx,totallag</p><p>  cmp time_

119、wait,cx ;比較間隔時(shí)間,每比較一次間隔時(shí)間變化一次time_lag</p><p>  jae tjyc ;跳轉(zhuǎn)到調(diào)價(jià)一次tjyc</p><p>  call show_zcx</p><p>  mov ecx,00ffffffh ;延時(shí),可調(diào)</p><p>  xh1

120、1:loopd xh11 ;取系統(tǒng)時(shí)間int 21h中斷要影響按鍵中斷</p><p>  jmp jxdd ;所以這里加一個(gè)延時(shí)可以讓鍵盤中斷加減速鍵靈敏,尤其是當(dāng)速度為零是按加速鍵</p><p>  tjyc:mov ax,time_lag</p><p>  add totallag,ax</

121、p><p>  mov bl,ppm</p><p><b>  mov bh,0</b></p><p><b>  add p,bx</b></p><p>  call show_zcx</p><p><b>  jmp jxdd</b></

122、p><p><b>  popa</b></p><p><b>  ret</b></p><p><b>  ddjj endp</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</

123、p><p>  ;;;;;;;;;;;;;;;;;調(diào)節(jié)車速中斷服務(wù)程序;;;;;;;;;;;;;;;;;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  jsd proc near</p><p><b>  pusha</b

124、></p><p>  in al,60h ;讀取按鍵的掃描碼</p><p><b>  push ax</b></p><p><b>  in al,61h</b></p><p><b>  or al,80h</b></p><

125、;p>  out 61h,al</p><p>  and al,7eh</p><p>  out 61h,al</p><p><b>  pop ax</b></p><p>  mov bl,speed</p><p>  cmp al,0dh</p><p>

126、;  je jia ;‘+’鍵按下,跳到加速度段</p><p>  cmp al,0ch</p><p>  je jian ;'-'鍵按下,跳到減速度段</p><p>  jmp exit ;其它按鍵直接跳出</p><p>  jia:cmp bl,240&l

127、t;/p><p>  jae exit ;大于等于240轉(zhuǎn)移</p><p>  add bl,06h ;車速每加一次6公里</p><p><b>  jmp exit</b></p><p>  jian:cmp bl,00h</p><p>  jbe exit

128、 </p><p>  sub bl,06h ;車速每次減6公里</p><p><b>  jmp exit</b></p><p>  exit:mov speed,bl</p><p>  mov al,20h ;發(fā)中斷結(jié)束命令</p><p>  out 20h

129、,al</p><p><b>  popa</b></p><p><b>  iret</b></p><p><b>  jsd endp</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p&

130、gt;<p>  ;;;;;;;;;速度顯示子程序;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  speed_disp proc near</p><p><b>  pusha</b></p&g

131、t;<p>  lea di,disp1</p><p><b>  add di,6</b></p><p>  mov al,speed</p><p>  mov ah,00h</p><p>  mov cl,100</p><p><b>  div cl<

132、/b></p><p>  add al,30h</p><p><b>  inc di</b></p><p>  mov [di],al</p><p><b>  mov al,ah</b></p><p>  mov ah,00h</p><

133、;p><b>  mov cl,10</b></p><p><b>  div cl</b></p><p>  add al,30h</p><p><b>  inc di</b></p><p>  mov [di],al</p><p>

134、<b>  mov al,ah</b></p><p>  add al,30h</p><p><b>  inc di</b></p><p>  mov [di],al</p><p>  lea dx,disp1</p><p>  mov ah,09h</p&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論