實驗二 找出80868088指令系統(tǒng)所有指令的操作碼的編碼_第1頁
實驗二 找出80868088指令系統(tǒng)所有指令的操作碼的編碼_第2頁
實驗二 找出80868088指令系統(tǒng)所有指令的操作碼的編碼_第3頁
實驗二 找出80868088指令系統(tǒng)所有指令的操作碼的編碼_第4頁
實驗二 找出80868088指令系統(tǒng)所有指令的操作碼的編碼_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗報告實驗日期: 2012 年 12 月 08 日學 號:姓 名:實驗名稱:實驗二找出8086/8088指令系統(tǒng)所有指令的操作碼的編碼總 分:一、實驗?zāi)康?利用debug工具的e和u功能找出8086/8088指令系統(tǒng)的指令格式中各種操作碼編碼對應(yīng)的指令功能。二、實驗內(nèi)容(第一回合)一、用試探法-e 100 00 00 00 00 00 00(e 100.表示從100號單元開始編寫內(nèi)容)(我們將第26字節(jié)全部固定為00)-u 100 105 (u 100 105表示將100105號單元共6個字節(jié)反匯編出來,(所謂“反匯編”就是把機器碼還原成匯編語句)0AE9:0100 0000 ADD BX+

2、SI,AL0AE9:0102 0000 ADD BX+SI,AL0AE9:0104 0000 ADD BX+SI,AL結(jié)論:操作碼字節(jié)前六位為000000(二進制)看來是一條ADD指令,而且只占兩個字節(jié)。記下來: 指令碼 匯編指令 - 0AE9:0100 0000 ADD BX+SI,AL二、將指令首字節(jié)變?yōu)?1,重復(fù)以上實驗-e 100 01 00-u 100 1010AE9:0100 0100 ADD BX+SI,AX結(jié)論:第1字節(jié)由00(二進制0000 0000)變?yōu)?1(二進制0000 0001), ADD指令的第二個操作數(shù)由AL變?yōu)榱薃X。AL為8位寄存器、AX為16位寄存器,印證了

3、W字段的作用,增加一條有用的記錄: 指令碼 匯編指令 - 0AE9:0100 0000 ADD BX+SI,AL 0AE9:0100 0100 ADD BX+SI,AX三、將指令首字節(jié)變?yōu)?2,重復(fù)以上實驗-e 100 02 00-u 100 1010AE9:0100 0200 ADD AL,BX+SI 第1字節(jié)由00(二進制0000 0000)變?yōu)?2(二進制0000 0010),ADD 操作的傳送方向發(fā)生轉(zhuǎn)變,印證了D字段的作用。增加一條記錄: 指令碼 匯編指令-0AE9:0100 0000 ADD BX+SI,AL0AE9:0100 0100 ADD BX+SI,AX0AE9:0100

4、0200 ADD AL,BX+SI再來,變?yōu)?3,-e 100 03 00-u 100 1010AE9:0100 0300 ADD AX,BX+SI D和W同時變化,記下: 指令碼 匯編指令-0AE9:0100 0000 ADD BX+SI,AL0AE9:0100 0100 ADD BX+SI,AX0AE9:0100 0200 ADD AL,BX+SI0AE9:0100 0300 ADD AX,BX+SI(第二回合)一、首字節(jié)為0407,繼續(xù)實驗-e 100 04 00 00 00 00 00(e 100.表示從100號單元開始編寫內(nèi)容)-u 100 105 (u 100 105表示將1001

5、05號單元共6個字節(jié)反匯編出來,(所謂“反匯編”就是把機器碼還原成匯編語句)0AE9:0100 0400 ADD AL,000AE9:0102 0000 ADD BX+SI,AL0AE9:0104 0000 ADD BX+SI,AL-e 100 05 00-u 100 1010AE9:0100 050000 ADD AX,0000-e 100 06-u 100 1010AE9:0100 06 PUSH ES0AE9:0101 0000 ADD BX+SI,AL-e 100 07-u 100 1010AE9:0100 07 POP ES0AE9:0101 0000 ADD BX+SI,AL- 得

6、到四條新的記錄,出現(xiàn)了第1個3字節(jié)指令050000(ADD AX,0000),還捕獲了兩條新的單字節(jié)指令: 指令碼 匯編指令-0AE9:0100 0000 ADD BX+SI,AL0AE9:0100 0100 ADD BX+SI,AX0AE9:0100 0200 ADD AL,BX+SI0AE9:0100 0300 ADD AX,BX+SI0AE9:0100 0400 ADD AL,000AE9:0100 050000 ADD AX,00000AE9:0100 06 PUSH ES0AE9:0100 07 POP ES二、080b,繼續(xù)-e100 08 00 00 00 00 00-u 100

7、 1010AE9:0100 0800 OR BX+SI,AL-e 100 09-u 100 1010AE9:0100 0900 OR BX+SI,AX-e 100 0a-u 100 1010AE9:0100 0A00 OR AL,BX+SI-e 100 0b-u 100 1010AE9:0100 0B00 OR AX,BX+SI- 是四條OR指令: 指令碼 匯編指令-0AE9:0100 0000 ADD BX+SI,AL0AE9:0100 0100 ADD BX+SI,AX0AE9:0100 0200 ADD AL,BX+SI0AE9:0100 0300 ADD AX,BX+SI0AE9:01

8、00 0400 ADD AL,000AE9:0100 050000 ADD AX,00000AE9:0100 06 PUSH ES0AE9:0100 07 POP ES0AE9:0100 0800 OR BX+SI,AL0AE9:0100 0900 OR BX+SI,AX0AE9:0100 0A00 OR AL,BX+SI0AE9:0100 0B00 OR AX,BX+SI(手工操作效率太低,是不是?該換一種方法了)三、退出-qD:>(第三回合)一、用in1.txt生成out1.txt原理:用DOS的輸入/輸出重定向功能,讓debug自動執(zhí)行一批命令。編寫文件in.txt,內(nèi)容如下,可以

9、用記事本,注意存放的路徑是你啟動和退出debug時的那個目錄(以D:為例)。1、編寫in1.txt先寫一個短的試試看,點擊“開始->程序->附件->記事本”,打開記事本,輸入:e100 0c 00 00 00 00 00u 100 101q注意最后一行q后面要回車,保存文件為d:in1.txt2、打開命令提示符窗口鼠標單擊“開始”,在“搜索欄”中輸入“cmd”,打開DOS(其實是虛擬DOS)窗口,Microsoft Windows 2000 Version 5.00.2195(C) 版權(quán)所有 1985-2000 Microsoft Corp.D:>3、輸入以下命令回車執(zhí)

10、行D:>debug <in1.txt >out1.txtD:>4、核實out1.txt文件的內(nèi)容在此目錄下生成了一個out1.txt文件,內(nèi)容如下:-e 100 0c 00 00 00 00 00-u 100 1010AE9:0100 0C00 ORAL,00 -q 5、將out1.txt中的新操作碼加入指令表。首字節(jié)為0c的指令是一條OR指令: 指令碼 匯編指令-0AE9:0100 0000 ADD BX+SI,AL0AE9:0100 0100 ADD BX+SI,AX0AE9:0100 0200 ADD AL,BX+SI0AE9:0100 0300 ADD AX,B

11、X+SI0AE9:0100 0400 ADD AL,000AE9:0100 050000 ADD AX,00000AE9:0100 06 PUSH ES0AE9:0100 07 POP ES0AE9:0100 0800 OR BX+SI,AL0AE9:0100 0900 OR BX+SI,AX0AE9:0100 0A00 OR AL,BX+SI0AE9:0100 0B00 OR AX,BX+SI0AE9:0100 0C00 ORAL,00 二、用in2.txt生成out2.txt好了,可以寫長一點的in.txt來實驗了,以下內(nèi)容存為in2.txt。e 100 0d 00 00 00 00 00

12、u 100 101e 100 0e 00 00 00 00 00u 100 101e 100 0f 00 00 00 00 00u 100 101q在命令提示符窗口輸入命令回車執(zhí)行D:>debug <in2.txt >out2.txtD:>生成了out2.txt文件,內(nèi)容為:-e100 0d 00 00 00 00 00-u 100 1010AE9:0100 0D0000 ORAX,0000 -e100 0e 00 00 00 00 00-u 100 1010AE9:0100 0E PUSHCS 0AE9:0101 0000 ADDBX+SI,AL -e100 0f 0

13、0 00 00 00 00-u 100 1010AE9:0100 0F DB0F 0AE9:0101 0000 ADDBX+SI,AL -q 這一次收獲了三條新的記錄: 指令碼 匯編指令-0AE9:0100 0000 ADD BX+SI,AL0AE9:0100 0100 ADD BX+SI,AX0AE9:0100 0200 ADD AL,BX+SI0AE9:0100 0300 ADD AX,BX+SI0AE9:0100 0400 ADD AL,000AE9:0100 050000 ADD AX,00000AE9:0100 06 PUSH ES0AE9:0100 07 POP ES0AE9:01

14、00 0800 OR BX+SI,AL0AE9:0100 0900 OR BX+SI,AX0AE9:0100 0A00 OR AL,BX+SI0AE9:0100 0B00 OR AX,BX+SI0AE9:0100 0C00 ORAL,00 0AE9:0100 0D0000 ORAX,0000 0AE9:0100 0E PUSHCS 0AE9:0100 0F DB0F 好了,到這里你該明白我的意思了吧,讓你的in3.txt文件覆蓋指令碼的首字節(jié)從10到FF,就可以一次得到其余的操作碼編碼的記錄了。三、實驗報告把所有256條記錄排列出來,并加以分析總結(jié),形成你的關(guān)于8086/8088指令系統(tǒng)操作碼

15、編碼方法的實驗報告,看誰的分析更完整正確簡潔而條理清晰。經(jīng)過分析匯總可得指令集操作碼如下AAA00110111AAM10110100AAS00111111AAD10110101ADC0001000001010ADD0000000000010100000AND0010000010010CALL1001101011101000CBW10011000CLC11111000CLD11111100CLI11111011CMC11110101CMP0011100011110CMPSB10100110CMPSW10100111CS00101110CWD10011001DA00101111DAA0010011

16、1DB 000011110110101101101111000110101001010000DEC01001DS:00111110ES:00100110FADD1011100010111100FIADD1011101010111110FILD1011101110111111FLD1011100110111101HLT11110100IN1110110INC010001111111INTO10101110JA01110111JB01110010JBE01110110JCXZ11100011JGE0111110101111111JL01111100JLE01111110JNB01110011JNO

17、01110001JNS01111001JO01110000JPE01111010JPO01111011JS01111000JZ01110100LAHF10011111LDS10100101LEA10001011LES10100100LOCK11110000LODSB10101100LODSW10101101LOOP11100010LOOPNZ11100000LOOPZ11100001MOV100010100010101000110010100010111010011MOVSB10100100MOVSW10100101NOP10010000OR0000100000110OUT1110011111

18、0111POP0000011100010111000111110101110001111POPF10011101PUSH0000011000001110000101100001111001010PUSHF10011100REPNZ11110010REPZ11110011RET1010001RETF1010101ROL101100SAHF10011110SBB0001100001110SCASB10101110SCASW10101111SS:00110110STC1111100111111010STD11111101STOSB10101010STOSW10101011SUB0010100010110TEST100001010101001111011WAIT10011011XCHG100001110010XLAT10110111XOR0011000011010分析:可以看出8086指令集的指令操作碼極規(guī)整,操作碼位數(shù)不定長,而且一條指令可以有多個操作碼。分類:數(shù)據(jù)傳送指令 MOV,XCHG,PUSH,POP,PUSHF,POPF,PUSHA,POPA,LEA,LDS,LES XLAT(XLATB) 算術(shù)運算指令 ADD,ADC,SUB,SBB,INC,DEC,NEG,MUL,IMUL,DIV,IDIV,CBW,CWD,AAA,AAS,AAM,AAD

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論