微機(jī)實(shí)驗(yàn)_期末設(shè)計(jì)_多功能音樂鬧鐘_第1頁
微機(jī)實(shí)驗(yàn)_期末設(shè)計(jì)_多功能音樂鬧鐘_第2頁
微機(jī)實(shí)驗(yàn)_期末設(shè)計(jì)_多功能音樂鬧鐘_第3頁
微機(jī)實(shí)驗(yàn)_期末設(shè)計(jì)_多功能音樂鬧鐘_第4頁
微機(jī)實(shí)驗(yàn)_期末設(shè)計(jì)_多功能音樂鬧鐘_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、中山大學(xué) 微機(jī)原理與應(yīng)用試驗(yàn)學(xué) 生 實(shí) 驗(yàn) 報(bào) 告實(shí) 驗(yàn) 名 稱 期末設(shè)計(jì) 多功能音樂鬧鐘 院 系 信息科學(xué)與技術(shù)學(xué)院 10自動化 學(xué) 生 姓 名 學(xué) 號 指 導(dǎo) 教 師 實(shí)驗(yàn)起止時間 2012年12月12日至2012年12月23日 1、 音樂鬧鐘已經(jīng)實(shí)現(xiàn)的功能1. 輸入模塊:鍵盤輸入:按照 ”時:分:秒” 的格式輸入現(xiàn)在時間和設(shè)定鬧鐘時間,如果輸入的字符不符合通用的時間格式的話,則無法輸入。光標(biāo)會回到原位,要求重新輸入。比如:輸入”23:57:60”,由于秒數(shù)據(jù)只有”0059”,則在輸入到”6”的時候,光標(biāo)會回到”2”那里,要求重新輸入。同樣,非數(shù)字的字符也無法輸入。2. 正常顯示模塊:(1

2、).七段數(shù)碼管:顯示現(xiàn)在的時間,可以通過邏輯開關(guān)K5來切換秒顯示或者分顯示。(2).點(diǎn)陣:顯示現(xiàn)在的時間,可以通過邏輯開關(guān)K3來切換成滾動顯示模式或者翻頁顯示模式,通過邏輯開關(guān)K6來切換點(diǎn)陣的顏色(紅色或黃色),通過ADC0809從電位器0讀入數(shù)據(jù)來控制點(diǎn)陣滾動顯示模式下的滾動速度或者翻頁模式下的翻頁。(3).七段數(shù)碼管和點(diǎn)陣是同時工作的。(4).更改設(shè)定的鬧鐘時間:按下鍵盤的”R”或”r”鍵(”reset”),即可更改鬧鐘時間的設(shè)定值。在此期間七段數(shù)碼管和點(diǎn)陣雖然不顯示,但更改完成后程序會把更改時所耗的時間自動補(bǔ)給原來的時間,使得在更改前后,可以按照確定的正常時間運(yùn)行。(5).退出程序:按下

3、鍵盤的”Q”或”q”鍵(“quit”),既可以退出程序。除了上述按鍵之外,本程序在正常運(yùn)行時候不會對其他按鍵有響應(yīng)。3. 鬧鐘模塊:(1).音樂播放:當(dāng)設(shè)定時間到了的時候,會播放歌曲明天會更好??梢酝ㄟ^ADC0809從電位器1讀入數(shù)據(jù)來控制音樂播放速度的快慢。(2).走馬燈:當(dāng)音樂播放的同時,LED燈會以走馬燈的形式顯示,走馬燈隨著音樂的節(jié)奏而改變。(3).值得一提的是,在鬧鐘功能運(yùn)行的時候,七段數(shù)碼管和點(diǎn)陣還保持正常顯示功能不變。音樂播放速度的調(diào)節(jié)與點(diǎn)陣滾動速度的調(diào)節(jié)之間是相互獨(dú)立、互不干擾的。(4).鬧鐘開關(guān):邏輯開關(guān)K7控制鬧鐘的開關(guān)。鬧鐘功能運(yùn)行時,關(guān)閉鬧鐘可以使程序重新回到正常顯示狀

4、態(tài)。如果鬧鐘沒有打開,即使是到了設(shè)定時間,鬧鐘功能也不會運(yùn)行。(5).貪睡功能:為了使得設(shè)計(jì)更為人性化,故特定通過中斷方式設(shè)置了一個30s的貪睡功能。當(dāng)進(jìn)入鬧鐘狀態(tài)的時候,按下單脈沖按鍵,會使得現(xiàn)在的鬧鐘狀態(tài)暫時結(jié)束。從按下單脈沖按鍵時算起,30s之后鬧鐘狀態(tài)會重新啟動。呵呵(6).屏幕顯示:當(dāng)設(shè)定的時間一到,屏幕上就會自動顯示”time is up! it is xx : xx : xx now!”,可以顯示進(jìn)入鬧鐘時刻的時間。二、使用器件和它們的作用可編程并行接口8255(方式0):A口輸出七段數(shù)碼管的段碼;C口輸出到8個LED燈??删幊潭〞r/計(jì)數(shù)器8253:計(jì)數(shù)器0(方式3)和1(方式0

5、)用來實(shí)現(xiàn)1s定時;計(jì)數(shù)器2(方式3)輸出一定頻率的方波,作為音符輸入到揚(yáng)聲器。簡單并行接口74LS244和邏輯電平開關(guān):讀入各種控制信號,包括1s定時信息。簡單并行接口74LS273:2、5端口輸出七段數(shù)碼管位碼,6、9端口控制揚(yáng)聲器通斷。模/數(shù)轉(zhuǎn)換器ADC0809和電位器:IN0讀入點(diǎn)陣滾動速度或翻頁狀態(tài)控制信息,IN1讀入音樂播放速度控制信息。七段數(shù)碼管:實(shí)時顯示現(xiàn)在的時間,可以分、秒切換。點(diǎn)陣:實(shí)時顯示現(xiàn)在的時間,格式為 ”時:分:秒”??梢郧袚Q成滾動顯示模式和翻頁模式,可以改變顏色。揚(yáng)聲器:鬧鐘狀態(tài)時播放音樂。8個LED燈:作為走馬燈顯示。三、電路連接圖(本人用visio畫的,還算比

6、較清楚。電路的連接和各部分功能都有說明。)四、設(shè)計(jì)過程簡述期末的設(shè)計(jì)對我來說,是檢測我平時積累的一次很好的機(jī)會。在以往的實(shí)驗(yàn)中,我都比較重視以子程序的形式來實(shí)現(xiàn)各個模塊和功能。在這次的作品設(shè)計(jì)過程中,就用到了一些現(xiàn)成的程序模塊,比如:七段數(shù)碼管、點(diǎn)陣滾動顯示子程序、音樂播放子程序等。平時的積累使我不用再在這些地方浪費(fèi)時間,可以把時間真正用到本次設(shè)計(jì)的難點(diǎn)上。所以,積累很重要!寫程序,還是一步一步來吧,下面是我整個工作的流程圖:五、程序流程解析1.主程序流程圖:2.輸入模塊流程圖:3.正常顯示模塊流程圖:4.鬧鐘狀態(tài)模塊流程圖:六、程序代碼和一些解析、實(shí)驗(yàn)現(xiàn)象和一些感想實(shí)驗(yàn) 音樂鬧鐘:1. 輸入

7、功能:不規(guī)范的數(shù)據(jù)無法輸入。2. 時鐘功能:七段數(shù)碼管上分、秒顯示切換; 點(diǎn)陣同時顯示 "時:分:秒"數(shù)據(jù),滾動或翻頁顯示、改變顏色、滾動速度控制; 可以重新設(shè)定鬧鐘時間,在此期間時間依然計(jì)算。3. 鬧鐘功能: 時鐘功能始終保持不變; 鬧鐘時間到,播放音樂、顯示走馬燈、在屏幕上顯示設(shè)定的鬧鐘時間; 音樂播放速度控制,與時鐘功能互不干擾; 鬧鐘開關(guān)和30s貪睡功能。實(shí)驗(yàn)代碼和理解 io8253_0 equ 280h ;理解:8253地址。 io8253_1 equ 281h io8253_2 equ 282h io8253_mode equ 283h io8255_a equ

8、 288h ;理解:8255地址。 io8255_c equ 28ah io8255_mode equ 28bh ls244 equ 290h ;理解:74ls244地址。 ls273 equ 298h ;理解:74ls273地址。 adc0809_0 equ 2a0h ;理解:ADC0809地址。 adc0809_1 equ 2a1h proth equ 2a8h ;理解:行片選地址。 protlr equ 2b0h ;理解:紅色列片選地址。 protly equ 2b8h ;理解:黃色列片選地址。 data segment now_hour dw 0 ;現(xiàn)在的時分秒數(shù)據(jù)。 now_minu

9、te dw 0 now_second dw 0 now_hour_BCD dw 0 ;現(xiàn)在的時分秒數(shù)據(jù)對應(yīng)的BCD碼。 now_minute_BCD dw 0 now_second_BCD dw 0 alarm_hour dw 0 ;鬧鐘的時分秒數(shù)據(jù)。 alarm_minute dw 0 alarm_second dw 0 temporary_input_data dw 0 ;暫存輸入數(shù)據(jù)。 temporary_input_data_BCD dw 0 input_flags_1 db 0 ;輸入標(biāo)志位。 input_flags_2 db 0 ;輸入標(biāo)志位。 if_time_up db 0 ;鬧

10、鐘時間是否到判斷標(biāo)志位。 if_reinput_alarm_time db 0 ;記錄是否重新輸入鬧鐘時間。 hundred db 0 ;記錄并存放系統(tǒng)時間數(shù)據(jù),作為差值之用。 ten db 0 unit db 0 carry db 0 ;記錄進(jìn)位。 if_time_already_updata db 0alarm_time_input_message1 db '<set the time now according to ',22h,'hour:minute:second',22h,'> ',' : : ',8 du

11、p(08h),'$' ;輸入設(shè)置現(xiàn)在時間的信息。alarm_time_input_message2 db '<set the alarm time according to ',22h,'hour:minute:second',22h,'> ',' : : ',8 dup(08h),'$' ;輸入設(shè)置鬧鐘時間的信息。alarm_time_input_message3 db 0dh,08h,0dh,'$' ;這個數(shù)據(jù)有點(diǎn)小技巧,分別為回車,退格,再回車,這樣就使得重新輸入時

12、光標(biāo)會回到句首,避免了輸入不規(guī)范時輸入信息太多。 alarm_time_show_message4_1 db 'time is up! it is ','$' alarm_time_show_message4_2 db ' now!',0ah,0dh,'$' clock_open_or_close db 0 ;理解:判斷鬧鐘的開關(guān)狀態(tài)。 which_time_dot_matrix_show dw 0 ;理解:記錄點(diǎn)陣顯示8列的次數(shù),此數(shù)據(jù)用來使得點(diǎn)陣滾動速度和音樂播放速度互不干擾。 digital_tude_or_dot_matr

13、ix db 0 ;理解:判斷是顯示七段數(shù)碼管還是顯示點(diǎn)陣。 dot_matrix_roll_or_page db 0 ;理解:判斷點(diǎn)陣是滾動顯示還是翻頁顯示。 minute_or_second dw 0 ;理解:使七段數(shù)碼管顯示分和秒切換的存儲單元。 led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;七段數(shù)碼管段碼 bz dw 0 ;位碼red_or_yellow dw 0 ;理解:使紅燈和黃燈切換的存儲單元,用于存放紅色列片選地址或黃色列片選地址。static_display_time dw 0bh ;理解:靜態(tài)顯示次數(shù),即每8列顯示次數(shù)。這個數(shù)

14、據(jù)很重要,將決定數(shù)據(jù)滾動的快慢。 music_open_or_close db 0 ;理解:使喇叭開關(guān)切換的存儲單元。 dot_matrix_static_display db 0 ;理解:這個數(shù)據(jù)為點(diǎn)陣顯示8列的起始偏移地址。dot_matrix_number db 0ffh,081h,0ffh,00h,041h,0ffh,001h,00h,09fh,091h,0f1h,00h,091h,091h,0ffh,00h,0f0h,010h,0ffh,00h,0f1h,091h,09fh,00h,0ffh,091h,09fh,00h,080h,080h,0ffh,00h,0ffh,091h,0ff

15、h,00h,0f1h,091h,0ffh ;點(diǎn)陣顯示的時分秒數(shù)據(jù)對應(yīng)的數(shù)碼 dot_matrix_number_show_time db 35, 7 dup(00h) db 3 dup(0ffh),00h,3 dup(0ffh), 00h,24h,00h, 3 dup(0ffh),00h,3 dup(0ffh), 00h,24h,00h, 3 dup(0ffh),00h,3 dup(0ffh) db 7 dup(00h) ;點(diǎn)陣顯示的數(shù)據(jù)存放區(qū)。 music_delay_time_control dw 0 ;理解:這個數(shù)據(jù)很重要,將決定音樂播放速度的快慢。 music_table dw 262

16、, 294, 330, 349, 392, 440, 494 ,0ffffh,0ffffh,0ffffh;最低音 dw 523, 587, 659, 698, 784, 880, 988 ,0ffffh,0ffffh,0ffffh;較低音 dw 1047,1175,1329,1397,1568,1760,1976 ,0ffffh,0ffffh,0ffffh;較高音 dw 2093,2349,2637,2794,3136,3520,3951 ,0ffffh,0ffffh,0ffffh;最高音tomorrow_will_be_better db 13,14,15,15,15,15,15,16,15

17、,14,14,10,13,14,15,15,13,12,11,12,12,10,13,12,11,11,11,11,21,21,17,17,21,17,16,15,10,16,15,14,14,15,16,15,15,10 ;輕輕敲醒沉睡的心靈,慢慢張開你的眼睛,看看忙碌的世界是否依然,孤獨(dú)的轉(zhuǎn)個不停。 db 21,21,16,15,15,16,15,15,10,16,16,15,11,12,13,10,12,11,11,11,13,13,13,12,12,12,10,12,22,22,17,16,15,10 ;春風(fēng)不解風(fēng)情,吹動少年的心,讓昨日臉上的淚痕,隨記憶風(fēng)干了。 db 10,13,1

18、4,15,15,15,15,15,16,15,14,14,10,13,14,15,15,13,12,11,12,12,10,13,12,11,11,11,11,21,21,17,17,21,17,16,15,10,16,15,14,14,15,16,15,15,10 db 21,21,16,15,15,16,15,15,10,16,16,15,11,12,13,10,12,11,11,11,13,13,13,12,12,12,10,16,15,13,12,05,13,12,11,10;。第二段,與上面的音符基本一樣。 db 16,16,16,17,21,17,16,17,17,21,22,17

19、,10,21,17,16,15,15,15,11,12,13,10,13,17,17,13,13,22,22,21,17,16,16,10 ;唱出你的熱情伸出你的雙手,然我擁抱著你的夢,讓我擁有你真心的面孔。 db 16,16,16,17,21,17,16,17,17,21,22,17,17,23,22,21,21,21,10,17,16,16,16,16,15,15,12,13,11,10 ,0ffh;讓我們的笑容,充滿著青春的驕傲,讓我們期待明天會更好。music_time db 05,05,08,08,05,08,05,01,05,01,08,08,05,05,08,08,05,05,0

20、8,01,08,08,05,05,05,08,05,05,01,08,05,01,05,05,05,08,08,05,05,08,05,05,01,05,08,08 ;音樂每個音符對應(yīng)的節(jié)拍。 db 05,08,05,05,01,05,01,08,08,08,08,05,08,05,08,08,08,08, 05,05,08,05,01,05,01,08,08,05,08,08,05,08,08,08 db 08,05,05,08,08,05,08,05,01,05,01,08,08,05,05,08,08,05, 05,08,01,08,08,05,05,05,08,05,05,01,08,

21、05,01,05,05,05,08,08,05,05,08,05,05,01,05,08,08 db 05,08,05,05,01,05,01,08,08,08,08,05,08,05,08,08,08,08, 05,05,08,05,01,05,01,08,08,05,08,05,05,05,01,05,08,08 db 05,05,05,05,01,05,05,05,08,05,08,08,08,05,05,05,01,05, 05,05,05,08,08,08,08,05,08,05,08,08,05,01,05,08,08 db 05,05,05,05,01,08,05,05,08,0

22、5,08,05,05,05,01,05,05,08, 08,05,08,08,05,08,08,08,05,08,08,12 count db ? ;理解:這個數(shù)據(jù)用來記錄播放到第幾個音樂音符。 figure_lamp db 1+160, 0fch,0f9h,0f3h,0e7h,0cfh,09fh,03fh,07fh,0ffh,000h,0ffh,000h,0ffh,000h,0ffh,000h ;花樣燈。 db 0e7h,0dbh,0bdh,07eh,0bdh,0dbh,0e7h,0ffh,0e7h,0c3h,081h,000h,081h,0c3h,0e7h,0ffh db 0aah,055

23、h,018h,0ffh,0f0h,00fh,000h,0ffh,0f8h,0f1h,0e3h,0c7h,08fh,01fh,03fh,07fh db 07fh,03fh,01fh,08fh,0c7h,0e3h,0f1h,0f8h,0ffh,000h,000h,0ffh,0ffh,00fh,0f0h,0ffh db 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,07fh,0ffh,000h,0ffh,000h,0ffh,000h,0ffh,000h db 0ffh,000h,0ffh,000h,0ffh,000h,0ffh,000h,07fh,0bfh,0dfh,0efh

24、,0f7h,0fbh,0fdh,0feh db 0feh,0fch,0f8h,0f0h,0e0h,0c0h,080h,000h,0ffh,000h,0ffh,000h,0ffh,000h,0ffh,000h db 07eh,0deh,0f6h,0fch,0bch,0ech,0f8h,078h,0d8h,0f0h,0b0h,0e0h,060h,0c0h,080h,000h db 040h,010h,004h,001h,081h,021h,009h,003h,043h,013h,007h,087h,027h,00fh,04fh,01fh db 09fh,03fh,07fh,0ffh,0bfh,0e

25、fh,0fbh,0feh,07eh,0deh,0f6h,0fch,0bch,0ech,0f8h,078h figure_count db ? ;理解:這個數(shù)據(jù)用來記錄點(diǎn)亮了第幾個狀態(tài)的走馬燈。 data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,io8255_mode mov al,80h out dx,al;=;=;= 輸入模塊 =;=;=;input_module:input_now_time: call input_now_hour_minute_second ;輸入現(xiàn)在時間數(shù)據(jù)。

26、 call output_enter ;回車換行。input_alarm_time: call input_alarm_hour_minute_second ;輸入設(shè)定鬧鐘時間數(shù)據(jù)。 call output_enter ;回車換行。 mov if_time_up,00h ;這個if_time_up數(shù)據(jù)在正常顯示狀態(tài)里起到判斷是否應(yīng)該進(jìn)入到鬧鐘模式的作用。 mov ax,now_hour ;之所以這里做判斷,是為了相應(yīng)輸入現(xiàn)在時間數(shù)據(jù)和輸入設(shè)定鬧鐘時間數(shù)據(jù)相同的情況。 cmp alarm_hour,ax jnz jmp_display_module mov if_time_up,01h ;若no

27、w和alarm時數(shù)據(jù)相同則if_time_up=01h。 mov ax,now_minute cmp alarm_minute,ax jnz jmp_display_module mov if_time_up,02h ;若now和alarm分?jǐn)?shù)據(jù)相同則if_time_up=01h。 mov ax,now_second cmp alarm_second,ax jnz jmp_display_module mov if_time_up,03h ;若now和alarm秒數(shù)據(jù)相同則if_time_up=01h。 cmp if_reinput_alarm_time,02h ;這個判斷是判斷重新設(shè)定鬧鐘時

28、間時,是否對這段時間差進(jìn)行補(bǔ)償。jz jmp_re_display_module ;如果已經(jīng)補(bǔ)償了,則重新進(jìn)入正常顯示狀態(tài)模塊;否則,則利用讀取系統(tǒng)時間給予補(bǔ)償。jmp_display_module: jmp display_module jmp_re_display_module: call adjust_now_time_accroding_to_system_time jmp re_display_module;=;= 實(shí)現(xiàn)輸入與存儲功能的子程序 =;=;* 讀進(jìn)設(shè)置時分秒數(shù)據(jù)子程序(輸入傳遞參數(shù)為input_count,輸出傳遞參數(shù)為temporary_input_data、tempo

29、rary_input_data_BCD) *;input_hour_minute_second_unit proc near jmp inputinput_error: mov dx,offset alarm_time_input_message3 ;顯示提示信息 mov ah,09h int 21h cmp input_flags_1,01h jnz input_alarm_time jmp input_now_timeinput: mov ah,01h ;理解:輸入十位數(shù)字,不是"10到59"會退出程序。 int 21h ;判斷個位并存儲其16進(jìn)制數(shù) cmp input

30、_flags_2,01h jz input_judge_0_2input_judge_0_5: cmp al,'0' jl input_error cmp al,'5' jg input_error jmp input_next_1input_judge_0_2: cmp al,'0' jl input_error cmp al,'2' jg input_error input_next_1: sub al,30h ;將所得字符的ASCII碼減30H cmp input_flags_2,01h jnz input_next_3 c

31、mp al,02h jz input_next_3input_next_4: mov input_flags_2,02hinput_next_3: and ah,00h mov temporary_input_data,ax mov ax,10 mul temporary_input_data mov temporary_input_data,ax mov ah,01h ;理解:輸入個位數(shù)字,不是"10到59"會退出程序。 int 21h ;判斷十位并存儲其16進(jìn)制數(shù) cmp input_flags_2,01h jz input_judge_0_4input_judge_0

32、_9: cmp al,'0' jl input_error cmp al,'9' jg input_error jmp input_next_2input_judge_0_4: cmp al,'0' jl input_error cmp al,'3' jg input_error input_next_2: sub al,30h ;將所得字符的ASCII碼減30H add temporary_input_data,ax sub temporary_input_data,0100h jmp input_exit input_exit

33、: mov ax,temporary_input_data aam mov temporary_input_data_BCD,axretinput_hour_minute_second_unit endp;*;=;* 讀進(jìn)設(shè)置現(xiàn)在時分秒數(shù)據(jù)子程序(無輸入傳遞參數(shù),輸出傳遞參數(shù)為now等) *;input_now_hour_minute_second proc near mov dx,offset alarm_time_input_message1 ;顯示提示信息 mov ah,09h int 21h mov input_flags_1,01h ;輸入現(xiàn)在時間。 mov input_flags_

34、2,01h call input_hour_minute_second_unit mov ax,temporary_input_data mov now_hour,ax mov ax,temporary_input_data_BCD mov now_hour_BCD,ax mov bx,08;點(diǎn)陣時輸入。 call dot_matrix_time_data_update mov al,':' call output_a_ASCII mov input_flags_2,02h call input_hour_minute_second_unit mov ax,temporary_

35、input_data mov now_minute,ax mov ax,temporary_input_data_BCD mov now_minute_BCD,ax mov bx,18;點(diǎn)陣分輸入。 call dot_matrix_time_data_update mov al,':' call output_a_ASCII call input_hour_minute_second_unit mov ax,temporary_input_data mov now_second,ax mov ax,temporary_input_data_BCD mov now_second_

36、BCD,ax mov bx,28;點(diǎn)陣秒輸入。 call dot_matrix_time_data_update mov if_reinput_alarm_time,02hretinput_now_hour_minute_second endp;*;=;* 讀進(jìn)設(shè)置鬧鐘時分秒數(shù)據(jù)子程序(無輸入傳遞參數(shù),輸出傳遞參數(shù)為alarm等) *;input_alarm_hour_minute_second proc near mov dx,offset alarm_time_input_message2 ;顯示提示信息 mov ah,09h int 21h mov input_flags_1,02h ;

37、輸入鬧鐘時間。 mov input_flags_2,01h call input_hour_minute_second_unit mov ax,temporary_input_data mov alarm_hour,ax mov al,':' call output_a_ASCII mov input_flags_2,02h call input_hour_minute_second_unit mov ax,temporary_input_data mov alarm_minute,ax mov al,':' call output_a_ASCII call i

38、nput_hour_minute_second_unit mov ax,temporary_input_data mov alarm_second,axretinput_alarm_hour_minute_second endp;*;=;* 輸出一個ASCII碼的子程序(輸入傳遞參數(shù)為al,無輸出傳遞參數(shù)) *; mov dl,al ;輸出一個ASCII碼。 mov ah,02h int 21hretoutput_a_ASCII endp;*;=;* 輸出回車換行的子程序(輸入傳遞參數(shù)為al,無輸出傳遞參數(shù)) *;output_enter proc near mov al,0ah call o

39、utput_a_ASCII mov al,0dh call output_a_ASCIIretoutput_enter endp;*;=;* 根據(jù)系統(tǒng)時間調(diào)整現(xiàn)在時間(輸入傳遞參數(shù)為hundred、ten、unit,輸出傳遞參數(shù)為now_time等) *;adjust_now_time_accroding_to_system_time proc near push ax push cx push dx mov ah,2ch int 21h mov carry,00hre_compare_unit: cmp dh,unit jg no_unit_adjust add dh,60 add carr

40、y,01h jmp re_compare_unitno_unit_adjust: sub dh,unit ;得到調(diào)整后的秒差值。 sub cl,carry mov carry,00hre_compare_ten: cmp cl,ten jg no_ten_adjust add cl,60 add carry,01h jmp re_compare_tenno_ten_adjust: sub cl,ten ;得到調(diào)整后的分差值。 sub ch,carry mov carry,00hre_compare_hundred: cmp ch,hundred jg no_hundred_adjust add

41、 ch,24 add carry,01h jmp re_compare_hundredno_hundred_adjust: sub ch,hundred;得到調(diào)整后的時差值。 mov ah,00h mov carry,00h mov al,dh add now_second,axre_compare_now_second: cmp now_second,60 jl no_now_second_adjust sub now_second,60 add carry,01h jmp re_compare_now_secondno_now_second_adjust: ;完成秒數(shù)據(jù)的重置。 mov al,carry s

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論