版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p><b> 一、軟件啟動(dòng)1</b></p><p><b> 二、程序代碼2</b></p><p><b> 1、數(shù)值計(jì)算2</b></p><p> (1)十進(jìn)制系統(tǒng)2</
2、p><p><b> 2、邏輯運(yùn)算5</b></p><p> ?。?)與運(yùn)算(AND)5</p><p> ?。?)或運(yùn)算(OR)5</p><p> ?。?)異或運(yùn)算(XOR)5</p><p><b> 4、宏8</b></p><p>
3、;<b> 三、鳴謝10</b></p><p> Emu8086的應(yīng)用分析</p><p> 摘要:Emu8086是一個(gè)可在Windows 環(huán)境下運(yùn)行的8086CPU匯編仿真軟件。它集成了文本編輯器、編譯器、反編譯器、真調(diào)試、虛擬設(shè)備和驅(qū)動(dòng)器為一體,并具有在線使用指南,這對(duì)剛開(kāi)始學(xué)習(xí)匯編語(yǔ)言的人是一個(gè)很有用的工具。您可以在真器中單步或連續(xù)執(zhí)行程序,其可視化的
4、工作環(huán)境讓使用者操作更容易。您可以在程序執(zhí)行中動(dòng)態(tài)觀察各寄存器、標(biāo)記位以及存儲(chǔ)器中的變化情況。仿真器會(huì)在模擬的PC中執(zhí)行程序,以避免程序運(yùn)行時(shí)到實(shí)際的硬盤(pán)或內(nèi)存中存取數(shù)據(jù)。此外,該軟件完全兼容Intel新一代處理器,包括了PentiumⅢ、Pentium4的指令。</p><p> 關(guān)鍵詞:Emu8086 微機(jī)原理 程序 文件</p><p><b> 一、軟件啟動(dòng)&l
5、t;/b></p><p> 雙擊進(jìn)入啟動(dòng)界面如圖1所示,用戶(hù)可以選擇新建文本、程序示例、快速啟動(dòng)指南、最近使用文檔。</p><p><b> 圖1 啟動(dòng)界面</b></p><p> Emu8086軟件提供的實(shí)例中包含了幾十種典型的程序代碼,其中包括:數(shù)值計(jì)算、邏輯運(yùn)算、屏幕顯示、鍵盤(pán)輸入、文件打印、馬達(dá)控制、溫度控制、交通燈
6、控制等。在軟件提供的快速指南中提供了多種在線幫助工具,包括:文件索引、8086CUP指令使用指南、系統(tǒng)中斷調(diào)用列表以及用法等。用戶(hù)可以通過(guò)該工具快速地掌握8086CPU指令體系和emu8086匯編真軟件的使用。程序編輯結(jié)束后,點(diǎn)擊模擬,即可進(jìn)入模擬狀態(tài) :</p><p> 點(diǎn)擊運(yùn)行之后即可用屏幕模擬器進(jìn)行模擬,如</p><p><b> :</b></p
7、><p><b> 二、程序代碼</b></p><p><b> 1、數(shù)值計(jì)算</b></p><p><b> (1)十進(jìn)制系統(tǒng)</b></p><p> 目前使用最多的是十進(jìn)制。十進(jìn)制系統(tǒng)有10個(gè)數(shù)字0,1,2,3,4,5,6,7,8,9。利用這些數(shù)字能表示任何數(shù)值,
8、例如754這些數(shù)字是由每一位數(shù)字乘以“基數(shù)”的冪累加而成的(上一個(gè)例子中基數(shù)是10 因?yàn)槭M(jìn)制中有十個(gè)數(shù)字)。</p><p> 位置對(duì)于每一個(gè)數(shù)字是很重要的。例如,你將上一個(gè)例子中的“7”放到結(jié)尾:547數(shù)值就成為:</p><p> 特別提醒:任何數(shù)字的0次冪都是1,0的0次冪也是1</p><p> (二)二進(jìn)制 計(jì)算機(jī)沒(méi)有人類(lèi)聰明(至少現(xiàn)
9、在是這樣),制造一個(gè)只有開(kāi)關(guān)或者稱(chēng)為 0,1 兩種狀態(tài)的電子機(jī)器很容易。計(jì)算機(jī)使用二進(jìn)制系統(tǒng),只有兩個(gè)數(shù)字 0, 1基地為2每一位二進(jìn)制數(shù)稱(chēng)作一位(BIT),4 BIT 組成一個(gè)半字節(jié)(NIBBLE),8BIT組成一個(gè)字節(jié)(BYTE),兩個(gè)字節(jié)組成一個(gè)字(WORD),兩個(gè)字組成一個(gè)雙字(DOUBLE WORD)(很少使用): 習(xí)慣上在一串二進(jìn)制后面加上“b”,這樣,我們可以知道101b是二進(jìn)制表示十進(jìn)制的5。二進(jìn)制101001
10、01b表示十進(jìn)制的165,計(jì)算方法如下:</p><p> ?。ㄈ┦M(jìn)制系統(tǒng) 十六進(jìn)制系統(tǒng)使用16個(gè)數(shù)字0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F基底是 16. 十六進(jìn)制非常緊湊,便于閱讀。將二進(jìn)制轉(zhuǎn)換為十六進(jìn)制很容易,半字節(jié)(4bits) 對(duì)應(yīng)一位十六進(jìn)制如下表</p><p> 習(xí)慣上我們?cè)谝粋€(gè)十六進(jìn)制數(shù)的后面加上 &q
11、uot;H",以便和其他進(jìn)制區(qū)別, 這樣我們就知道 5Fh是一個(gè)十六進(jìn)制數(shù)表示十進(jìn)制的 95。習(xí)慣上,我們也在以字母開(kāi)頭(從A到F)的十六進(jìn)制數(shù)前面 加上"0" 例如: 0E120h. 十六進(jìn)制 1234h 等于 4660:</p><p><b> 2、邏輯運(yùn)算</b></p><p> ?。?)與運(yùn)算(AN
12、D)</p><p> AND - 兩個(gè)操作數(shù)各個(gè)位邏輯與運(yùn)算。運(yùn)算法則如下</p><p> 1 AND 1 = 1 1 AND 0 = 0 0 AND 1 = 0 0 AND 0 = 0</p><p> 只有當(dāng)兩個(gè)操作數(shù)都是1時(shí),運(yùn)算結(jié)果才是1。</p><p> ?。?)或運(yùn)算(OR)&l
13、t;/p><p> OR -- 兩個(gè)操作數(shù)各個(gè)位邏輯或運(yùn)算。運(yùn)算法則如下</p><p> 1 OR 1 = 1 1 OR 0 = 1 0 OR 1 = 1 0 OR 0 = 0</p><p> 如果操作數(shù)中有1那么結(jié)果一定是1。 </p><p> ?。?)異或運(yùn)算(XOR)</p>
14、<p> XOR - 兩個(gè)操作數(shù)各個(gè)位邏輯異或運(yùn)算。運(yùn)算法則如下</p><p> 1 XOR 1 = 0 1 XOR 0 = 1</p><p> 0 XOR 1 = 1 0 XOR 0 = 0</p><p> 3、堆棧 堆棧是內(nèi)存中用于保存臨時(shí)數(shù)據(jù)的一片區(qū)域.當(dāng)使用CALL指令時(shí),堆棧用于保
15、存過(guò)程的返回地址,RET指令能夠從堆棧中取得該地址并使程序返回到那里。當(dāng)使用INT指令,發(fā)生的也與此類(lèi)似。 堆棧保存標(biāo)志寄存器,代碼段和偏移量。IRET指令用來(lái)從中斷返回。 我們同樣可以使用堆棧保存任何數(shù)據(jù)。對(duì)于堆棧的操作只有兩條:PUSH - 將16位數(shù)值壓入堆棧. POP - 將16位數(shù)值從堆棧中彈出</p><p> 注意: PUSH and POP 都只操作16位數(shù)據(jù)!</p>
16、;<p> 注意:在80186其極以后的CPU中才能使用 PUSH 立即數(shù)這樣的指令堆棧使用LIFO(后進(jìn)先出)算法,意思是:加入我們按照如下順序壓入數(shù)值: 1, 2, 3, 4, 5再使用POP指令彈出,結(jié)果將是 5 4 3 2 1</p><p> 注意:有多少條PUSH指令就要對(duì)應(yīng)有多少條POP指令,否則堆棧會(huì)被占用,無(wú)法正確返回操作系統(tǒng)。前面講過(guò)使用RET指令返回操作系統(tǒng),所以在程序
17、開(kāi)始時(shí)會(huì)將返回地址壓入堆棧(通常都是0000h)I PUSH 和 POP指令在我們寄存器不夠用的時(shí)侯特別有用,我們有如下技巧:將寄存器原始數(shù)值存入堆棧(使用 PUSH)使用寄存器從堆棧中彈出寄存器原先數(shù)值再放入寄存器(使用POP) 下面是一個(gè)例子: </p><p> 堆棧的另外一個(gè)作用是交換數(shù)值,下面是一個(gè)這樣的例子:</p><p> 之所以能這樣是因?yàn)槎褩J怯肔IFO(
18、后進(jìn)先出)算法,當(dāng)我們壓入1212h和3434h之后,使用pop彈出我們首先得到的是3434h然后才是1212h。</p><p> 堆棧的內(nèi)存區(qū)域由SS寄存器(堆棧段),SP寄存器(棧指針)設(shè)置設(shè)置。一般來(lái)說(shuō)操作系統(tǒng)在程序開(kāi)始時(shí)會(huì)設(shè)置這些。 "PUSH 源" 指令做如下工作:</p><p> 將SP寄存器減 2 將源的值寫(xiě)入內(nèi)存SS:SP地址處
19、 "POP 目的" 指令做如下工作:</p><p> 內(nèi)存SS:SP地址處數(shù)值寫(xiě)入目的 將SP寄存器加2 由 SS:SP 指出的地址稱(chēng)作堆棧頂 對(duì)于COM文件,堆棧段通常就是代碼段,堆棧指針設(shè)置為0FFFEh.在地址SS:0FFFEh處存放程序結(jié)束時(shí)RET指令返回地址。你可以點(diǎn)擊[stack]按鈕直接觀察堆棧操作。堆棧頂由“<”符號(hào)標(biāo)記。<
20、;/p><p><b> 4、宏 </b></p><p> 宏與過(guò)程很相似,但并不是完全相似。宏看起來(lái)像過(guò)程,但是當(dāng)你的代碼編譯完成之后就消失了,取而代之的是真正的代碼。如果你聲明一個(gè)宏,而在代碼中從來(lái)沒(méi)有調(diào)用,編譯器在編譯過(guò)程中將忽略它。</p><p> 與過(guò)程不同,宏要求定義參數(shù)并使用。例如: </p><p>
21、; 上述代碼在編譯過(guò)程中將展開(kāi)成:</p><p> MOV AX, 00001hMOV BX, 00002hMOV CX, 00003hMOV AX, 00004hMOV BX, 00005hMOV CX, DX</p><p> 宏會(huì)直接在代碼中展開(kāi),因此,如果你在宏中使用標(biāo)記,當(dāng)宏被調(diào)用2次或兩次以上的時(shí)侯就會(huì)出現(xiàn)"Duplicate declaration
22、"(重復(fù)定義) 這一錯(cuò)誤。為了避免該錯(cuò)誤在變量,標(biāo)記或者過(guò)程名稱(chēng)之前加上“l(fā)ocal”指令。例如:</p><p> 微機(jī)的最基礎(chǔ)語(yǔ)言——匯編語(yǔ)言,是計(jì)算機(jī)最基礎(chǔ)的語(yǔ)言 。然而越基礎(chǔ)的東西越重要,因此它在重大的編程項(xiàng)目中應(yīng)用的最為廣泛。就我個(gè)人理解,匯編是對(duì)寄存器的地址,以及數(shù)據(jù)單元進(jìn)行最直接的修改。而在某些時(shí)候,這種方法是的最有效,也是最可靠的。但是它也有缺點(diǎn),最重要的一點(diǎn)就是它本身較為復(fù)雜:對(duì)某個(gè)
23、數(shù)據(jù)進(jìn)行修改時(shí),本來(lái)很簡(jiǎn)單一個(gè)操作會(huì)用比較煩瑣的語(yǔ)句來(lái)解決,而這些語(yǔ)句本身在執(zhí)行和操作的過(guò)程中,占用大量的時(shí)間和成本。因此,在一些講求效率的場(chǎng)合,這種語(yǔ)言并不可取,所以可以適當(dāng)對(duì)它進(jìn)行取舍。掌握匯編語(yǔ)言對(duì)以后其他語(yǔ)言的學(xué)習(xí)有極大的幫助和促進(jìn)作用。通過(guò)該課程的學(xué)習(xí),基本上對(duì)微型計(jì)算機(jī)原理與接口技術(shù)有了一定的了解,對(duì)整個(gè)內(nèi)容感覺(jué)還是比較晦澀難懂。但是對(duì)于其學(xué)習(xí)方法還是有一定的掌握。</p><p> EMU8086
24、 的工作界面很簡(jiǎn)潔,它能模擬真實(shí)微處理器工作的每一步驟,通過(guò)單步調(diào)試顯示指令執(zhí)行后 CPU 內(nèi)部寄存器、存儲(chǔ)器、堆棧、變量和標(biāo)志寄存器的當(dāng)前值,操作簡(jiǎn)單直觀,通過(guò)它我們可以很快掌握匯編程序設(shè)計(jì)和接口技術(shù)等知識(shí)。在實(shí)驗(yàn)過(guò)程中也是我們學(xué)習(xí)到了很多知識(shí),很多課堂上不是很了解的知識(shí)也得到了清晰地理解。與實(shí)驗(yàn)室里的星研比較,EMU8086有著很大的優(yōu)勢(shì),在編譯、運(yùn)行的步驟上尤為簡(jiǎn)單。</p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì) -- 基于8086彩燈控制器的設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì) -- 基于8086彩燈控制器的設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì) -- 基于8086彩燈控制器的設(shè)計(jì).doc
- 微機(jī)原理與接口技術(shù)-8086cpu小鍵盤(pán)課程設(shè)計(jì)
- 微機(jī)課程設(shè)計(jì)8086控制的循環(huán)彩燈報(bào)告
- 微機(jī)原理課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)報(bào)告
- 微機(jī)原理課程設(shè)計(jì).rar
- 微機(jī)原理課程設(shè)計(jì)報(bào)告
- 2017微機(jī)原理課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì).rar
- 微機(jī)原理課程設(shè)計(jì).rar
- 微機(jī)原理課程設(shè)計(jì).rar
- 微機(jī)原理課程設(shè)計(jì)報(bào)告
- 《微機(jī)原理》課程設(shè)計(jì)報(bào)告
- 微機(jī)原理課程設(shè)計(jì)報(bào)告
- 微機(jī)原理課程設(shè)計(jì)課程設(shè)計(jì)----微機(jī)內(nèi)存擴(kuò)充卡
- 微機(jī)原理課程設(shè)計(jì)課程設(shè)計(jì)----微機(jī)內(nèi)存擴(kuò)充卡
- 微機(jī)原理串口通信課程設(shè)計(jì)
- 微機(jī)原理電子秒表課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論