




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)一熟悉實(shí)驗(yàn)環(huán)境1實(shí)驗(yàn)環(huán)境搭建1、1 emu80861、1、1 emu8086 介紹emu8086雖然就是一款匯編語(yǔ)言學(xué)習(xí)平臺(tái),但其生成的代碼就是符合真正x86標(biāo)準(zhǔn)的二進(jìn)制彳弋碼,可以被x86平臺(tái)執(zhí)行。本學(xué)期實(shí)驗(yàn)課程中僅僅用到emu8086的匯編代碼編輯功能,不會(huì)用到emu8086的二進(jìn)制代碼生成與調(diào)試功能。強(qiáng)烈建議匯編語(yǔ)言編程基礎(chǔ)差的同學(xué)課 下多使用emu8086練習(xí)匯編語(yǔ)言編程。1、1、2 emu8086 安裝盡量安裝在非中文路徑下,比如“”。安裝文件位于本教程所在目錄的"toolsemu8086-crack、zip"。按照壓縮包中的說(shuō)明安裝即可,為學(xué)習(xí)與教學(xué)方便,使
2、用破解軟彳,請(qǐng)勿用于其她用途。1、2匯編編譯器1、2、1匯編編譯器介紹本學(xué)期實(shí)驗(yàn)課程中用到的匯編語(yǔ)言編譯器取自masm32,但masm32過(guò)于龐大,因此只選出對(duì)實(shí)驗(yàn)有用一些工具 ,打包在"toolsmasm4proteus、zip”中,包中還有三個(gè)批處理文件 ,專 用于本學(xué)期的主要實(shí)驗(yàn)平臺(tái) Proteus。1、2、2匯編編譯器安裝將 “toolsmasm4proteus 、zip ” 解 壓即可,盡量 解壓到 非中文路徑下,比如 “e:stumcpmasm ”。1、3 Proteus1、3、1 Proteus 介紹Proteus就是一款商用的專業(yè)的IC設(shè)計(jì)軟件,同時(shí)具備許多處理器的仿
3、真功能,本學(xué)期實(shí)驗(yàn)即用到了它的8086處理器仿真功能。1、3、2 Proteus 安裝實(shí)驗(yàn)室微機(jī)上可能已經(jīng)安裝,若未安裝,可按下面說(shuō)明安裝。盡量安裝在非中文路徑下,比如“安裝文件位于本教程所在目錄的"toolsProteus7、10pro-crack、zip"。按照壓縮包中的說(shuō)明安裝即可,為學(xué)習(xí)與教學(xué)方便使用破解軟件,請(qǐng)勿用于其她用途。1、3、3 Proteus 配置啟動(dòng)Proteus,按圖1提示打開(kāi)Proteus的代碼生成工具設(shè)置窗口。ISource Debug Library Template E:_Add/Remove Sojrce file&.Define
4、Code Generation TooIs.hSetup External Text editor.Build Allp .圖1開(kāi)打代碼生成工具添加刪除窗口在代碼生成工具添加刪除窗口中選New,如圖2中紅圈所示,便可打開(kāi)一個(gè)文件選擇對(duì)話框。圖2代碼生成工具添加刪除窗口“MASM32、BUILDk在彈出的文件選擇對(duì)話框中找到1、2節(jié)中安裝匯編編譯器時(shí)解壓出的EXE bat”,雙擊或點(diǎn)打開(kāi),對(duì)話框關(guān)閉,返回代碼生成工具設(shè)置窗口,然后按圖3中的紅圈標(biāo)注進(jìn)行設(shè)置然后點(diǎn)OK關(guān)閉該窗口,這樣Proteus就擁有編譯本學(xué)期實(shí)驗(yàn)課程中用到的匯編語(yǔ)言 的能力了。圖3代碼生成工具添加刪除窗口-配置新添加的編譯器接
5、著,按圖4所示,設(shè)置外部代碼編輯器。Sourcu Debug Library T em plateAdd/Remove Source files.,費(fèi) Define Cede Generation Tools-.Setup External Text £ditor.Build All圖4打開(kāi)外部代碼編輯器設(shè)置窗口按照?qǐng)D5所示,找到前面過(guò)程中安裝好的emu8086,點(diǎn)OK即可,如此Proteus將使用emu8086作為匯編語(yǔ)言編輯工具。圖5 配置emu8086Proteus基本配置完畢,若無(wú)其她操作,可以關(guān)閉Proteus。2 8086平臺(tái)基本電路搭建本節(jié)將介紹從 Proteus自帶的
6、8086仿真實(shí)例中截取的 8086平臺(tái)基本電路。2、1 創(chuàng)建實(shí)驗(yàn)文件夾一定在非中文路徑下,創(chuàng)建一個(gè)文件夾“exp01",比如"e:stumcpexpexp012、2 添加8086平臺(tái)基本電路到實(shí)驗(yàn)文件夾打開(kāi)本教程所在文件夾中的“ 制到實(shí)驗(yàn)文件夾下,最好更名為“exp8086base、zip",將壓縮包中的“8086base、dsn”復(fù) exp01、 dsn”。2、3打開(kāi)dsn文件雙擊 模塊如圖21_22蕓1831h3319RESETDp.15READYA16.19INTXVQS1IIMTP ,ALE/QSDHOLD/GTTBHEHLDA/GTODT/R/S1TES
7、TDEN/S2NMIRDMM而WR/LOCKCLKMIO/®2S2534272、2中復(fù)制過(guò)來(lái)的dsn文件即可啟動(dòng)Proteus,并瞧到整個(gè)電路設(shè)計(jì)圖。其中80866所示。圖6 8086模塊請(qǐng)觀察電路圖1為什么2為什么啟查資料,在實(shí)驗(yàn)報(bào)告紙上回答下列問(wèn)題:RESE嘲口要接地(低電平)?MN/MX與READY端口要接電源(高電平)?3AD0、15與A16、19的作用就是什么?4M/IO端口的作用就是什么?5RD端口的作用就是什么?(進(jìn)行下面步驟時(shí)不要關(guān)閉當(dāng)前Proteus)3 在Proteus的8086仿真平臺(tái)中編輯與調(diào)試匯編程序3、1創(chuàng)建匯編源程序文件在先前創(chuàng)建的實(shí)驗(yàn)文件夾中創(chuàng)建一個(gè)文
8、本文件并更名為“exp01、asm”。按照?qǐng)D7所示,打開(kāi)添加源文件窗口。Sc urce 口tbug Library TemplateAdd/Remove Source Fle51.n奧 Define Cede Generation Tools,. Setup Ejctemal Text £ditoc., Build All圖7打開(kāi)添加源文件窗口在打開(kāi)的源文件添加刪除窗口中按照如圖8注釋的順序進(jìn)行設(shè)置,然后點(diǎn)“ New”,打開(kāi)源文件瀏覽窗口。圖8源文件添加刪除窗口在打開(kāi)的文件瀏覽器找到剛才創(chuàng)建的“exp01、asm”,打開(kāi)即可。至此也可瞧到圖8中的源文件添加刪除瀏覽器窗口的“Sourc
9、e Code”區(qū)域中顯示出剛剛輸入的源程序文件名(如“exp01、asm"),然后點(diǎn)OK關(guān)閉源文件添加刪除窗口。3、2編輯匯編源程序文件如圖9所示進(jìn)行操作,即可打開(kāi)剛創(chuàng)建的匯編源程序文件,并且就是由emu8086作為編輯器打 開(kāi)的。圖9請(qǐng)?jiān)谠次募袑懴氯缦麓amodel smal_102 .8086 .stack .code startup dead_loQp:07 inc ax mov var8 r al mov var16, ax jmp dead_Loop , data 12 var8 dt ?12 varlG dxj ? end凰寫完代碼后請(qǐng)點(diǎn)擊 emu8086界面上的保存按
10、鈕 田電。6請(qǐng)?jiān)趯?shí)驗(yàn)報(bào)告紙上寫源代碼 每一行的含義。3、3編譯匯編源程序文件不用關(guān)閉emu8086,回到Proteus界面,按圖10進(jìn)行操作,即可對(duì)源程序進(jìn)行編譯。Source Debug Library Template Systs Add/Remove Source files.Define Cede Generjticn Tools.,工旨tup External Text Editor,Build All MHexp01,asm圖10編譯源程序編譯完成后會(huì)彈出一個(gè)" BUILD LOG'窗口(該窗口稍后關(guān)閉即可 ,若窗口中沒(méi)有紅色錯(cuò) 誤提示,則表明源程序已經(jīng)被成功編譯
11、,否則要根據(jù)紅色錯(cuò)誤提示回到emu8086界面修改源程序,然后再回到Proteus中編譯。編譯成功后可以在實(shí)驗(yàn)文件夾下瞧到編譯產(chǎn)生的與源程序文件同名但后綴不同的三個(gè) 文件,如“exp01、obj"、"exp01、map"、"exp01、exe”淇中exe后綴的即為二進(jìn)制可執(zhí)行 文件。3、4運(yùn)行程序雙擊電路圖中的8086芯片,彈出8086配置窗口,如圖11所示紅圈部分設(shè)置即可,這樣便 可在稍后的環(huán)節(jié)中由 8086芯片運(yùn)行剛生成的“ exp01、exe”。圖11 8086與二進(jìn)制程序的關(guān)聯(lián)設(shè)置點(diǎn)OK關(guān)閉圖11中的窗口然后按Proteus界面左下角的運(yùn)行按鈕
12、匚匚I便可啟動(dòng)8086 運(yùn)行剛才的程序??梢杂^察到設(shè)計(jì)圖上有些端口變紅或變藍(lán)。按停止按鈕匚亙口便可結(jié)束8086的程序運(yùn)行。3、5 單步調(diào)試程序,觀察8086內(nèi)部寄存器變化如圖12進(jìn)行操作就可開(kāi)啟單步調(diào)試模式。Debug Library Template System HelpStart/Re&tart DebuggingCtrl 十 Fl 2Piir i 尸Phii喘產(chǎn) inim圖12開(kāi)啟調(diào)試模式然后再次點(diǎn)圖12中的Debug菜單時(shí),彈出的內(nèi)容如圖13所示。1,Simulation LogWatch Window &086 Memory Dump - UI/ 4, &O
13、86 Roisters - U1- 3 &08& Source Code U15 6. &鮑6 Variable - Ui圖13調(diào)試窗口菜單選上圖13中所有勾選項(xiàng)就可以瞧到所有調(diào)試用窗口。此時(shí)可通過(guò)“ 8086 Source Code”窗口的單步調(diào)試按鈕單步執(zhí)行程序,并通過(guò)“ 8086Registers”窗口觀察8086芯片中各個(gè)寄存器的變化。3、6 設(shè)置調(diào)試時(shí)刻觀察的變量在3、5最后階段,打開(kāi)了若干調(diào)試窗口 ,其中有個(gè)叫做“8086 Variables”,這個(gè)窗口可以 顯示定義在源程序中的變量 (觀察源程序可發(fā)現(xiàn),其中在“、data”部分定義了 “var8”、“vah
14、6 兩個(gè)變量,但在3、5最后階段,并未發(fā)現(xiàn)該窗口顯示變量。若要將源程序中的變量顯示到“8086 Variables”窗口中,則需要將要顯示的變量聲明成全局的,這需要在“、data”后添加兩行代碼,如下:.data.put)l LC VdL 6public var16- ver3 db 2var16 dw ?4 實(shí)驗(yàn)驗(yàn)收向?qū)嶒?yàn)指導(dǎo)教師演示搭建好的實(shí)驗(yàn)平臺(tái),并按老師的提問(wèn)進(jìn)行操作。5 實(shí)驗(yàn)報(bào)告請(qǐng)?jiān)趯?shí)驗(yàn)報(bào)告上回答紅字部分提出的問(wèn)題。實(shí)驗(yàn)二 配置存儲(chǔ)器及BIOS仿真應(yīng)用1了解微機(jī)啟動(dòng)過(guò)程以下資料截選自百度文庫(kù):計(jì)算機(jī)啟動(dòng)過(guò)程第一步.當(dāng)我們按下電源開(kāi)關(guān)時(shí),電源就開(kāi)始向主板和其它設(shè)備供電, 此時(shí)電壓還不太
15、穩(wěn)定,主板上的控制芯片組會(huì)向CPI發(fā)出并保持一個(gè)RESET f用置)信號(hào).讓CPI內(nèi)部口動(dòng)快且到初始狀態(tài),但CPI在此刻不會(huì)馬上 執(zhí)行指令,當(dāng)芯片組檢測(cè)到電源已經(jīng)開(kāi)始穩(wěn)定供電了(當(dāng)然從小穩(wěn)定到穩(wěn) 定的過(guò)程只是一瞬間的事情),它便撤去RESET信號(hào)(如果是手工按下計(jì) 算機(jī)面板上的Reset按鈕來(lái)重啟機(jī)器,那么松開(kāi)該按鈕時(shí)芯片組就會(huì)撤去 RESET信號(hào)),CM馬上就從地址FFFF0H處開(kāi)始執(zhí)行指令,從前面的介絹 可知,這個(gè)地址實(shí)際上在系統(tǒng)H1OS的地址范圍內(nèi),無(wú)論是AwadB105還是 AMTBTOS4放在這里.的只是一條跳轉(zhuǎn)指令,跳到系統(tǒng)BIOS中真正的啟動(dòng)代 碼處.以下資料截選自 ChinaU
16、nix:,原英文資料網(wǎng)址: How Comuputers Boot Up 計(jì)算機(jī)如何引導(dǎo)啟動(dòng)前面的博文介紹了 Intel計(jì)算機(jī)的底板芯片組與內(nèi)存映射 ,為理解計(jì)算機(jī)引導(dǎo)初始過(guò)程打下了 基礎(chǔ)。引導(dǎo)就是一個(gè)復(fù)雜的、 多階段的、有趣的“東西”。下面就是這個(gè)過(guò)程的簡(jiǎn)圖(outline): 轉(zhuǎn)風(fēng)扇的僵尸電腦”。有時(shí)USB或者其它設(shè)備也會(huì)導(dǎo)致此類情況發(fā)生 :對(duì)于之前一直運(yùn)行良好, 而突然出現(xiàn)上述死機(jī)狀態(tài)的計(jì)算機(jī) ,您可以拔掉所有非關(guān)鍵設(shè)備 ,這很可能解決死機(jī)問(wèn)題,然 后排除出導(dǎo)致該問(wèn)題的設(shè)備。Time Flo/;Siwtcfi to PiptectedModeAn outline of the boot
17、sequence當(dāng)您按下計(jì)算機(jī)上的電源鍵時(shí),事情已經(jīng)開(kāi)始啟動(dòng)。在加電之后(powered up),底板首先初始化自身固件firmware)-芯片組與其它小部件(tidbits)-并試圖運(yùn)行CPU如果此日運(yùn)行 CPU失 ?。ɡ纾瑳](méi)有發(fā)現(xiàn)CPU或者CPU損壞),那么該計(jì)算機(jī)除了轉(zhuǎn)動(dòng)的風(fēng)扇之外,一無(wú)所用。在發(fā)現(xiàn) CPU損壞或者缺失的情況下,一些底板會(huì)發(fā)出蜂鳴報(bào)警聲,但我最常遇見(jiàn)的情況就是只有“旋03<FFFFFFFFReset vector OxFFFFFFFO4 GB4 GB - 16 bytesJUMP to OxFOODO (Last 1S Bytes of m&mory ar
18、e add re stable s'ia EIP thanks to power-up hack.)Unaddr&s sable rremoryL real mode is limited to 1 MB. This region represents 7 GB and is not to scaleOxFFFFFOxFOOOOSystem BIOS1MB960 K3Ext&tided System BIDSEx pa nsion Area (maps ROMs for old peripheral c5rds)Legacy Video Card Memory Acce
19、ss8% KB766 K3640 KBAccessible RAM Memory (640KB 話 enough for any chi e oldDOSareaL.ttx博客jnix net00如果一切正常,CPU便開(kāi)始運(yùn)行。在多處理器 (multi-processor)或多 核(multi-core)系統(tǒng)中,會(huì)動(dòng)態(tài)地選 擇一個(gè)CPU作為引導(dǎo)處理器 (BSP:BootTrap Processor),它負(fù)責(zé)運(yùn) 行所有的BIOS以及內(nèi)核初始化代 碼(kernel initialization code)。此時(shí), 其它的被稱作應(yīng)用處理器 (application processor :AP)的 C
20、PU 仍處于終止?fàn)顟B(tài)(halted),直到內(nèi)核 顯示地激活它們。Intel CPU已經(jīng)演 化了很多年,但它們就是完全后向 兼 容 的(fully backwards compatible)。因而,現(xiàn)代的 CPU同 最初的1973年的Intel 8086CPU的 啟動(dòng)行為非常相似:在加電之后執(zhí) 行相同的動(dòng)作。在這種原始的加電 狀態(tài)下(primitive power up state),CPU 處于實(shí)模式(real mode), 此時(shí)內(nèi)存映射就是禁用的 (memory paging disabled),這同古 老的MS-DOS時(shí)代類似。DOS系統(tǒng) 僅能尋址1M字節(jié)內(nèi)存,并且任何 代碼可以寫入內(nèi)存的
21、任何位置-即不存在保護(hù) (protection)或特權(quán) (privilege)的概念。加電之后,CPU內(nèi)部的寄存器均具CPU將有定義好的值(well-defined values),包括指令指針(EPI:instruction pointer),它用于保存要執(zhí)行指令的內(nèi)存地址。Intel CPU加電后僅能夠?qū)ぶ?M內(nèi)存空間,同時(shí),一個(gè)隱含的基址(hidden base address)將應(yīng)用于EIP因而,CPU執(zhí)行的第一條指令位于地址:0xFFFFFFF0這個(gè)魔幻地址被稱作重啟向量(reset vector),也就是現(xiàn)代Intel CPU的標(biāo)準(zhǔn)規(guī)格。底板(motherboard)保證位于重啟向
22、量的指令 (jump)跳轉(zhuǎn)至U映射了 BIOS入口的內(nèi)存地址。跳 轉(zhuǎn)指令隱含地(implicitly)清除加電時(shí)的隱含基址 (hidden base address)。多虧了芯片組(chipsets) 保存的內(nèi)存映射(memory map),使得所有內(nèi)存地址存儲(chǔ)著CPU所需要的正確內(nèi)容。這些內(nèi)存映射到包含BIOS的flash內(nèi)存(flash memory),而此時(shí)的RAM模塊里面還就是一些亂七八糟的 東西。以下資料通過(guò)百度知道以關(guān)鍵詞“proteus仿真8086啟動(dòng)”搜索得到,資料網(wǎng)址為:【問(wèn)題】8086不就是沒(méi)有集成存儲(chǔ)器的不,proteus中的仿真模型好像有內(nèi)部存儲(chǔ)器 ,使用內(nèi)部存儲(chǔ)器 的
23、時(shí)候怎么分別設(shè)置 RAM與ROM的空間大小?如果不想使用內(nèi)部存儲(chǔ)器 ,自己來(lái)擴(kuò)展存儲(chǔ) 器,怎么設(shè)置?如果使用自己擴(kuò)展的存儲(chǔ)器 ,程序從那個(gè)地址開(kāi)始運(yùn)行的?【回答】8086 本身就沒(méi)有存儲(chǔ)器。只有三類總線:地址總線、數(shù)據(jù)總線、控制總線。您如果想給8086添加存儲(chǔ)器,必須利用總線。 加載 ROM 芯片與 RAM 芯片。 這些芯片與8086 本身的芯片一樣,都在元器件庫(kù)里面,但就是怎么接,接多大的存儲(chǔ)器,按照您的要求選擇。芯片具體的連接方法,需要瞧清楚8086 芯片的各個(gè)引腳功能,與芯片的引腳功能。接下來(lái)的任務(wù)就就是把芯片連接到引腳。 但就是連接時(shí)有些能直接相連,有些需要借助其她芯片做轉(zhuǎn)換。例如80
24、86就是AD(地址與數(shù)據(jù)線)復(fù)用,這樣您必須先利用鎖存器741s373把地址總線與數(shù)據(jù)總線分離開(kāi),然后才能與存儲(chǔ)器芯片的地址線與數(shù)據(jù)線連接。這些方面的詳細(xì)介紹您可以瞧瞧微機(jī)原理方面的書籍。里面的存儲(chǔ)器設(shè)計(jì)與譯碼電路設(shè)計(jì)部分。詳細(xì)的介紹這些內(nèi)容。8086的程序開(kāi)始地址就是從ROM的FFFF0開(kāi)始的,您如果要用8086必須配備ROM。RAM根據(jù)需要決定陪還就是不配。這與單片機(jī)不同。這個(gè)芯片的運(yùn)行可以在ROM 也可以在 RAM,但就是啟動(dòng)的第一條指令必須在ROM的FFFF0單元?!咀穯?wèn)】存儲(chǔ)器的擴(kuò)展,連線,譯碼之類的我會(huì),我只就是不知道proteus 怎么對(duì) 8086 的存儲(chǔ)器進(jìn)行管理與設(shè)置的,您能
25、說(shuō)明一下這個(gè)不?【回答】管理與普通系統(tǒng)一樣的。就是由您自己編寫的軟件控制的。舉例來(lái)說(shuō)。您編程的時(shí)候,首先寫一條跳轉(zhuǎn)指令,寫在ROM的FFFF庇個(gè)位置,proteus運(yùn)行的時(shí)候,就首先執(zhí)行在這個(gè)位置的第一條跳轉(zhuǎn)指令。 然后轉(zhuǎn)移到您實(shí)際程序的所在位置。 然后您在實(shí)際程序的所在位置編寫代碼,完成任務(wù)。 如果您需要變量或者可讀寫的量。 那些您就存在RAM 里面 ,如果您不需要這些,您就只用ROM。與單片機(jī)操作差不多。您問(wèn)的意思就是能不能像dos環(huán)境下,那樣,把程序讀進(jìn)來(lái),然后在RAM 運(yùn)行。 在有操作系統(tǒng)的環(huán)境里面,操作系統(tǒng)完成這些任務(wù)。 您現(xiàn)在沒(méi)有操作系統(tǒng),所有的操作必須您自己完成。有系統(tǒng)的機(jī)器,在
26、開(kāi)始工作前也就是由主板上固定的 ROM 程序完成自檢與設(shè)備初始化的。 現(xiàn)在您編程一般情況就寫在ROM 當(dāng)中。類似于 ROM 固話的自檢程序。一般任務(wù)這樣的方法完全可以完成。1查閱資料,回答為什么8086CPU力口電后會(huì)從0XFFFF0地址開(kāi)始執(zhí)行指令。2 配置閃存2、 1 閃存的作用由于閃存的內(nèi)容在掉電后仍然可以保持 ,因此在 0806 存儲(chǔ)系統(tǒng)中通常都會(huì)配有閃存。 閃 存中的內(nèi)容就是 8086啟動(dòng)后最先執(zhí)行的內(nèi)容。本次實(shí)驗(yàn)將在“ exp8086base、zip”提供的8086 基本電路基礎(chǔ)上配置閃存。閃存即8086存儲(chǔ)系統(tǒng)中的ROM,可以在圖1中瞧到閃存在微機(jī)硬件結(jié)構(gòu)上所處的位置。計(jì)算機(jī)主板
27、上的 bios 就就是存儲(chǔ)在 ROM 中。本次實(shí)驗(yàn)課就就是要模擬計(jì)算機(jī)系統(tǒng)中的 biosROM。圖1微型計(jì)算機(jī)總線化硬件結(jié)構(gòu)圖(圖片來(lái)自:)2、2配置閃存本節(jié)相當(dāng)于在8086base基礎(chǔ)上做一個(gè)ROM擴(kuò)展,容量為64K字節(jié),采用兩片 27256(32K 乂 8)的EPROM芯片,其地址范圍為 F0000至U FFFFF注意:8086就是16位CPU每次 會(huì)通過(guò)數(shù)據(jù)總線從 ROM模塊t取16位數(shù)據(jù),因此兩片27256分別為8086提供高8位數(shù)據(jù)與 低8位數(shù)據(jù)。請(qǐng)?jiān)?086base、dsn基礎(chǔ)上仿照?qǐng)D2進(jìn)行電路擴(kuò)展。簡(jiǎn)要畫圖說(shuō)明挑選元器件:點(diǎn)左邊工具欄中的方,再點(diǎn)擊L| DEVICES,在彈出的“
28、 PickDevices”對(duì)話框中找到需要的元件(比如27256),然后按OK關(guān)閉對(duì)話框;(2)在電路圖上放置元器件:點(diǎn)左邊工具欄中的 »,然后點(diǎn)擊IDEVICES 一 下列出的所需 元件(比如27256),然后在電路圖上合適位置點(diǎn)擊即可放置;(3)為連線命名:點(diǎn)擊左邊工具欄中的 幽U ,再點(diǎn)擊要命名的連線,彈出的對(duì)話設(shè)置窗口中 直接填寫String項(xiàng)命名或從下拉菜單中選擇已有命名均可 ,命名相同的連線被認(rèn)為就是相互 導(dǎo)通的(在邏輯上被認(rèn)為就是同一條線 );(4)單線接點(diǎn)、電源、接地、總線接點(diǎn)個(gè).可通過(guò)左邊工具欄中的=進(jìn)行選擇,總線可通過(guò)左邊工具欄中的進(jìn)行繪制。U411/4)0 y1
29、3AD1 >13 M 2 / 1GAD3 71EM4 .17/MD5 J18MJb >19 班7)ADR|0, 190 12 3 4 = - EpMA1A2*MM 用而穌用A1A1RA1A1CFutvpD D D D D D D DkU (V6芭3互23 至U12iog7n刀"T0 12 3 4 三-一 平 他A1羯陰川悠他匐陽(yáng)墨A1A1A1A1A1CFOFW7LSl3e圖2 在8086base、dsn基礎(chǔ)上擴(kuò)展的 ROM電路U9o 1 2 3 2 5 0 7 ,D D D D D D D D11AD8 7 12Mg , 13AD10/ 15Mli1/ 1612y 17M
30、 13yl IJAJ4/ igADigy2電路圖中如何保證 27256的地址范圍為 F0000到FFFFF3為什么27256的地址接受端口 A0、14接的就是系統(tǒng)地址總線的A1、15,而不就是A0、14。4電路圖中兩片27256標(biāo)示符分別為U4與U12,哪片就是向8086提供高8位數(shù)據(jù),哪片提供 低8位數(shù)據(jù)。3向閃存中寫入程序3、1 配置閃存編譯環(huán)境由于前面實(shí)驗(yàn)中介紹的MASM32、BUILD EXE bat不能直接將匯編源代碼編譯成純二進(jìn)制代碼的bin文件,因此本次實(shí)驗(yàn)中需要添加一個(gè)專用于編譯生成bin文件的環(huán)境,具體步驟如下:(1)點(diǎn)擊 Proteus 界面的"Source-&g
31、t;Define Code Generation Tools"打開(kāi)"Add/Remove Code Generation Tools”界面;(2)點(diǎn)擊“Add/Remove Code Generation Tools”界面的New按鈕以添加用于編譯 bin文件 的環(huán)境(這個(gè)環(huán)境位于“toolsmasm4proteusNASM、BUILD BIN、bat"),如圖 3。Ta J: |NASM.BIIILD,BIN三J cxirce E xtn:|ASM £bj. Ewtn: |OBJ|圖3 添加bin文件編譯生成環(huán)境3、2編輯源程序在實(shí)驗(yàn)?zāi)夸浵聞?chuàng)建一個(gè)名為
32、“ bios、asm”的匯編源程序文件,然后將該文件添加到電路 設(shè)計(jì)圖,注意添加時(shí)選擇“ Code Generation Tool”要選擇“ NASM、BUILD BIN”。添加好“bios、asm”后,通過(guò)Proteus界面的Source菜單打開(kāi)該源程序文件,然后編輯如 圖4。bios_entry:rnov 3父,190|三 ruov bx 230rnov ex, 3 0005 mov dx. 400I? inc 已建 d李。bx inG GK dec dx jmp bios_loop times OfffOh-($-$) DE 0|lr jnip OfOOQlizOOOOli圖4用于生成b
33、ios的源程序3、3 生成bin文件通過(guò)Proteus界面的Source->Build All即可生成bin文件,使用該功能后,在實(shí)驗(yàn)?zāi)夸浵?即 源程序所在目錄)可以見(jiàn)到生成的“ bios、bin”。3、4 將bin文件裝入ROM本次實(shí)驗(yàn)8086要運(yùn)行的可執(zhí)行代碼不就是來(lái)自設(shè)置給8086的Program File,因此要保持8086的Program File項(xiàng)為空,如圖5所示。一 RST 細(xì)口.151口-iit? xuficsa-a一 Rngiam Fie /呆-Extein'Clxk.4 | NoZl“twt-RHIwF挈, Clcck Frecuercpt|1500KHr-&
34、quot;I篇-bo LKMi3FC3 Package|DL40圖5 雙擊8086后,清空其Program File項(xiàng) 雙擊用作低8位數(shù)據(jù)的27256芯片,設(shè)置如圖6。Image File:bios.bin國(guó)File B 號(hào)第 Ad di曾亭(he«)I 山口口口口File Address 刮圖6用于低8位數(shù)據(jù)的27256設(shè)置雙擊用作高8位數(shù)據(jù)的27256芯片,設(shè)置如圖7。Image Ffe;File Address (hex)FleAddess Shift g)圖7用作高8位數(shù)據(jù)的27256設(shè)置關(guān)于圖6、圖7中的三項(xiàng)的含義可以在雙擊27256芯片后,點(diǎn)擊打開(kāi)的界面中的Help按鈕,
35、查IMJ Proteus 提供的 “ The Memory Model - MEMORY_#1_#2 ” 英文說(shuō)明。4仿真微機(jī)啟動(dòng)過(guò)程真實(shí)的微機(jī)bios要做許多機(jī)器檢測(cè)工作,代碼非常復(fù)雜,本實(shí)驗(yàn)僅僅在硬件結(jié)構(gòu)上模擬這 個(gè)過(guò)程,因此bios的功能裝裝樣子而已,實(shí)現(xiàn)的就就是圖4中所示代碼的功能。點(diǎn)擊即以調(diào)試模式單步運(yùn)行8086。第一次點(diǎn)擊調(diào)試后,請(qǐng)打開(kāi)“ 8086 Registers”觀察窗口,觀察8086當(dāng)前寄存器的值:5此時(shí),CS IP、LA的值分別就是 什么。然后,分別在兩片27256上點(diǎn)擊右鍵 選擇"Memory Contents ”,顯示兩片ROM的內(nèi)容 觀察窗口,可以發(fā)現(xiàn)大部
36、分內(nèi)容為 00,僅有開(kāi)始部分與結(jié)尾部分內(nèi)容有變化,司如果想讓其值 為00的部分都變成FE應(yīng)該如何修改“ bios、asm”,請(qǐng)嘗試修改并觀察。1通過(guò)單步調(diào)試,記錄源程序中每一行代碼執(zhí)行時(shí),“8086 Registers”窗口中顯示的寄存器值:Pc、CS IP、LA、AX、BX CX、DX。7圖4源程序第13行的代碼在“ bios、bin”文件中的首地址為FFF0但裝載到27256芯片后,在其“Memory Contents ”中的首地址為 7FF8這就是為什么?5 實(shí)驗(yàn)驗(yàn)收,然后在掌握實(shí)驗(yàn)內(nèi)容的情先將以上實(shí)驗(yàn)指導(dǎo)內(nèi)容中藍(lán)色部分的問(wèn)題寫在實(shí)驗(yàn)報(bào)告紙上 況下請(qǐng)指導(dǎo)老師驗(yàn)收,并回答指導(dǎo)老師提出的問(wèn)題
37、。6 實(shí)驗(yàn)報(bào)告在實(shí)驗(yàn)報(bào)告紙上回答實(shí)驗(yàn)指導(dǎo)內(nèi)容中的紅字部分。實(shí)驗(yàn)三配置硬件地址及交通燈仿真應(yīng)用1如何確定硬件地址U5圖18086打開(kāi) 8086base、 dsn,圖中已經(jīng)給出一 個(gè)基本的8086硬件系 統(tǒng)淇中74154這部分 就是專門為操作外圍 (擴(kuò)展)硬件而設(shè)計(jì)的 (如圖1)。74154就是一個(gè) 4-16譯碼器(選擇器), 當(dāng)E1、E2都為低電平74154部分的電路設(shè)計(jì)時(shí)工作,工作時(shí),通過(guò)A、B、C、D 選中 015 中某一個(gè)端口 ,選中的 端口對(duì)外呈現(xiàn)低電平 ,未選中的呈現(xiàn)高電平,具體可見(jiàn)其真值表(圖2)。首先明確:8086的內(nèi)存地址為20位,但硬件 地址為16位,1請(qǐng)嘗試從8086base
38、電路圖中觀 察到這一事實(shí)。觀察圖1可知,若要74154工 作,A13A15以及必須為低電平,因此硬件 的有 效地址 范圍為 0000011111,即 0000h1fffh( 2為什么),一共就是8192個(gè)地址(1 為什么)。稍后,我們將瞧到如何將這8192個(gè)地址配置給指定的硬件。2交通燈仿真應(yīng)用利用兩片74273(圖4為74273真值表)與4 組紅2黃LED搭建交通燈仿真電路,并編寫程序 模擬交通燈行為。2、1 設(shè)計(jì)電路圖在8086base的基礎(chǔ)上擴(kuò)展出交通燈仿真電路(擴(kuò)展電路如圖3)。2、2確定硬件控制地址觀察圖3可知,僅當(dāng)面、A0、豆HE、你都為低電平時(shí),兩片74273可將數(shù)據(jù)線上的數(shù)據(jù)
39、AD0、11傳遞到LEDR、11,從而驅(qū)動(dòng)交通燈亮滅,控制交通燈的行為。面 來(lái)自圖1中的74154,因此可以確定若要兩片74273完成數(shù)據(jù)傳遞工作,則硬件地址起碼為 0000001xxxxxxxxx(2為什么);A0就是地址最低位,因此若要連接 A0的74273傳遞數(shù)據(jù),則需要 地址為0000001xxxxxxxx0,而麗信號(hào)就是CPU發(fā)來(lái)的高8位數(shù)據(jù)操作信號(hào),該信號(hào)通常均有 效,因此,與麗E連接的74273也僅需地址為0000001xxxxxxxxx即可傳遞數(shù)據(jù)。綜合兩片74273 的情況可知,若要它們完成數(shù)據(jù)傳遞的工作,需要地址為0000001xxxxxxxx0,我們假設(shè)x為0,則 可以確
40、定交通燈的硬件操作地址為0200h(其實(shí)0200h03feh均可,可在后面的程序設(shè)計(jì)中體驗(yàn)一下,實(shí)際硬件設(shè)計(jì)中不應(yīng)這樣,應(yīng)該嚴(yán)謹(jǐn))。M 口 15A-in: A' I4y?T pa13、AJb14A1,617A- ''18r 6i -匕F12 金 It15wT-JU 1Q203Q405Q6Q774273UI 3 4 5 6 7CDDDD0D T -R LL止止LELELELEIr|2用研 oooooooo ooo0一 OUUJII231000 rQ2Q45花Q7>CLK廂;42P320331 xpio 7 0011 Qo 匕 13 <A013 11 VgN i
41、7 .15 IBDLr 00001LED% L ED9 LIZD10工4rtLH?-GREErikUJwsrnTIM0TI山"目n.IJH,cnOOOc卜gQQOg_L|L_圖3交通燈仿真電路圖MRInputs CLK0nOutputsLXXLH/HHH/LL圖4 74273真值表2、3編程程序如圖5所示。3查閱資料,解釋第8、11、17行的用法及作用。01.rtiodel small1 Qd©lay_chang©:02.3086& U1oop dlay_change03.stackadd si 204.codecmp si, s_end05.startu
42、p«£- -Jj z entry06entry:,jijmp pa日白 片han日白07mov &i , f fset s25OSmov ds, 0200h26.data 9pass_e:hange :n7:南北紅,東西綜10inov blk, si n q £ 0s dw 0000100001100001b11out d筮.己耳29:南北紅,東西黃12mov c;瓦.Offf£h30si dw ODODOlOOOlOlOOOlb13delsy_pass;r T,南北綠,東西紅14loop delay_pets3JZs2 dw OOOOODllO
43、aODllODb15adid si, 21*J -'J二南北黃,東西紅16mov an, si|S3 dw OOOOOOlOiaODIDLOti17out dx, exs_end = $18mov crx, Offffh36end圖5交通燈模擬程序2、4 編譯編譯采用MASM32、BUILD EXE(青根據(jù)實(shí)驗(yàn)一啟行配置編譯環(huán)境)。2、5運(yùn)行設(shè)置好8086的Program File項(xiàng)后,即可運(yùn)行或單步調(diào)試。運(yùn)行時(shí) ,交通燈可能閃爍過(guò)快 可以通過(guò)設(shè)置8086的Clock Frequency項(xiàng)降低8086的運(yùn)行頻率,從而更好的觀瞧交通燈模擬 效果。2、6修改電路圖若要交通燈的硬件控制地址為
44、0a00h,電路圖應(yīng)如何修改。請(qǐng)修改后運(yùn)行(注意別忘了將源程序中硬件控制地址也改成0a00h)。2、7修改程序,貼近實(shí)際情況圖5所示的程序在紅綠黃燈亮?xí)r,延遲時(shí)間都就是一樣的,實(shí)際情況應(yīng)該就是,黃燈延遲時(shí) 間比較短,請(qǐng)修改程序重新編譯,使交通燈運(yùn)行效果更貼近實(shí)際情況。3 實(shí)驗(yàn)驗(yàn)收請(qǐng)將藍(lán)字問(wèn)題寫在實(shí)驗(yàn)報(bào)告紙上。4 實(shí)驗(yàn)報(bào)告請(qǐng)將紅字問(wèn)題寫在實(shí)驗(yàn)報(bào)告紙上。實(shí)驗(yàn)四硬件I/O控制1燈光控制應(yīng)用本次實(shí)驗(yàn)?zāi)M一個(gè)燈光控制應(yīng)用,所需擴(kuò)展電路如圖1。采用八個(gè)開(kāi)關(guān) (:SWITCH)分別控制八個(gè)LED燈(一:LED-RED的亮滅(燈的顏色可以任意選擇,圖例中使用的都就是 LED-REDfe可以混用其它顏色的 LE
45、D燈)。OOOD- _yF.1217DE一科L罹442 U4:BY1I 亡 得血£用為1 g AEC y:人1,一mj m十二)REPACK'0* WB圖1燈光控制應(yīng)用電路擴(kuò)展圖1、1擴(kuò)展電路設(shè)計(jì)分析(1)圖中74273用來(lái)鎖存從D0D1接受至IJ的控制LED燈的信號(hào)淇MR必須接高電平,否則 74273的Q0Q1會(huì)被復(fù)位(僅輸出低信號(hào),這樣當(dāng)CLK有上升沿電平跳變時(shí),D0D1的數(shù)據(jù)可 被鎖存并經(jīng)由 Q0Q1穩(wěn)定率出,從而控制LED等亮滅,1請(qǐng)問(wèn)Q端輸出高電平時(shí),LED燈就是 亮還就是滅,為什么。(2)標(biāo)記為“U2:B”的7427元件 淇輸出給74273的CLK因此它用來(lái)操控就
46、是否將D端數(shù)據(jù)送給Q端以控制LED等亮滅,從其輸入信號(hào) A0J口可瞧出,若要其輸出高電平,則A0,而都 要為低電平,觀察完整電路圖8086base部分,2回答什么樣的地址能使 A0”1都為低電平,這 樣的地址即可作為 LED燈的控制地址。除此之外還需要一個(gè)麗必須為低電平,這個(gè)條件由匯 編指令OUT滿足,當(dāng)CPU執(zhí)行OUT指令時(shí),WR被置為低電平。(3)圖中兩片74LS244為單向三態(tài)8位數(shù)據(jù)緩沖器。它們可將開(kāi)關(guān)閉合的狀態(tài)傳導(dǎo)至數(shù)據(jù) 總線AD0、15,從而被CPU讀取接收。其玩端為低電平時(shí),A端的數(shù)據(jù)才能通過(guò)并由 Y端輸 出。(4)標(biāo)記為“U2:C”的7427,其輸出通過(guò)一個(gè)反門連至兩片74LS
47、244的1舊因此它用來(lái)操控就是否將8個(gè)開(kāi)關(guān)的狀態(tài)送至數(shù)據(jù)總線(由CPU接收)。觀察其輸入信號(hào)可得知,僅當(dāng)A01成都 為低電平時(shí),兩片74LS277的員才能為低電平,請(qǐng)分析,3什么樣的地址能使 A0,質(zhì)者B為低電 平,這樣的地址即可作為開(kāi)關(guān)狀態(tài)的讀取控制地址。除此之外還需要一個(gè)而必須為低電平,這個(gè)條件由匯編指令I(lǐng)N滿足,當(dāng)CPU執(zhí)彳T IN指令時(shí)R5被置為低電平。(5)可見(jiàn)觀察到,圖1中74273與兩片74LS244均與數(shù)據(jù)總線(AD0、15)相連,這樣,CPU 可以通過(guò)數(shù)據(jù)總線讀取到開(kāi)關(guān)的狀態(tài),并根據(jù)這些狀態(tài)將 LED燈控制信號(hào)同樣經(jīng)由數(shù)據(jù)總線送給LED燈。1、2源程序及分析圖2所示代碼中從0
48、6行到11行為一個(gè)無(wú)限循環(huán),循環(huán)中功能為:(1)將控制開(kāi)關(guān)狀態(tài)讀取的地址賦值給dx;(2)使用in指令讀取開(kāi)關(guān)狀態(tài)并存入al;(3)將控制LED等亮滅的地址賦值給 dx;使用out指令將al中存儲(chǔ)的開(kāi)關(guān)狀態(tài)送到LED燈控制地址,從而控制燈的亮滅。01.model small 0in al, d支02.8086口 3mav d笈,0200h03.stack1CIciut dsf, al0411jinp entry05.5tertup12 data06entry:13end07inov dx, 0400h圖2燈光控制應(yīng)用匯編源程序1、3編譯運(yùn)行本次實(shí)驗(yàn)用編譯環(huán)境為 MASM32、BUILD EXE
49、運(yùn)行時(shí)將編譯好的 exe文件指定給8086 芯片的Program File項(xiàng)即可。1、4觀察實(shí)驗(yàn)現(xiàn)象1請(qǐng)單步執(zhí)行,并記錄每次單步時(shí) A0,可、"、瓦、W&的電平狀態(tài)(高電平:紅色,低電 平:藍(lán)色,高阻:灰色),只記錄一輪循環(huán)即可。2連續(xù)運(yùn)行,鼠標(biāo)點(diǎn)擊開(kāi)關(guān)可改變其開(kāi)合狀態(tài),請(qǐng)觀察若要LED燈亮,就是閉合開(kāi)關(guān)還就是斷開(kāi)開(kāi)關(guān),3若要反過(guò)來(lái),電路應(yīng)如何改造,并改造電路。2 實(shí)驗(yàn)驗(yàn)收請(qǐng)將藍(lán)字問(wèn)題寫在實(shí)驗(yàn)報(bào)告紙上。3 實(shí)驗(yàn)報(bào)告請(qǐng)將紅字問(wèn)題寫在實(shí)驗(yàn)報(bào)告紙上。接口芯片應(yīng)用1 接口芯片的作用在實(shí)驗(yàn)四中,為了使八個(gè)開(kāi)關(guān)分別控制八個(gè)LED燈,使用了 1片74273、2片74244、2片7427 以
50、及一些輔助元件,電路圖較為復(fù)雜,設(shè)計(jì)效率不高。本次實(shí)驗(yàn)還就是利用八個(gè)開(kāi)關(guān)控制八個(gè)LED燈,但使用8255可編程并行接口芯片來(lái)完成設(shè)計(jì)。電路圖如圖1,與實(shí)驗(yàn)四的電路圖相比 ,應(yīng)用8255 芯片后 ,電路圖簡(jiǎn)潔了許多,實(shí)驗(yàn)四中使用的74273、 74244、 7427 等元件的功能由一片 8255 完全替代 ,提高了電路設(shè)計(jì)的效率,也更利于成品的小型化,低成本化。2 8255 可編程并行接口芯片簡(jiǎn)介2、1連接CPU數(shù)據(jù)總線的數(shù)據(jù)端口8255擁有一組與CPU進(jìn)行數(shù)據(jù)交互的連接到數(shù)據(jù)總線的8位端口。2、 2 連接外部設(shè)備的數(shù)據(jù)端口8255 擁有 PA 口、 PB 口、PC 口三個(gè)8 位數(shù)據(jù)端口,用于連接到外部設(shè)備。這三組端口可做輸入從外部設(shè)備(如本次實(shí)3的開(kāi)關(guān))獲取數(shù)據(jù)到CPU也可做輸出傳送 CPU數(shù)據(jù)到外部設(shè) 備(如本次實(shí)驗(yàn)的LED燈),但注意,對(duì)于某個(gè)端口而言,不能同時(shí)做輸出、輸入。至于哪些端口 用于輸出,那些端口用于輸入,需要寫程序進(jìn)行設(shè)置。2、 3 設(shè)置數(shù)據(jù)端口工作狀態(tài)使用 8255 時(shí) ,需要先將8255 的三個(gè)數(shù)據(jù)端口設(shè)置為輸入或輸出。這個(gè)設(shè)置就是通過(guò)向8255 的控制字寫入規(guī)定格式的數(shù)據(jù)實(shí)現(xiàn)的。在8255 上有 A1 、 A0 兩個(gè)控制端口 ,當(dāng)這兩個(gè)端口
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 園藝陶瓷的節(jié)能技術(shù)改進(jìn)考核試卷
- 第9課《古代科技 耀我中華》 第3課時(shí)(教學(xué)設(shè)計(jì))-部編版道德與法治五年級(jí)上冊(cè)
- 青少年文學(xué)社團(tuán)寫作訓(xùn)練計(jì)劃
- 車間管理與生產(chǎn)效率的提升計(jì)劃
- 班級(jí)心理輔導(dǎo)活動(dòng)的開(kāi)展計(jì)劃
- 提升信息技術(shù)行業(yè)安全保障計(jì)劃
- 《材料分析測(cè)試方法(理論)》課程教學(xué)大綱
- 加強(qiáng)師生互動(dòng)的教學(xué)活動(dòng)安排計(jì)劃
- 中醫(yī)如何調(diào)理脾胃功能
- 人教版小學(xué)五年級(jí)語(yǔ)文下冊(cè)2024-2025學(xué)年度第二學(xué)期期末質(zhì)量檢測(cè)試卷
- 2024年安徽省宣城市皖東南四校尖子生中考數(shù)學(xué)對(duì)抗賽試卷
- 麥肯錫-化工企業(yè)卓越運(yùn)營(yíng)材料Chemical ops summary-v520150301
- 2024年廣西中考英語(yǔ)試卷真題(含答案)
- 2024年華能三峽組建雅江開(kāi)發(fā)集團(tuán)招聘筆試沖刺題(帶答案解析)
- 醫(yī)療器械委托生產(chǎn)控制程序
- 法院電子卷宗制度
- 光伏發(fā)電施工勞務(wù)分包合同模板
- CRRT治療原理、模式選擇
- 成都市2024屆高中畢業(yè)班第二次診斷性監(jiān)測(cè)-2024年全國(guó)各地高考語(yǔ)文模擬卷作文導(dǎo)寫講練
- 醫(yī)保統(tǒng)計(jì)信息管理制度
- 達(dá)格列凈治療心衰機(jī)制
評(píng)論
0/150
提交評(píng)論