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