版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
計時器匯編語言程序設(shè)計1設(shè)計要求1.1初始條件>采用16位微處理器8086CPU以及86系列微型計算機(jī)的指令系統(tǒng);>軟件設(shè)計平臺為多功能微型計算機(jī)實驗軟件MFS中的微機(jī)原理實驗集成環(huán)境MF2KP。1.2設(shè)計任務(wù)>設(shè)計匯編語言程序,實現(xiàn)計時功能,具體功能要求如下:(1) 設(shè)計一個計時器界面,形式為:時:分:秒;(2) 單擊“S”或“s”鍵開始計時,單擊P'或乍”停止計時,單擊“G”或“g”鍵繼續(xù)計時,單擊“C”或“c”鍵清0;(3) 單擊”ESC”鍵退出程序。(2)單擊”ESC”鍵退出程序。根據(jù)功能要求繪制程序流程圖、編寫完整的匯編語言程序并上機(jī)調(diào)試。2總體方案論證2.1方案一利用8155芯片設(shè)計一個具有時、分、秒顯示的電子時鐘,啟動按鍵,數(shù)碼管從初始設(shè)置的時間開始顯示。從設(shè)計要求可知,需要鍵盤掃描部分,時間控制部分,初始值設(shè)置部分,數(shù)碼管顯示部分,延時部分。時間走動部分的實現(xiàn):各個時鐘的個位部分逢十進(jìn)一,秒和分鐘的十位部分是逢六進(jìn)一。當(dāng)時的十位達(dá)到2時,個位為4時,程序跳到清零部分,程序從零開始計時。數(shù)碼管顯示部分的功能是實現(xiàn)時、分、秒的顯示,可以用六個數(shù)碼管從左至右一次顯示時間,采用分配存儲單元的形式,地址從低到高分別顯示秒、分、時。延時部分是對秒的個位進(jìn)行延時,延時中調(diào)用系統(tǒng)時鐘顯示程序,以便連續(xù)不斷地顯示并實現(xiàn)一秒延時的計時功能,從而實現(xiàn)電子時鐘的設(shè)計。2.2方案二利用DOS功能設(shè)計界面顯示時間00:00:00:00,在MFS中的微機(jī)原理實驗集成環(huán)境MF2KP中編寫程序,根據(jù)設(shè)計要求,需要界面設(shè)置,鍵盤按鍵輸入檢測,顯示初值時間,顯示形式,鍵盤控制設(shè)置,時間進(jìn)位處理,設(shè)置中斷頻率,暫停和繼續(xù)計時。通過調(diào)用系統(tǒng)的08h號或者1ch號中斷來進(jìn)行設(shè)置,使其能夠產(chǎn)生100Hz即10ms一次的中斷,同時修改原08號中斷的入口地址,使其每次中斷執(zhí)行一次計時的中斷服務(wù)程序,進(jìn)而動態(tài)顯示時間。2.3方案論證方案一要用到8155芯片和數(shù)碼管,而且計時器是調(diào)用系統(tǒng)時鐘完成的,這種方法必須每秒或者每更短的時間調(diào)用系統(tǒng)時鐘然后進(jìn)行相減操作才能達(dá)到計時的每秒時時顯示動態(tài)時間,雖然理論上可以實現(xiàn)計時功能,但是會比較的麻煩。方案二通過調(diào)用系統(tǒng)的08h號或者1ch號中斷來進(jìn)行設(shè)置,使其能夠產(chǎn)生100Hz即10ms一次的中斷進(jìn)而動態(tài)顯示時間。這種方法不僅簡單易行,而且較方便。而且方案二在DOS環(huán)境下運行的,不需要額外的芯片,所以方案二更好更合適。3程序流程圖3.1主程序流程圖主程序流程圖如圖3-1所示,主程序是用來完成屏幕初始化:清屏和顯示初始界面,同時對鍵盤按鍵輸入檢測和對鍵盤按下的鍵值進(jìn)行判斷,執(zhí)行相應(yīng)鍵值所對應(yīng)的程序,達(dá)到開始、暫停、繼續(xù)、清零、退出的功能。進(jìn)而動態(tài)顯示和控制時間。3.2中斷服務(wù)子程序流程圖中斷服務(wù)子程序流程圖如圖3-2所示,中斷服務(wù)子程序的功能是每次中斷執(zhí)行一次該程序,對十毫秒位、百毫秒位、秒位、十秒位、分鐘位、十分鐘位、小時位和十小時位進(jìn)行加1和判斷是否進(jìn)位操作,即達(dá)到該時間的情況下就給該時間對應(yīng)位進(jìn)行加1操作,使其能夠顯示正確的動態(tài)的時間。圖3-1主程序流程圖圖3-2中斷服務(wù)子程序流程圖4.程序設(shè)計步驟4.1界面設(shè)置在DOS界面中顯示時間,要輸入輸出數(shù)據(jù),需要設(shè)置界面。界面設(shè)置需要用到DOS功能調(diào)用的INT10H指令。INT10H是由BIOS對屏幕及顯示器所提供的服務(wù)程序,使用INT10H中斷服務(wù)程序時,先指定AH寄存器為下表編號其中之一,該編號表示欲調(diào)用的功用,當(dāng)一切設(shè)定好之后再調(diào)用INT10H。設(shè)置光標(biāo)形狀:movah,1;置光標(biāo)類型,不顯示光標(biāo)movch,20hint10h設(shè)置光標(biāo)位置:movdh,0;行號movdl,0;列號:movbh,0;頁號movah,2;置光標(biāo)位置int10h在Teletype模式下顯示字符:show3:movah,0eh;顯示字符(光標(biāo)前移),al字符,bl前景色moval,[si]int10hincsiloopshow3為了使計時器的顯示界面更加直觀更加清楚,所以可以在int10h的情況下將AH賦值為06,初始化屏幕,同時置AL為00H而且為全屏空白,同時顏色通過在int10H的情況下BH=000ch顯示為紅色,這樣計時器會更加醒目。4.2檢驗鍵盤狀態(tài)由于要實現(xiàn)鍵盤按下不同的鍵值實現(xiàn)各種不同的功能,所以需要判斷鍵盤輸入的為哪個鍵。首先檢查鍵盤是否有輸入,若沒有輸入,則跳過檢查鍵盤輸入的鍵值的程序,若有輸入則比較輸入為何種鍵,接著執(zhí)行該鍵值對應(yīng)要完成的功能的程序。檢驗鍵盤狀態(tài)程序如下:movah,0bh;檢驗鍵盤狀態(tài),有輸入al=00,無輸入al=0fint21hincaljnzs1movah,08h;鍵盤輸入無回顯,(al)=輸入字符int21hcmpal,1bh;按下Esc鍵結(jié)束程序jegooutcmpal,'p';按下p鍵停止計時jepausecmpal,'P';按下p鍵停止計時jepausecmpal,'c';按下c鍵清零jeclearcmpal,'C';按下C鍵清零jeclearjmpsi4.3中斷子程序1.08H號中斷入口地址設(shè)置由于要使用08H號中斷來實現(xiàn),計時功能,所以首先要獲得08H號中斷的原來的入口地址,AL里存中斷類型號,將其存在了ES:BX里,接著設(shè)置其新入口地址,將新的中斷向量存在DS:DX里就可以實現(xiàn)設(shè)置新入口地址。具體的代碼實現(xiàn)如下:moval,08hmovah,35h;獲取08h號中斷的原入口地址int21hpushespushbxpushdsmovax,segint08hmovds,axmovdx,offsetint08h;設(shè)置08h號中斷的新入口地址moval,08hmovah,25hint21h;調(diào)用08h號中斷的服務(wù)程序popds中斷屏蔽器設(shè)置中斷屏蔽寄存器的I/O端口地址是21H,它的8位對應(yīng)控制8個外部設(shè)備。某位為0允許某外部設(shè)備中斷,為1則表示某外部設(shè)備的中斷請求被屏蔽。由上圖可以看出要使鍵盤和定時器允許外部中斷,則令其對應(yīng)的位置零,同時使其他設(shè)備不允許外部中斷。于是可通過以下代碼進(jìn)行設(shè)置:inal,21hpushaxmoval,11111100bout21h,al中斷頻率設(shè)置根據(jù)設(shè)計要求,需要使系統(tǒng)內(nèi)部8253輸出方波頻率為100Hz,所以要對08H號中斷設(shè)置,使其能夠10ms一次中斷,同時要使其工作在通道0方式3的方波發(fā)生器。8253是微機(jī)系統(tǒng)常用的定時器芯片,它有三個獨立的16位減法計數(shù)器,每個計數(shù)器分配一個端口地址,分別為40h,41h,42h。還有一個控制寄存器,端口地址為43h。把中斷子程序的段地址和偏移地址送到08H中斷向量中,由于08H中斷向量硬件中斷,計數(shù)器0的輸出端OUT與中斷控制器8259A的一位相連每秒中斷18.2次,故需要把18.2HZ改為100HZ,而CLK0的輸入頻率是1.1931817MHZ,故需把1.1931817除以100的初始值送到40H端口就可以實現(xiàn)每秒100次的中斷。所以設(shè)置計數(shù)初值為11932,這樣就可以達(dá)到10ms中斷一次。實現(xiàn)該功能的代碼如下:moval,00110110b;設(shè)置通道0的方式3out43h,almovax,11932;定時器的時鐘頻率為1.1931817MHz,計數(shù)初值=1193182/100=11932out40h,almoval,ahout40h,al4.4判斷計時進(jìn)位當(dāng)十毫秒位超過9的時候,要對百毫秒位進(jìn)1,如果百毫秒位超過9時,要對秒位進(jìn)1,當(dāng)秒位超過,9時,對十秒位進(jìn)1,如果十秒位超過5時,才對分鐘位進(jìn)1,分鐘位超過9時,對十分鐘位進(jìn)1,如果十分鐘位超過5時,對小時位進(jìn)1。小時位的進(jìn)位設(shè)計就要考慮到小時最多24的特殊性了,所以設(shè)置一個變量,在小時位加1的同時給它也加1.如果這個變量加到了24則重新開始計時,此時再把變量置零。實現(xiàn)此部分功能的程序代碼如下:incmsec2;十毫秒位加1cmpmsec2,3ah;十毫秒位是否小于100jbtmovmsec2,30hincmsec1cmpmsec1,3ah;百毫秒位是否小于10jbtmovmsec1,30hincsec2cmpsec2,3ah;秒位是否小于10jbtmovsec2,30hincsec1cmpsec1,36h;十秒位是否小于6jbtmovsec1,30hincmin2cmpmin2,3ah;分鐘位是否小于10jbtmovmin2,30hincmin1cmpmin1,36h;十分鐘位是否小于6jbtmovmin1,30hinchou2incncmpn,24;比較是否到了24小時,到了就跳到清零程序jzqinlingcmphou2,3ah;小時位是否小于10jbtmovhou2,30hinchou1cmphou1,33h;十小時位是否小于3jbtmovhou1,30ht:moval,20hout20h,al;中斷結(jié)束命令popdspopaxIret4.5暫停與繼續(xù)計時要暫停計時器,實際上是在暫停發(fā)生中斷時顯示的時間的加1操作,所以可以設(shè)置08h號中斷的入口地址使其不進(jìn)入計時中斷服務(wù)程序進(jìn)行加1操作,這樣就能達(dá)到暫停計時的功能。同理使其繼續(xù)計時也是設(shè)置08h號中斷的入口地址,使其繼續(xù)進(jìn)入計時中斷服務(wù)程序就可以繼續(xù)進(jìn)行計時了。實現(xiàn)此功能的代碼如下:pause:popaxout21h,alpopdx;把bx送到dx,原中斷向量存在ES:BX中popbxpushdsmovds,bxmoval,08hmovah,25h;設(shè)置08h號中斷入口地址為保存下來的原入口地址int21hpopdsaa1:movah,08h;鍵盤輸入無回顯,al=輸入字符int21hcmpal,1bh;按下Esc鍵結(jié)束程序jegooutcmpal,'g';按下g鍵繼續(xù)程序jejixucmpal,'G';按下G鍵繼續(xù)程序jejixujmpaa1jixu:jmpq15程序調(diào)試說明與分析5.1初始界面運行程序后初始界面如圖5-1所示:圖5-1初始界面5.2按下S鍵開始計時界面按下S鍵后開始計時界面如圖5-2所示:gC:\TIKDOTS\syste>32\cMd.exeCopyrightbyjibinggao.Weleonetousetheca1culagraphofsail-h:startp:pauseg:continueEsc:exitc:clear圖5-2按下S鍵后開始計時界面5.3按下P鍵暫停計時界面按下P鍵暫停計時界面如圖5-3所示:
圖5-3按下P鍵暫停計時界面5.4按下G鍵繼續(xù)計時界面按下G鍵繼續(xù)計時界面如圖5-4所示:圖5-4按下G鍵繼續(xù)計時界面5.5按下C鍵清零界面5.5按下C鍵清零界面如圖5-4所示:
圖5-5按下C鍵清零計時界面5.6按下ESC鍵退出程序運行后在任意時刻按下ESC鍵,程序退出。6心得體會計算機(jī)的誕生是人類科學(xué)史上的一件大事。半個多世紀(jì)以來,計算機(jī)得到了迅猛的發(fā)展,從小型機(jī)到巨型機(jī),從臺式機(jī)到手提電腦,科學(xué)家實現(xiàn)了計算機(jī)一代接一代的跨越性的飛躍。其中微機(jī)的一個代表機(jī)型是個人計算機(jī),得到了極為廣泛的應(yīng)用,已經(jīng)成為了人們生活中的必不可少的一部分,人們用它上網(wǎng)來了解世界各地的資訊,用它進(jìn)行財務(wù)處理來管理公司和家庭開支,用它控制機(jī)電部件來實現(xiàn)過程操作的自動化……對科研工作者而言,微機(jī)更是需要掌握的“第二語言”。這次微機(jī)課程設(shè)計讓我了解到了微機(jī)在各個方面的應(yīng)用。平常我們上微機(jī)課時,老師講的都是理論知識,講的很詳細(xì)但比較簡單,編程也是這樣,平常作業(yè)和考試時一段程序不超過20行,所以做課設(shè)前覺得應(yīng)該很容易,再拿到題后,構(gòu)思了一天,發(fā)現(xiàn)雖然思路不難,但要處理的模塊太多了,就計時器匯編語言程序設(shè)計來說,進(jìn)位跳轉(zhuǎn)就有6次,還要設(shè)計界面(這些需要靠自學(xué)掌握),還有頻率設(shè)置,說起來簡單,就是1秒100次脈沖,但真正做時不知從哪下手……我上網(wǎng)也查了一些資料,發(fā)現(xiàn)程序比自己想象中的要長,在word中程序有7、8頁長,經(jīng)過兩天的研究,翻書,查資料結(jié)合自己所學(xué),總算看懂了大部分,對照網(wǎng)上的資料,自己慢慢學(xué)著編程,一開始錯誤一大堆,經(jīng)過耐心的尋找、對比、問同學(xué)后終于調(diào)試出來了。我心中的大石終于放下了。在這次微機(jī)課程設(shè)計中,通過翻書、查資料、與同學(xué)討論,讓我實踐能力得到了質(zhì)的飛躍,讓我對微機(jī)這門課程有了更深的了解,同時也加深了理論知識的掌握,讓我們學(xué)以致用,使我們所學(xué)的知識掌握的更加牢固,感謝黃老師耐心的教導(dǎo),是你讓我們對微機(jī)有了更新的了解,讓我們對微機(jī)有了濃厚的興趣。我希望我們可以多做點課程設(shè)計,讓理論與實踐結(jié)合,這樣才能激發(fā)我們的創(chuàng)新思想,我們也能更快更牢固的掌握知識。參考文獻(xiàn)彭虎等著.微機(jī)原理與接口技術(shù)(第二版).電子工業(yè)出版社,2005艾德才.Pentium系列微型計算機(jī)原理與接口技術(shù).高等教育出版社,2000戴梅萼.微型計算機(jī)原理與接口技術(shù).清華大學(xué)出版社,2003周明德.微型計算機(jī)系統(tǒng)原理及應(yīng)用.清華大學(xué)出版社,2002附件(程序清單)datasegmenthouldb'0hou2db'0mwdb':'minidb'0min2db'0mdb':'secldb'0sec2db'0m2db':'msecldb'0msec2db'0countequ$-hou1hdb0hellodb"Copyrightbyjibinggao.",0ah,0dhdb"Welcometousethecalculagraphofsail.〃,0ah,0dhdb"s:startp:pauseg:continueEsc:exitc:clear〃,0ah,0dhdataendscodesegmentmainprocfarassumecs:code,ds:datastart:movax,datamovds,axmovah,1;置光標(biāo)類型,不顯示光標(biāo)movch,20hint10hcallclean_screenpushaxpushbxmovax,0600h;ah=06(滾動)al=00(全屏空白)movbh,000ch ;設(shè)置背景顏色(3)和前景顏色(e)subcx,cxmovdx,5f5fhint10hpopaxpopbxmovdh,1;行號movdl,0;列號movbh,0;頁號movah,2;置光標(biāo)位置int10hmovcx,115movsi,offsethelloshow3:movah,0eh;顯示字符(光標(biāo)前移),al字符,bl前景色moval,[si]int10hincsiloopshow3calllocate_cursorcallshowq2:movah,08h;鍵盤輸入無回顯,al=輸入字符int21hcmpal,1bh;按下Esc鍵結(jié)束程序jegoout1jmpyygoout1:movah,4chint21hyy:cmpal,'s';按下‘s’鍵開始計時jeq1cmpal,'S'jeq1jmpq2q1:cli;使IF清零moval08hmovah35h;獲取08h號中斷的原入口地址int21hpushespushbxpushdsmovax,segint08hmovds,axmovdx,offsetint08h;設(shè)置08h號中斷的新入口地址moval,08hmovah,25hint21h;調(diào)用08h號中斷的服務(wù)程序popdsinal,21h;PC機(jī)中的8253端口地址為40H-43H,這段程序應(yīng)該是給8253初始化和寫定時初值pushax;8253是微機(jī)系統(tǒng)常用的定時器芯片,它有三個獨立的16位減法計數(shù)器,每個計數(shù)器分配一個端口地址,分別為40h,41h,42h。還有一個控制寄存器,端口地址為43hmoval,11111100bout21h,almoval,00110110bout43h,al
movax,11932;定時器的時鐘頻率為1.193187MHz計數(shù)初值=1193187/100=11932out40h,almoval,ahout40h,alstis1:calllocatecursorcallshowmovah,0bh;檢驗鍵盤狀態(tài),有輸入al=00,無輸入al=0ffhint21hincal;jnzs1movah,08h;鍵盤輸入無回顯,al=輸入字符int21hjegooutcmpal,,p';jepausecmpal,,P,;jejegooutcmpal,,p';jepausecmpal,,P,;jepausecmpal,,c,;jeclearcmpal,,C,;jeclear按下‘p’鍵停止計時按下c鍵清零按下c鍵清零jmps1clear:popaxout21h,alpopdx;把bx送到dxpopbxpushdsmovds,bxmoval,08hmovah,25hint21hpopdsmovh,0movmin1,30hmovmin2,30hmovsec1,30hmovsec2,30hmovmsec1,30hmovmsec2,30hjmpstartpause:popaxout21h,alpopdx;把bx送到dx,原中斷向量存在ES:BX中popbxpushdsmovds,bxmoval,08hmovah,25hint21hpopdsaa1:movah,08h;鍵盤輸入無回顯,al=輸入字符int21hcmpal,1bh;按下Esc鍵結(jié)束程序jegooutcmpal,'g';按下g鍵繼續(xù)程序jejixucmpal,'G';按下g鍵繼續(xù)程序jejixujmpaa1jixu:jmpq1goout:popaxout21h,alpopdx;把bx送到^dxpopds;把es送到^dsmovax,2508hint21hmoval,00110110bout43h,alsubal,alout40h,alout40h,almovah,4chint21hmainendpint08hprocnear;使用8253/8254定時器0的中斷類型8計時,以100次/s的頻率發(fā)出中斷,相當(dāng)于一次中斷10mspushaxpushdsmovax,datamovds,axincmsec2cmpmsec2,3ahjbtmovmsec2,30hincmseclcmpmsecl,3ahjbtmovmsecl,30hincsec2
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度文化藝術(shù)民辦非企業(yè)機(jī)構(gòu)捐贈協(xié)議范本4篇
- 2025年度環(huán)保節(jié)能型建筑材料研發(fā)與應(yīng)用合同3篇
- 2025年度離婚協(xié)議書中財產(chǎn)分割及子女撫養(yǎng)費調(diào)整范本4篇
- 二零二五版摩托車駕駛安全培訓(xùn)課程開發(fā)合同3篇
- 二零二五年度人工智能技術(shù)研發(fā)合同合4篇
- 二零二五版醫(yī)療健康信息SET協(xié)議共享合同3篇
- 玻璃鋼水箱施工方案
- 建筑設(shè)計與施工一體化合同(2篇)
- 彩鋼瓦合同范本(2篇)
- 2025年物流行業(yè)風(fēng)險評估合作協(xié)議合同3篇
- 商場電氣設(shè)備維護(hù)勞務(wù)合同
- 油氣田智能優(yōu)化設(shè)計-洞察分析
- 陜西2020-2024年中考英語五年真題匯編學(xué)生版-專題09 閱讀七選五
- 磚混結(jié)構(gòu)基礎(chǔ)加固技術(shù)方案
- 助產(chǎn)專業(yè)的職業(yè)生涯規(guī)劃
- 2023年國家公務(wù)員錄用考試《行測》真題(行政執(zhí)法)及答案解析
- 新《國有企業(yè)管理人員處分條例》知識競賽考試題庫500題(含答案)
- 骨質(zhì)疏松護(hù)理
- 《聞泰科技并購安世半導(dǎo)體的風(fēng)險應(yīng)對案例探析》8200字(論文)
- 肝斷面引流管護(hù)理
- 醫(yī)療器械銷售合同模板
評論
0/150
提交評論