实验二 找出80868088指令系统所有指令操作码编码_第1页
实验二 找出80868088指令系统所有指令操作码编码_第2页
实验二 找出80868088指令系统所有指令操作码编码_第3页
实验二 找出80868088指令系统所有指令操作码编码_第4页
实验二 找出80868088指令系统所有指令操作码编码_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告实验日期: 2012 年 12 月 08 日学 号:姓 名:实验名称:实验二找出8086/8088指令系统所有指令的操作码的编码总 分:一、实验目的 利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作码编码对应的指令功能。二、实验内容(第一回合)一、用试探法-e 100 00 00 00 00 00 00(e 100.表示从100号单元开始编写内容)(我们将第26字节全部固定为00)-u 100 105 (u 100 105表示将100105号单元共6个字节反汇编出来,(所谓“反汇编”就是把机器码还原成汇编语句)0AE9:0100 0000 ADD BX+

2、SI,AL0AE9:0102 0000 ADD BX+SI,AL0AE9:0104 0000 ADD BX+SI,AL结论:操作码字节前六位为000000(二进制)看来是一条ADD指令,而且只占两个字节。记下来: 指令码 汇编指令 - 0AE9:0100 0000 ADD BX+SI,AL二、将指令首字节变为01,重复以上实验-e 100 01 00-u 100 1010AE9:0100 0100 ADD BX+SI,AX结论:第1字节由00(二进制0000 0000)变为01(二进制0000 0001), ADD指令的第二个操作数由AL变为了AX。AL为8位寄存器、AX为16位寄存器,印证了

3、W字段的作用,增加一条有用的记录: 指令码 汇编指令 - 0AE9:0100 0000 ADD BX+SI,AL 0AE9:0100 0100 ADD BX+SI,AX三、将指令首字节变为02,重复以上实验-e 100 02 00-u 100 1010AE9:0100 0200 ADD AL,BX+SI 第1字节由00(二进制0000 0000)变为02(二进制0000 0010),ADD 操作的传送方向发生转变,印证了D字段的作用。增加一条记录: 指令码 汇编指令-0AE9:0100 0000 ADD BX+SI,AL0AE9:0100 0100 ADD BX+SI,AX0AE9:0100

4、0200 ADD AL,BX+SI再来,变为03,-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(第二回合)一、首字节为0407,继续实验-e 100 04 00 00 00 00 00(e 100.表示从100号单元开始编写内容)-u 100 105 (u 100 105表示将1001

5、05号单元共6个字节反汇编出来,(所谓“反汇编”就是把机器码还原成汇编语句)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、到四条新的记录,出现了第1个3字节指令050000(ADD AX,0000),还捕获了两条新的单字节指令: 指令码 汇编指令-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,继续-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自动执行一批命令。编写文件in.txt,内容如下,可以用记事本

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) 版权所有 1985-2000 Microsoft Corp.D:3、输入以下命令回车执行D:debug out1.txtD:4

10、、核实out1.txt文件的内容在此目录下生成了一个out1.txt文件,内容如下:-e 100 0c 00 00 00 00 00-u 100 1010AE9:0100 0C00 ORAL,00 -q 5、将out1.txt中的新操作码加入指令表。首字节为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,BX+SI0AE9:0100 0400 ADD AL,000AE9:0100 050000

11、 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来实验了,以下内容存为in2.txt。e 100 0d 00 00 00 00 00u 100 101e 100 0e 00 00 00 00 00u 100 101e 1

12、00 0f 00 00 00 00 00u 100 101q在命令提示符窗口输入命令回车执行D:debug out2.txtD:生成了out2.txt文件,内容为:-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 00 00 00 00 00-u 100 1010AE9:0100 0F DB0F 0AE9:0101 0000 ADDBX+SI,AL

13、-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:0100 0800 OR BX+SI,AL0AE9:0100 0900 OR BX+SI,AX0AE9:0100 0A00 OR AL,BX

14、+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文件覆盖指令码的首字节从10到FF,就可以一次得到其余的操作码编码的记录了。三、实验报告把所有256条记录排列出来,并加以分析总结,形成你的关于8086/8088指令系统操作码编码方法的实验报告,看谁的分析更完整正确简洁而条理清晰。经过分析汇总可得指令集操作码如下AAA00110111AAM10110100AA

15、S00111111AAD10110101ADC0001000001010ADD0000000000010100000AND0010000010010CALL1001101011101000CBW10011000CLC11111000CLD11111100CLI11111011CMC11110101CMP0011100011110CMPSB10100110CMPSW10100111CS00101110CWD10011001DA00101111DAA00100111DB 000011110110101101101111000110101001010000DEC01001DS:00111110ES:

16、00100110FADD1011100010111100FIADD1011101010111110FILD1011101110111111FLD1011100110111101HLT11110100IN1110110INC010001111111INTO10101110JA01110111JB01110010JBE01110110JCXZ11100011JGE0111110101111111JL01111100JLE01111110JNB01110011JNO01110001JNS01111001JO01110000JPE01111010JPO01111011JS01111000JZ01110

17、100LAHF10011111LDS10100101LEA10001011LES10100100LOCK11110000LODSB10101100LODSW10101101LOOP11100010LOOPNZ11100000LOOPZ11100001MOV100010100010101000110010100010111010011MOVSB10100100MOVSW10100101NOP10010000OR0000100000110OUT11100111110111POP0000011100010111000111110101110001111POPF10011101PUSH00000110

18、00001110000101100001111001010PUSHF10011100REPNZ11110010REPZ11110011RET1010001RETF1010101ROL101100SAHF10011110SBB0001100001110SCASB10101110SCASW10101111SS:00110110STC1111100111111010STD11111101STOSB10101010STOSW10101011SUB0010100010110TEST100001010101001111011WAIT10011011XCHG100001110010XLAT10110111XOR0011000011010分析:可以看出8086指令集的指令操作码极规整,操作码位数不定长,而且一条指令可以有多个操作码。分类:数据传送指令 MOV,XCHG,PUSH,POP,PUSHF,POPF,PUSHA,POPA,LEA,LDS,LES XLAT(XLATB) 算术运算指令 ADD,ADC,SUB,SBB,INC,DEC,NEG,MUL,IMUL,DIV,IDIV,CBW,CWD,AAA,AAS,AAM,AAD,DAA,DA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论