計算機硬件課程設計---出租車計價器設計.doc
《計算機硬件課程設計---出租車計價器設計.doc》由會員分享,可在線閱讀,更多相關《計算機硬件課程設計---出租車計價器設計.doc(59頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、計程車計價器計算機硬件技術基礎課程設計報告出租車計價器設計(PC鍵盤)設計任務書一、設計題目設計一個計程車計價器,該系統(tǒng)能根據(jù)設定單價、設定車速和運行時間實時計算、顯示出車費二、設計要求1、 以PC機標準鍵盤為基礎,設計計價器的專用鍵盤功能,并實現(xiàn)。要求用最簡單的硬件連接實現(xiàn)最方便的參數(shù)設置、模擬啟動、模擬停車功能。2、 設計計價器的參數(shù)設置功能,包括單價的設定、車速的設定或車輪周長的設定,并實現(xiàn)。3、 設計計價器的實時車費顯示功能,并實現(xiàn)。4、 各項的功能的設計應合理可行,人機交流方便,畫面美觀,聲音悅耳。5、 計程車運行公里數(shù)的計算方法可采用:通過設置車輪周長與模擬測試計程車行進過程中車輪
2、的轉(zhuǎn)數(shù)得到公里數(shù)。通過設置車速與已知運行時間得到公里數(shù)。目錄一總體方案設計(附圖).3二操作說明.5三硬件設計.6四程序流程圖.71 .主流程圖.72.重要模塊流程.8五程序清單.12六設計感觸. 37一總體方案設計(附圖):修改并顯示總價結束停止音樂停止停止繼續(xù)暫停動畫停止 播放音樂延時計算總價里程增加0.5KM計算里程動畫改變移動速度加速度改變顯示動畫啟動開始初始化啟動音樂NNYYNNNYYYYNNY關鍵詞:匯編語言,模塊,動畫顯示,音樂播放,靈活輸入采用模塊化的程序設計思想.模塊化的設計具有許多優(yōu)點:其一,便于分塊細化設計,其二,讓整個主程序思路清晰,結構明了;其三,各個模塊獨立進行調(diào)試
3、,當程序出現(xiàn)錯誤時,以便于糾錯。本方案共分為五個部分:初始化,啟動,音樂播放,運行,結束。以下逐一進行詳細闡述。初始化:主要由以下兩個部分組成,最初數(shù)據(jù)的輸入和屏幕的初始化。數(shù)據(jù)的輸入即單價,起步價,車輸?shù)脑O定,在輸入時可以輸入小數(shù),再經(jīng)過計算處理后,顯示的也可以是小數(shù),這是本方案設計的特色之一;另一部分是屏幕的初始化,顯示方式采用320*200圖形顯示,屏幕上顯示的內(nèi)容有:單價,起步價,車速,總價,里程以及公路和小車模型。啟動:在設計本部分時,最初采用一般的中斷,無法達到理想的效果,巧妙的運用讀入鍵盤接口的信息進行數(shù)據(jù)的時時輸入,完成對計價器的模擬。當讀鍵盤接口有啟動鍵(小鍵盤4) 時指引程
4、序往下運行,并修改車輛運行標志(),播放一段音樂,將總價顯示為起步價的值。音樂播放:采用通用發(fā)聲程序,編譯音樂播放宏(music),建立好歌曲的音符音值表,通過宏調(diào)用實現(xiàn)音樂的播放。這里我們總共有三處音樂,分別是啟動時,暫停時,結束時,當然,通過對音符音值表的修改,可以設定出自己想要的音樂,本程序都可以給你播放出來。運行:這是程序的核心,主要包括計價器數(shù)據(jù)(單價,起步價,車速,總價,里程)的時時顯示,車速的更改,動畫顯示,也包括計時延遲跟隨車速的修改(動畫顯示和數(shù)據(jù)的刷新和延遲正相關),運行控制的檢測處理(暫停?暫停后的繼續(xù)、停止?停止?),后面都將進行詳略有別的說明 運行結束:小鍵盤6為結束
5、鍵,按下后,數(shù)據(jù)凍結,中線動畫停止,運行標志顯示為呈橙色,顯示小車從右至左的動畫,播放一段結束音樂,本次旅行就結束了。然后切換到提示再次啟動(此時沿用前次輸入?yún)?shù))的界面。按4再次啟動,按6退出程序二操作說明:開始后,程序提示輸入信息,這需要你輸入單價,起步價,車速,可以是不大于999.9的小數(shù)(當然,最好還是給出實際的價格吧,不合理的價格是用來檢測程序的極限值的),最后以回車結束。屆時屏幕初始化顯示數(shù)據(jù)以及小車,公路的模型,這時你按下小鍵盤4,啟動計價器運行,播放啟動完音樂后,計價器正式工作,你將發(fā)現(xiàn),公路中央的白線向右移動,表示小車正向左行駛,同時里程和總價有刷新。本程序有部分靈活性,由小
6、鍵盤的7,1鍵可增減速度(范圍0300km/h),速度有變,與之相關聯(lián)的動畫及數(shù)據(jù)的刷新有連鎖響應(經(jīng)過合理的處理,數(shù)據(jù)計算的精準不受影響),給人一種真實的感受。一次搭乘完畢,還可以按提示繼續(xù)服務,或者退出。這里有美中不足,沒有采用中斷,其直接后果是:鍵盤的檢測總及處理總在每次延時之后,所以延時較長時,按鍵需停滯一會,等待程序響應呵)。乘客要求暫停可按小鍵盤5(按4可再次運行),結束可按6,你會發(fā)現(xiàn)相應的變化。三硬件設計: PC對鍵盤的管理采用了中斷方式,來自鍵盤的中斷信號接到了系統(tǒng)內(nèi)部主8259A的IR1中斷請求輸入線,其中斷類型號為09H, 計時功能可以用PC系統(tǒng)板上8254的通道0完成。
7、系統(tǒng)板上8254通道0是一個產(chǎn)生實時時鐘信號的系統(tǒng)計時器,利用它可以完成日歷時鐘計數(shù)。該通道工作在方式3,輸出周期性方波。其計數(shù)初值啟動時由BIOS設置為0,輸出信號OUT0連接到系統(tǒng)板上8259A的IR0。由于CLK0接入的脈沖信號頻率為1.1931816MHz,則OUT0引腳上輸出的方波脈沖序列的周期為Y=65536/1.1931816MHz55ms。即每經(jīng)過55ms產(chǎn)生一次0級中斷請求(中斷類型號為08H)。系統(tǒng)設置INT 1CH的目的在于建立一個用戶可用的定時操作服務程序入口。若用戶沒有編制新的INT 1CH中斷服務程序,并修改1CH的中斷向量地址,則調(diào)用了1CH中斷后立即從INT 1
8、CH中斷返回,因為系統(tǒng)原來的INT 1CH中斷服務程序僅由一條中斷返回指令IRET組成.G1 Y0G2A G2B Y1C BACS A1 PB1A0 D0D7 PB0 WRRD RESETCS GAT0A1 CLK0A0 OUT0D0D7 GAT1 WR CLK1RD OUT1 GAT2 CLK2OUT2與門IOWIORA4A3A5A6A8A9A7A2A1A0D0D7與非門驅(qū)動器揚聲器825582541.1931816MHz74LS138IRQ18254端口地址:40H43H8254端口地址:60H63H8259A的地址為:20H21HIRQ0四程序流程圖:1 .主流程圖:Call Input
9、data設定起步價 單價 車速子程序Call Chushisc屏幕初始化Call Disdatas顯示即時起步價 單價 車速 總價 里程信息Call Txtlined畫縱列Call Dischars顯示漢字及圖形Call Disflag運行 暫停 停止標志顯示Call Distexts顯示數(shù)字及其它單列文本字符Call Txtliner畫橫線Call getstart車輛啟動顯示動畫Call Varyspeed鍵盤輸入增減速度Call Delay0延時(程序修改延時時間)Call Jizongjia 計算并顯示總價Call Chulilicheng處理里程Call Checkkey 檢測鍵盤輸
10、入命令開始初始化啟動運行動畫結束好了,這里我們看到與總體方案設計中類似的主流程圖,不過這里不側重于總體的功能說明,而是具體的運行細節(jié)。從左邊的一級結結初步展開二級結構,也是主程序?qū)^程調(diào)用的大略說明。2.重要模塊流程: 在程序清單中你將發(fā)現(xiàn)設計的宏,子程序較多,計4+33個,不可能一一作出流程加以詳述,我們在這兒擇要圖列。Inc sisibl bl-30hbl10dxmul dxadd ax,bxaxstring2是09的數(shù)Si指最高位 0axbl是小數(shù)點sibl bl-30hbl10dxmul dxadd ax,bxInc si圖2 daconver字符串轉(zhuǎn)成數(shù)字宏 初始化:在數(shù)據(jù)輸入時最多
11、輸入五位(整數(shù)位,小數(shù)點,小數(shù)位),不適格會要求重輸,合適的輸入會及時加以處理,后臺處理而矣,用戶不需理睬。YN提示輸入起步價信息輸入起步價合法輸入輸入單價,車速并如上處理轉(zhuǎn)化為字符串圖1Chushida宏完成數(shù)據(jù)輸入YNYN鍵盤輸入增減速流程圖:YNYNYNYNYN圖3鍵盤輸入增減速度是小鍵盤1車速減10車速為0嗎車速為0減少后的車速存到chesu3檢測鍵盤接口是小鍵盤7車速增加10車速為300嗎車速給300增加后的車速存到chesu3將車速轉(zhuǎn)化為字符串并顯示由于避免對中斷的應用,特設計鍵盤檢測程序,在大循環(huán)中調(diào)用,當call delay0較長(是由車速大小決定的),你將感到按鍵變得不靈敏,
12、因為程序還未運行到這里,這個不太人性化的設計要求我們的用戶按鍵多保持一會,多多見諒呵。計算并處理里程:NY Call shicha;計算時差,修改subtimecalljichesu車速折算存于chesu2車速為0嗎licheng2= licheng2+shicha*jichesu將licheng2轉(zhuǎn)化為字符并顯示圖4計算并處理里程里程在總的程序中的地位較為重要,除了顯示有里程這一項,總價的計算也是以它不基礎的,當這兩個量的顯示出錯的時候,我們總要從里程計算這個模塊開始檢查。在程序糾錯中,找到錯誤所在,然后才是查出錯因。對于程序邏輯錯誤,找到錯處不算太容易。計算并顯示總價:YNYN圖5計算并顯
13、示總價Zongjia轉(zhuǎn)化為字符串并顯示Licheng3大于10嗎Licheng4大于Licheng3嗎Licheng4+5 Licheng4Licheng410 axdanjia2*ax+qibujia2zongjiaqibujia zongjia總價最大值為999.9元(實際沒多少人打的也要花1000大洋,只是程序完善的需要罷了)在此值附近將暫停,之后就算再按小鍵盤4啟動也將再次進入暫停,唯有6鍵退出,結束本次行程.五程序清單:.486;*設置顯示方式宏*setdistype macro typenum mov ah,00h mov al,typenum ;分辨率為320*200 int 1
14、0h endm;*數(shù)據(jù)初始輸入宏*;提示輸入,接受輸入,并判斷數(shù)據(jù)是否適格,均為三位整數(shù);strings指向提示信息;string指向輸入變量(第三個單元開始才是實際輸入的數(shù)據(jù))chushida macro strings,string local lpcs,lpcs1,exitcs,exitcs2,exitcs3,ispoint,ispoint2,lpzheng,lpxiao,nexchshlpcs: lea dx,strings ;顯示輸入提示信息 mov ah,09h int 21h lea dx,buffervar;輸入變量名 mov ah,0ah int 21h mov al,0 m
15、ov flagpoint,al;輸入小數(shù)點標志置0 lea si,buffervar+2 mov cx,0lpcs1: mov al,si cmp al,0dh jz exitcs cmp al,. jz ispoint cmp al,0 jb lpcs cmp al,9 ja lpcs inc si inc cx jmp lpcs1 ispoint: mov bl,1 mov flagpoint,bl inc cx inc si mov al,si cmp al,0dh jz exitcs cmp al,. jz exitcs2 cmp al,0 jb exitcs2 cmp al,9 ja
16、 exitcs2 inc cx jmp exitcsexitcs2: mov al,0 mov flagpoint,al dec cx ;jmp nexchshexitcs: ;cmp cx,1 ;jz exitcs3;nexchsh: mov al,flagpoint cmp al,1 jz ispoint2 lea si,buffervar+1 add si,cx lea di,string+2lpzheng: cmp cx,0 jz exitcs3 mov al,si mov di,al dec cx dec si dec di jmp lpzhengispoint2: lea si,b
17、uffervar+1 add si,cx mov al,si cmp al,. jz exitcs3 lea di,string+4lpxiao: cmp cx,0 jz exitcs3 mov al,si mov di,al dec cx dec si dec di jmp lpxiaoexitcs3: endm;*字符串轉(zhuǎn)成數(shù)字宏*;string1是字符串,string2為對應數(shù)值*10daconver macro string1,string2 local lpdac,nextdac,nextdac1,nextdac2 lea si,string1 mov ax,0 mov bx,0lp
18、dac: mov bl,si cmp bl,. jz nextdac2 cmp bl,0 jb nextdac cmp bl,9 ja nextdac jmp nextdac1nextdac: inc si jmp lpdacnextdac1: sub bl,30h mov dx,10 mul dx add ax,bx inc si jmp lpdacnextdac2: inc si mov bl,si sub bl,30h mov dx,10 mul dx add ax,bx mov string2,ax endm;*音樂播放宏*music macro frequency,timetable
19、 local music1,leng,dl10ms,exitmu lea si,frequency lea bp,timetablemusic1:mov di,si cmp di,-1 je exitmu mov bx,ds:bp mov al,10110110b out 43h,al mov dx,12h mov ax,3280h div di out 42h,al mov al,ah out 42h,al in al,61h mov ah,al or al,3 out 61h,alleng: mov ecx,0ffffffhdl10ms: loopd dl10ms dec bx jnz l
20、eng mov al,ah out 61h,al add si,2 add bp,2 jmp music1 exitmu: endm DATAS SEGMENT;.暫存器time1 dw 0 ;計時器1的時分time2 dw 0 ;計時器1的秒百分之一秒time3 dw 0 ;計時器2的時分time4 dw 0 ;計時器2的秒百分之一秒subtime dd 0 ;兩次計時時差暫存器x0 dw ? ;字符字模輸出的起始橫坐標y0 dw ? ;字符字模輸出的起始列坐標color db ? ;字模的顏色flagdis db 0 ;動畫顯示標志,為1顯中線1,為0顯中線2distype db 0 ;顯
21、示方式號qibujias db 0ah,0dh,please input qibujiayuan:$,0ah,0dhdanjias db 0ah,0dh,please input danjiayuan/km:$,0ah,0dhchesus db 0ah,0dh,please input chesukm/h:$,0ah,0dhdemand db 0ah,0dh,press key 4 to try again,key 6 to exit:$,0ah,0dh ;輸入提示語句buffervar db 6,?,6 dup(?),$qibujia db , ,0,.,0,$;起步價,單位:元qibuji
22、a2 dw 0 ;起步價(數(shù)值),單位:角danjia db , ,0,.,0,$;單價,單位:元danjia2 dw 0 ;單價(數(shù)值),單位:角chesu db , ,0,.,0,$;車速chesu2 db 0 ;將車速換到m/(1/100)s尺度chesu3 dw 0 ;車速(數(shù)值),單位:bm/hzongjia db , ,0,.,0,$;總價licheng db , ,0,.,0,$;里程licheng2 dd 0 ;保存里程的二進制值,單位m licheng3 dw 0 ;保存里程,0.1km為基本單位 licheng4 dw 10 ;初值10是起步里程,并作每次里程比較的暫存器f
23、lagpoint db 0 ;輸入小數(shù)點標志;.字模表charptr dw 30h,30h,03, 40h,30h,03, 50h,30h,03;起步價 dw 30h,40h,03, 40h,40h,03 ;單價 dw 30h,50h,03, 40h,50h,03 ;車速 dw 0b0h,30h,03, 0c0h,30h,03 ;總價 dw 0b0h,40h,03, 0c0h,40h,03 ;里程charptr2: dw 0b0h,09bh,03 ;小車車體 ;每三個數(shù)據(jù)一組,分別為待顯示字模起始橫縱坐標,顏色 dw 0ffffh ;顯示結束標志 buffer1 dw 0eh,8,0fh,8,
24、 7,9,8,9,9,9,0ah,9,0bh,9,0ch,9,0dh,9,3,0ah,4,0ah dw 5,0ah,6,0ah, 2,0bh,0,0ch,1,0ch, 0,0dh,1,0dh, 1,0eh, 2,0fh dw 3,0fh,4,0fh,5,0fh,6,0fh,7,0fh,8,0fh,9,0fh,0ah,0fh,0bh,0fh dw 0ch,0fh,0dh,0fh,0eh,0fh,0fh,0fh ;一區(qū) dw 1bh,2,1ch,2,1dh,2,1eh,2,1fh,2, 1bh,3,1fh,3, 13h,4,14h,4,15h dw 4,16h,4,17h,4,18h,4,19h,
25、4,1ah,4,1bh,4,1ch,4,1dh,4,1eh,4,1fh,4 dw 12h,5, 11h,6, 10h,7 ;二區(qū) dw 15h,0ch,16h,0ch,17h,0ch, 14h,0dh, 18h,0dh, 13h,0eh,19h,0eh dw 10h,0fh,11h,0fh,12h,0fh,1ah,0fh,1bh,0fh,1ch,0fh,1dh,0fh,1eh,0fh dw 1fh,0fh, 16h,10h ;三區(qū) dw 20h,4,21h,4,22h,4,23h,4,24h,4,25h,4,26h,4,27h,4,28h,4,29h,4,2ah dw 4,2bh,4,2ch,
26、4,2dh,4,2eh,4,2fh,4 ;四區(qū) dw 2ah,0ch,2bh,0ch,2ch,0ch, 29h,0dh,2dh,0dh, 28h,0eh,2eh,0eh dw 20h,0fh,21h,0fh,22h,0fh,23h,0fh,24h,0fh,25h,0fh,26h,0fh,27h dw 0fh,2fh,0fh, 2bh,10h ;五區(qū) dw 30h,4, 31h,5,32h,5, 33h,6,34h,6, 35h,7,36h,7 ;六區(qū) dw 37h,8,38h,8,39h,8,3ah,8, 3bh,9, 3ch,0ah, 3ch,0bh, 3dh,0ch dw 3dh,0dh,
27、3eh,0dh,3fh,0dh,3dh,0eh,3eh,0eh,3fh,0eh, 30h,0fh,31h,0fh dw 32h,0fh,33h,0fh,34h,0fh,35h,0fh,36h,0fh,37h,0fh,38h,0fh,39h,0fh dw 3ah,0fh,3bh,0fh,3ch,0fh,3dh,0fh ;七區(qū) dw 0ffh,0ffh ;小車車體的字模 buffer2 dw 5,2,5,3,5,4,5,5,3,6,4,6,5,6,6,6,10,6,11,6,5,7,11,7,5,8,11,8,2,9 dw 3,9,4,9,5,9,6,9,7,9,9,9,10,9,5,10,9,1
28、0,12,10,3,11,5,11,6,11,7 dw 11,9,11,10,11,11,11,3,12,4,12,5,12,3,13,6,13,7,13,14,13,2,14,8 dw 14,9,14,10,14,11,14,12,14,13,14 ;起 dw 0ffh,0ffh buffer3 dw 8,2,8,3,8,4,5,5,8,5,9,5,10,5,11,5,5,6,8,6,5,7,8,7,11,7,12,7,13 dw 7,5,8,7,8,8,8,9,8,10,8,4,9,5,9,6,9,8,9,11,9,2,10,3,10,6,10,8 dw 10,11,10,5,11,8,1
29、1,10,11,9,12,8,13,7,14,6,15 dw 0ffh,0ffh ;步buffer4 dw 9,2,5,3,9,3,5,4,9,4,4,5,8,5,3,6,7,6,9,6,10,6,2,7,4,7,6,7,7,7 dw 10,7,11,7,12,7,4,8,5,8,7,8,10,8,13,8,4,9,7,9,10,9,4,10,7,10,10 dw 10,4,11,7,11,10,11,4,12,6,12,10,12,4,13,10,13 dw 10,14,10,15 ;價的字模,以0ffh結束 dw 0ffh,0ffh buffer5 dw 11,1,5,2,11,2,6,3
30、,10,3,7,4,9,4,5,5,6,5,7,5,8,5,9,5,10,5,11,5,5 dw 6,8,6,11,6,5,7,7,7,8,7,9,7,11,7,5,8,8,8,11,8,6,9,7,9,8,9,9,9 dw 10,9,8,10,7,11,8,11,9,11,10,11,3,12,4,12,5,12,6,12,8,12,11,12 dw 12,12,13,12,14,12,8,13,8,15,8,14 dw 0ffh,0ffh ;單 buffer6 dw 8,1,8,2,8,3,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,7,5,6,6,8,6,5,7,
31、8 dw 7,5,8,6,8,7,8,8,8,9,8,10,8,8,9,8,10,10,10,11,10,12,10,13,10,5 dw 11,6,11,7,11,8,11,9,11,3,12,4,12,8,12,8,13,8,14,8,15 dw 0ffh,0ffh ;車 buffer7 dw 9,2,9,3,3,4,7,4,8,4,9,4,10,4,11,4,4,5,9,5,4,6,7,6,8,6,9,6,10,6 dw 11,6,4,7,6,7,9,7,12,7,4,8,7,8,8,8,9,8,10,8,11,8,4,9,8,9,9,9 dw 11,9,4,10,7,10,9,10,1
32、1,10,4,11,7,11,9,11,11,11,3,12,4,12,5,12 dw 6,12,7,13,8,13,9,13,10,13,11,14,12,14,13,14,14,14 dw 0ffh,0ffh ;速buffer8 dw 10,2,4,3,10,3,5,4,9,4,6,5,8,5,5,6,6,6,7,6,8,6,9,6,10,6,5,7,10 dw 7,5,8,9,8,6,9,7,9,8,9,11,10,12,10,2,11,4,11,7,11,8,11,9,11,13 dw 11,2,12,5,12,6,13,12,13,7,14,8,14,9,14,10,14,11,14
33、,12,14,13,14 dw 0ffh,0ffh ;總buffer9 dw 5,3,6,3,7,3,8,3,9,3,10,3,11,3,4,4,8,4,12,4,4,5,8,5,12,5,4,6,6 dw 6,7,6,8,6,9,6,10,6,12,6,4,7,8,7,12,7,5,8,6,8,7,8,8,8,9,8,10,8 dw 11,8,8,9,8,10,6,11,7,11,8,11,9,11,10,11,8,12,8 dw 13,3,14,4,14,5,14,6,14,7,14,8,14,9,14,10,14,11,14,12,14,13,14 dw 0ffh,0ffh ;里 buf
34、fer10 dw 6,1,6,2,5,3,4,4,9,4,10,4,11,4,12,4,13,4,2,5,3,5,5,5,9,5,13,5,5 dw 6,9,6,13,6,2,7,3,7,4,7,5,7,6,7,7,7,9,7,10,7,11,7,12,7,4,8,5,8 dw 3,9,5,9,6,9,9,9,10,9,11,9,12,9,13,9,2,10,5,10,7,10,11,10,2,11 dw 5,11,11,11,5,12,10,12,11,12,12,12,5,13,11,13,5,14,8,14,9,14,10 dw 14,11,14,12,14,13,14,14,14,5,
35、15 dw 0ffh,0ffh ;程;.文本字符表buffertxt1 db 5,5,218, 5,34,170, 12,5,192,12,34,217 ;邊框四角 db 7,12,58,9,12,58,11,12,58, 7,26,58,9,26,58 ;: db 7,18,157, 9,18,157,9,19,47,9,20,107,9,21,109;¥,¥/km db 11,18,107,11,19,109,11,20,47,11,21,104 ;km/h db 7,32,157, 9,32,107,9,33,109 ;¥/km db 0ffh,0ffh ;0ffh為文本結束標志buff
36、erflag db 11,28,17,1,11,30,14,1, 11,32,254,2 ;運行,暫停,停止() ;依次為行值,列值,字符值,顏色 db 0ffh,0ffh ;0ffh為文本結束標志 liner db 196,89h,5,6,34, 196,89h,12,6,34, 196,8ah,19,0,40, 196,8ah,22,0,40 ;依次為字符值,顏色,行值,起始與終止列值 db 0ffh,0ffh ;0ffh為結束標志linel db 179,89h,5,6,12, 179,89h,34,6,12 ;依次為字符值,顏色,列值,起始與終止行值 db 0ffh,0ffhcolor
37、txt db 10001001b;文本字符顏色10001000b黑色(不可見)10001001b青色10001010b品紅10001011b白色disdataptr db 7,12,03, 9,12,03, 11,12,02, 7,26,02, 9,26,02 ;數(shù)據(jù)起步價,單價,車速,總價,里程顯示屬性,分別為行值,列值,顏色bufferzx1 db 21,1,196,21,2,32,21,3,196,21,4,32,21,5,196,21,6,32,21,7,196,21,8,32,21,9,196 db 21,10,32,21,11,196,21,12,32,21,13,196,21,1
38、4,32,21,15,196,21,16,32,21,17,196 db 21,18,32,21,19,196,21,20,32,21,21,196,21,22,32,21,23,196,21,24,32,21,25,196 db 21,26,32,21,27,196,21,28,32,21,29,196,21,30,32,21,31,196,21,32,32,21,33,196 db 21,34,32,21,35,196,21,36,32,21,37,196,21,38,32,21,39,196;路中線 ;每三個為一組數(shù)據(jù),依次為文本字符的行(從上到下)、列(從左到右)、字符值 db 0ff
39、h,0ffh ;0ffh為文本結束標志bufferzx2 db 21,0,196,21,1,32,21,2,196,21,3,32,21,4,196,21,5,32,21,6,196,21,7,32,21,8,196,21,9,32 db 21,10,196,21,11,32,21,12,196,21,13,32,21,14,196,21,15,32,21,16,196,21,17,32 db 21,18,196,21,19,32,21,20,196,21,21,32,21,22,196,21,23,32,21,24,196,21,25,32 db 21,26,196,21,27,32,21,
40、28,196,21,29,32,21,30,196,21,31,32,21,32,196,21,33,32 db 21,34,196,21,35,32,21,36,196,21,37,32,21,38,196;路中線 ;每三個為一組數(shù)據(jù),依次為文本字符的行(從上到下)、列(從左到右)、字符值 db 0ffh,0ffh ;0ffh為文本結束標志 ;.音樂頻率及節(jié)拍表frequency1 dw 330,330,349,392,392,349, 330,294,262,262,294,330,330,294,294,-1;歡樂頌(前段) timetable1 dw 8 dup(25) dw 4 du
41、p(25),50,2 dup(25) frequency2 dw 5 dup(262),293,293,329,294, 262,262,523,494,440,392,392 dw 3 dup(440),392,349,349,392,392,440,262, 3 dup(293),262,294 dw 440,329,440,392,392,-1timetable2 dw 25,12,13,25,25,25,12,13,50,25,25,50,25,12,13,50 dw 25,12,13,12,13,25,25,12,13,50,25,12,13,25,25 dw 12,13,25,50
42、,75 ;對面 frequency3 dw 330,330,349,392,392,349, 330,294,262,262,294,330,294,262,262,-1;歡樂頌(后段) timetable3 dw 8 dup(25) dw 4 dup(25),50,2 dup(25) DATAS ENDS;.;.STACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDS;:;.主程序.;_CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX call chushihua;完成一
43、系列初始化 restart: call getstart ;車輛啟動程序lop: daconver chesu,chesu3 mov ax,chesu3 cmp ax,0 jz next1 ;車速為0,動畫停止 cmp ax,3000 jbe next2 mov ax,3000;車速大于300km/h,限速處理 mov chesu3,ax call speedconvernext2: mov al,flagdis cmp al,0 jnz nextlop call diszhongxian2;顯示路中線2 mov al,1 mov flagdis,alnextlop: call diszhon
44、gxian1;顯示路中線1 mov al,0 mov flagdis,al next1: call varyspeed ;鍵盤輸入增減速度 call delay0 call chulilicheng;處理里程 call jizongjia ;計算并顯示總價 call checkkey ;檢鍵盤命令 jmp lop ;. exit: MOV AH,4CH INT 21H;:;-;*鍵盤輸入停止處理*stop proc lea si,bufferflag mov al,1 mov si+3,al mov al,1 mov si+7,al mov al,2 mov si+11,al call dis
45、flag ;修改運行,暫停,停止()標志并顯示 call movecar music frequency3,timetable3 ;播放結束音樂 call clearscreen ;清屏 setdistype distype lea dx,demand ;顯示輸入提示信息 mov ah,09h int 21hlpstop: in al,60h cmp al,4bh jnz nextstop lea si,licheng+4 mov ax,0 mov dx,0 mov bx,10 div bx add dl,30h mov si,dl ;存小數(shù)位 dec si dec si mov dx,0 d
46、iv bx add dl,30h mov si,dl ;存?zhèn)€位 dec si mov dx,0 div bx cmp ax,0 jz nexxtsc1 add dl,30h mov si,dl dec si jmp nexxtsc3 nexxtsc1: cmp dl,0 jnz nexxtsc2 mov dl, mov si,dl dec si mov si,dl jmp exxitscnexxtsc2: add dl,30h mov si,dl mov dl, dec si mov si,dl jmp exxitsc ;存十位 nexxtsc3: add al,30h mov si,al ;存百位exxitsc: call chushi2 jmp far ptr restart ;小鍵盤4重啟nextstop: cmp al,4dh ;小鍵盤6結束程序 jnz lpstop jmp far ptr exit retstop endp;.chushi2 proc lea si,zongjia+4 mov ax,0 mov dx,0 mov bx,10 div bx add dl,30h mov si,dl
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。