计组实验二实验报告-80868088指令系统
- 格式:doc
- 大小:423.00 KB
- 文档页数:14
编码16位模式32位模式操作)000AX EAX AL001CX ECX CL010DX EDX DL011BX EBX BL100SP ESP AH101BP EBP CH110SI ESI DH111DI EDI BHR/M字段受MOD字段控制。
若MOD=11,为寄存器方式,R/M字段将指出第二操作数所在寄存器编号。
MOD=00,01,10为存储器方式,R/M则指出如何计算存储器中操作数地址。
MOD与R/M字段组合的寻址方式见表3。
表3 各种MOD与R/M字段组合编码及有关地址的计算(16位地址模式下)MOD=11寄存器寻址MOD≠11存储寻址、有效地址的计算公式R/M W=1W=0R/M不带位移l量MOD=00带8位位移量MOD=01带16位位移量MOD=10 000AX AL000[BX+SI][BX+SI+D8][BX+SI+D16]001CX CL001[BX+DI][BX+DI+D8][BX+SI+D16]010DX DL010[BP+SI][BP+SI+D8][BP+SI+D16]011BX BL011[BP+DI][BP+DI+D8][BP+DI+D16]100SP AH100[SI][SI+D8][SI+D16]101BP CH101[DI][DI+D8][DI+D16]110SI DH110(直接寻址)[BP+D8][BP+D16]111DI BH111[BX][BX+D8][BX+D16]例如:指令MOV AH,[BX+DI+50H]。
代码格式如下。
OPCODE D W MOD REG R/M DISP—8100010 1 0 01 100 001 01010000指令码:8A6150H。
指令ADD DISP [BX] [DI],DX;DISP=4523H代码格式:OPCODE D W MOD REG R/M DISP—Lo DISP—Hi000000 0 1 10 010 001 00100011 01000101指令码为:01 91 23 45H。
实验二找出8086/8088指令系统所有指令的操作码的编码一、实验目的本实验旨在利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作码编码对应的指令功能。
二、试验原理:1、每条指令1~6个字节不等2、指令的第一字节为操作码,规定指令的操作类型。
第二字节规定操作数的寻址方式接着以后的3~6 字节依据指令的不同取舍。
3、第一个字节的八个二进制位中前六位为操作码的主要部分,之后一位是D字段,然后是W字段,W指出操作数类型:W=0 为字节,W=1 为字,D指出操作数的传送方向:D=0 寄存器操作数为源操作数,D=1 寄存器操作数为目标操作数。
4、用DOS的输入/输出重定向功能,让debug自动执行一批命令。
三、试验内容和步骤1、用试探法(1)打开debug,输入如下内容:-e 100 00 00 00 00 00 00-u 100 1050B5D:0100 0000 ADD [BX+SI],AL0B5D:0102 0000 ADD [BX+SI],AL0B5D:0104 0000 ADD [BX+SI],AL可以得到如下结果:结论:操作码字节前六位为000000(二进制)看来是一条ADD指令,而且只占两个字节。
记下来:指令码汇编指令---------------------------------------------------------------------0B5D:0100 0000 ADD [BX+SI],AL(2)将指令首字节变为01,重复以上实验-e 100 01 00-u 100 1010B5D:0100 0100 ADD [BX+SI],AX得到以下结果:结论:第1字节由00(二进制0000 0000)变为01(二进制0000 0001),ADD指令的第二个操作数由AL变为了AX。
AL为8位寄存器、AX为16位寄存器,印证了W字段的作用,增加一条有用的记录:指令码汇编指令-------------------------------------------------------------------------0B5D:0100 0000 ADD [BX+SI],AL0B5D:0100 0100 ADD [BX+SI],AX(3)将指令首字节变为02,重复以上实验-e 100 02 00-u 100 1010B5D:0100 0200 ADD AL,[BX+SI]得到以下结果:结论:第1字节由00(二进制0000 0000)变为02(二进制0000 0010),ADD 操作的传送方向发生转变,印证了D字段的作用。
实验二找出8086/8088指令系统所有指令的操作码的编码实验目的:本实验旨在利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作码编码对应的指令功能,得到8086/8088操作码从00~FF所对应的汇编指令名字。
附:本次实验用到的e和u功能的解释:debug的e命令、u命令的作用及用法:e 100...表示从100号单元开始编写内容;u 100 105表示将100~105号单元共6个字节反汇编出来、所谓“反汇编”就是把机器码还原成汇编语句。
每次先用e命令改写100号单元(从00到FF,第一次是00,第二次是 01,第三次是02,第四次是03,……,最后一次是FF),再用u命令反汇编出指令,再记录下来。
第一回合实验步骤:一、启动debug程序:鼠标单击“开始->程序->附件->命令提示符”,打开DOS(其实虚拟DOS)窗口,出现命令提示符Microsoft Windows XP [版本5.1.2600]<C>版权所有1985-2001 Microsoft Corp.输入debug并按回车键,出现一个debug程序的提示符,一个短杆如下图所示:二、用试探法-e 100 00 00 00 00 00 00-u 100 1051375:0100 0000 ADD [BX+SI],AL1375:0102 0000 ADD [BX+SI],AL1375:0104 0000 ADD [BX+SI],AL结论:操作码字节前六位为000000(二进制)看来是一条ADD指令,而且只占两个字节。
记下来:指令码汇编指令---------------------------------------------------------------------1375:0100 0000 ADD [BX+SI],AL分析:指令的第一字节为操作码,规定指令的操作类型。
实验二(找出8086/8088指令系统所有指令的操作码的编码)一、实验目的本实验旨在利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作码编码对应的指令功能。
二、实验原理已经知道:1、每条指令1~6个字节不等2、指令的第一字节为操作码,规定指令的操作类型。
第二字节规定操作数的寻址方式接着以后的3~6 字节依据指令的不同取舍。
3、第一个字节的八个二进制位中前六位为操作码的主要部分,之后一位是D字段,然后是W字段,W指出操作数类型:W=0 为字节,W=1 为字,D指出操作数的传送方向:D=0 寄存器操作数为源操作数,D=1 寄存器操作数为目标操作数。
三、实验步骤(一)1、用试探法结论:操作码字节前六位为000000(二进制)看来是一条ADD指令,而且只占两个字节。
记下来:指令码汇编指令---------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL2、将指令首字节变为01,重复以上实验结论:第1字节由00(二进制0000 0000)变为01(二进制0000 0001),ADD指令的第二个操作数由AL变为了AX。
AL为8位寄存器、AX为16位寄存器,印证了W字段的作用,增加一条有用的记录:指令码汇编指令-------------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX3、将指令首字节变为02,重复以上实验第1字节由00(二进制0000 0000)变为02(二进制0000 0010),ADD 操作的传送方向发生转变,印证了D字段的作用。
增加一条记录:指令码汇编指令------------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX037F:0100 0200 ADD AL,[BX+SI]4、将指令首字节变为03,重复以上实验D和W同时变化,记下:指令码汇编指令-----------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX037F:0100 0200 ADD AL,[BX+SI]037F:0100 0300 ADD AX,[BX+SI](二)1、首字节为04~07,继续实验(1)首字节为04,继续实验(2)首字节为05,继续实验(3)首字节为06,继续实验(4)首字节为07,继续实验-得到四条新的记录,出现了第1个3字节指令050000(ADD AX,0000),还捕获了两条新的单字节指令:指令码汇编指令----------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX037F:0100 0200 ADD AL,[BX+SI]037F:0100 0300 ADD AX,[BX+SI]037F:0100 0400 ADD AL,00037F:0100 050000 ADD AX,0000037F:0100 06 PUSH ES037F:0100 07 POP ES2、08~0b,继续-是四条OR指令:指令码汇编指令--------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX037F:0100 0200 ADD AL,[BX+SI]037F:0100 0300 ADD AX,[BX+SI]037F:0100 0400 ADD AL,00037F:0100 050000 ADD AX,0000037F:0100 06 PUSH ES037F:0100 07 POP ES037F:0100 0800 OR [BX+SI],AL037F:0100 0900 OR [BX+SI],AX037F:0100 0A00 OR AL,[BX+SI]037F:0100 0B00 OR AX,[BX+SI](三)1、用in1-zsl.txt生成out1-zsl.txt原理:用DOS的输入/输出重定向功能,让debug自动执行一批命令。
实验一8086指令使用二、8086常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:-A 0100↙****:0100 MOV AX,1234↙****:0103 MOV BX,5678↙****:0106 XCHG AX,BX↙****:0108 MOV AH,35↙****:010A MOV AL,48↙****:010D MOV DX,75AB↙****:010F XCHG AX,DX↙****:0111 ↙-注:****为段寄存器CS的值,是由计算机生成的;↙为回车操作。
2)用U命令检查键入的程序并记录,特别注意左边的机器码。
-U 0100↙3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
-T=0100↙-T↙-T↙┇2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。
3)用T命令逐条运行这些指令,检查并记录有关寄存器及标志位的情况。
思考:这次运行还是键入T,行不行?怎么办?用R命令检查一下IP的内容。
注意T命令与IP 的关系。
3、带进位加减法:1)用A命令在内存200H处键入下列内容,并用U命令检查:MOV AH,12MOV AL,84MOV CH,56MOV CL,78ADD AL,CLADC AH,CHMOV DH,A7MOV DL,58SUB DL,7FSBB DH,342)用T命令逐条运行这些指令,检查并记录寄存器及CF内容。
3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之。
4、BCD码加减法1)内容:MOV AL,58ADD AL,25DAA2)要求:用A命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容。
8086 8088寻址方式和指令系统28086/8088的指令集可分为如下六个功能组:1、数据传送;2、算术运算;3、逻辑运算;4、串操作;5、程序控制;6、处理器控制。
指令表示格式:在汇编语言中,指令语句可由四部分组成,一般格式如下:[标号]指令助记符[操作数1][,操作数2][;注释]。
对于每条指令程序员要注意:1、指令的功能;2、适用于指令的操作数寻址方式;3、指令对标志的影响;4、指令的长度和执行时间。
1、数据传送指令:又可分为传送指令、交换指令、地址传送指令、堆栈操作指令、标志传送指令、查表指令、输入输出指令。
一、传送指令:格式如下:MOV DST,SRC。
指令把一个字节活一个字从远操作数SRC送至目的操作数DST。
MOV指令可实现的传送方式如下图所示:二、交换指令:利用交换指令可方便地实现通用寄存器与通用寄存器或存储单元的数据交换,交换指令的格式如下:XCHG OPRD1,OPRD2.此指令把OPRD1和OPRD2的内容交换,操作数同时是字节或字。
OPRD1和OPRD2可以是通用寄存器活存储单元,但不包括段寄存器,也不能同时是存储单元,还不能有立即数。
三、地址传送指令:8086/8088有如下三条地址传送指令。
(1)LEA:称为spss有效弟弟指令,指令格式:LEA REG,OPRD。
该指令把操作数OPRD的有效地址传送到操作数REG。
OPRD必须是一个存储器操作数,REG必须是一个16位的通用寄存器。
(2)LDS:该指令传送32位地址指针,格式:LDS REG,OPRD。
该指令把操作数OPRD中所含的32位地址指针段值部分送到数据段寄存器DS,把偏移部分送到给出的通用寄存器REG。
(3)LES:该指令传送32位地址指针,格式:LES REG,OPRD。
该指令把操作数OPRD中所含的32位地址指针段值部分送到数据段寄存器ES,把偏移部分送到给出的通用寄存器REG。
2、堆栈操作指令:堆栈是一段RAM区域,栈底地址较大,栈顶地址叫小。
微机原理实验报告1实验的目的是学习8086/8088指令系统中一些基本指令的用法和程序的基本方法。
2熟悉8086.8088汇编语言程序在PC机上建立、组装、连接、调试和运行的全过程。
实验中,a、B、C、D四个数字以单字节压缩BCD码的形式存储在num存储器的四个单元中。
然后,计算(a+b)-(c+D)并以Y1为单位,结果显示在屏幕上。
在调试过程中,不断更改a、B、C、D的内容,并检查结果。
本文提供了几组数据:1。
A=09,B=06,C=04,d=072。
A=38,B=41,C=29,d=34 3。
A=70,B=23,C=42,d=41 4。
A=63,B=73,C=62,d=50 3。
实验调试过程1。
使用DOS工具掩码和链接生成EXE文件2。
使用调试工具编译并中断单击调试器。
1使用-U命令反汇编程序②设置断点1检查a+B的结果是否正确。
结果在23小时存储在A1中,结果正确。
③设置断点2检查C+D的结果是否正确。
如果结果存储在Al中30小时,则结果正确。
④运行程序后,使用-D命令检查最终结果是否正确。
数据段中的第五个地址是计算结果,它是正确的。
⑤尤其在(a+b)-(c+D)中使用-E。
如果前者比后者小,结果可能不正确。
这时,我们应该判断借阅符号是否为负数。
如果是负数,则使用(c+D)-(a+b),并在结果中输出一个负号。
三。
已成功调试并检查结果。
直接在DOS命令下运行程序添加.exe 或者在调试期间使用-G命令运行程序,并检查程序结果。
4实验程序和DSEG程序框图。
定义数据段编号DB 13h、27h、11h、12h;定义A、B、C、D Y1 DB?DSEG结束;数据段结束sseg段标准堆栈;定义堆栈DB 20 dup(?)sseg结束cseg段假设CS:cseg,ds:DSEG,SS:sseg start:MOV AX,DSEG MOV ds,AX MOV AX,sseg MOV SS,AX MOV AL,[NUM];将A复制到AL以添加AL,[NUM+1];A+B DAA MOV CL,AL;保存AL MOV AL,[NUM+2];将C复制到AL 以添加AL,[NUM+3];C+D DAA SUB CL,AL;(A+B)-(C+D)MOV AL,CL DAS MOV[NUM+4],AL MOV BL,AL;save AL和AL,0F0H;R SHIFT MOV CL,4 SHR AL,CL ADD AL,30H;获取ASCII MOV DL,AL MOV AH,02h int 21h MOV AL,BL;还原AL和AL,0Fh;取低位4位,加上AL,30H MOV DL,AL MOV AH,02h int 21h MOV ax,4c00h int 21h cseg end start end end 5。
8086实验报告8086实验报告引言:8086微处理器是Intel公司于1978年推出的一款16位微处理器,它在计算机发展历史上具有重要的地位。
本实验旨在通过对8086微处理器的实际应用,深入了解其工作原理和功能。
一、实验目的本实验的目的是通过对8086微处理器的实际操作,掌握其基本指令的使用方法,并了解其内部结构和工作原理。
二、实验材料和方法1. 实验材料:- 8086微处理器开发板- 电源线- 串口线- 电脑2. 实验方法:- 将8086开发板与电脑通过串口线连接- 将电源线插入开发板并连接电源- 打开电脑,启动开发板上的操作系统- 使用汇编语言编写程序,并通过串口线将程序下载到开发板中- 在开发板上运行程序,观察结果并进行分析三、实验过程1. 硬件连接:将8086开发板与电脑通过串口线连接,并确保连接稳定。
2. 软件操作:打开电脑,启动开发板上的操作系统。
使用汇编语言编写程序,并通过串口线将程序下载到开发板中。
3. 程序运行:在开发板上运行程序,并观察结果。
通过分析程序的运行过程,了解8086微处理器的工作原理和功能。
四、实验结果与分析在本次实验中,我们编写了一个简单的程序,用于在开发板上显示一段文字。
通过观察开发板上的显示屏,我们可以看到程序成功地在8086微处理器上运行,并显示出我们编写的文字。
通过对程序的分析,我们可以了解到8086微处理器具有强大的计算和控制能力。
它能够执行各种指令,完成各种复杂的计算任务。
同时,8086微处理器还具有较大的存储空间和高速的数据传输能力,使得它能够处理大量的数据和信息。
此外,8086微处理器还具有良好的扩展性和兼容性。
它可以与其他外部设备进行连接,实现更多的功能和应用。
同时,8086微处理器与其后续型号的兼容性也非常好,这使得它在计算机领域得到了广泛的应用。
五、实验总结通过本次实验,我们深入了解了8086微处理器的工作原理和功能。
我们通过编写程序并在开发板上运行,亲身体验了8086微处理器的强大计算能力和高效数据传输能力。
HUNAN UNIVERSITY 课程实习报告题目: 8086/8088指令系统学生姓名学生学号专业班级计算机科学与技术2班指导老师完成日期2013年4月21日一、实验目的利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作吗编码对应的指令功能,得到8086/8088操作吗从00~FF所对应的的汇编指令的名字。
并加以分析总结,形成你的关于8086/8088指令系统操作码编码方法的实验报告。
二、实验过程1、编写C++程序,生成debug的输入文件(shuru.txt)2、将shuru.txt复制到debug的根目录下,在debug界面输入如下指令“debug <shuru.txt >out.txt”,在debug的根目录下,生成了输出文本文件out.txt。
打开out.txt,对256条记录进行整理,如下所示。
3、固定前两位为00,将第二字节从00变为ff,观察汇编指令变化。
编写C++程序如下:4、将shuru2.txt复制到debug的根目录下,在debug界面输入如下指令“debug <shuru.txt >out2.txt”,在debug的根目录下,生成了输出文本文件out2.txt。
打开out2.txt,对256条记录进行分析。
三、256条记录指令码汇编指令------------------------------------------------------------- 0B76:0100 0000 ADD [BX+SI],AL0B76:0100 0100 ADD [BX+SI],AX0B76:0100 0200 ADD AL,[BX+SI]0B76:0100 0300 ADD AX,[BX+SI]0B76:0100 0400 ADD AL,000B76:0100 050000 ADD AX,00000B76:0100 06 PUSH ES0B76:0100 07 POP ES0B76:0100 0800 OR [BX+SI],AL0B76:0100 0900 OR [BX+SI],AX0B76:0100 0A00 OR AL,[BX+SI]0B76:0100 0B00 OR AX,[BX+SI]0B76:0100 0C00 OR AL,000B76:0100 0D0000 OR AX,00000B76:0100 0E PUSH CS0B76:0100 0F DB 0F0B76:0100 1000 ADC [BX+SI],AL0B76:0100 1100 ADC [BX+SI],AX0B76:0100 1200 ADC AL,[BX+SI]0B76:0100 1300 ADC AX,[BX+SI]0B76:0100 1400 ADC AL,000B76:0100 150000 ADC AX,00000B76:0100 16 PUSH SS0B76:0100 17 POP SS0B76:0100 1800 SBB [BX+SI],AL0B76:0100 1900 SBB [BX+SI],AX0B76:0100 1A00 SBB AL,[BX+SI]0B76:0100 1B00 SBB AX,[BX+SI]0B76:0100 1C00 SBB AL,000B76:0100 1D0000 SBB AX,00000B76:0100 1E PUSH DS0B76:0100 1F POP DS0B76:0100 2000 AND [BX+SI],AL0B76:0100 2100 AND [BX+SI],AX0B76:0100 2200 AND AL,[BX+SI]0B76:0100 2300 AND AX,[BX+SI]0B76:0100 2400 AND AL,000B76:0100 250000 AND AX,00000B76:0100 26 ES:0B76:0100 27 DAA0B76:0100 2800 SUB [BX+SI],AL 0B76:0100 2900 SUB [BX+SI],AX 0B76:0100 2A00 SUB AL,[BX+SI] 0B76:0100 2B00 SUB AX,[BX+SI] 0B76:0100 2C00 SUB AL,000B76:0100 2D0000 SUB AX,00000B76:0100 2E CS:0B76:0100 2F DAS0B76:0100 3000 XOR [BX+SI],AL 0B76:0100 3100 XOR [BX+SI],AX 0B76:0100 3200 XOR AL,[BX+SI] 0B76:0100 3300 XOR AX,[BX+SI] 0B76:0100 3400 XOR AL,000B76:0100 350000 XOR AX,00000B76:0100 36 SS:0B76:0100 37 AAA0B76:0100 3800 CMP [BX+SI],AL 0B76:0100 3900 CMP [BX+SI],AX 0B76:0100 3A00 CMP AL,[BX+SI] 0B76:0100 3B00 CMP AX,[BX+SI] 0B76:0100 3C00 CMP AL,000B76:0100 3D0000 CMP AX,00000B76:0100 3E DS:0B76:0100 3F AAS0B76:0100 40 INC AX0B76:0100 41 INC CX0B76:0100 42 INC DX0B76:0100 43 INC BX0B76:0100 44 INC SP0B76:0100 45 INC BP0B76:0100 46 INC SI0B76:0100 47 INC DI0B76:0100 48 DEC AX0B76:0100 49 DEC CX0B76:0100 4A DEC DX0B76:0100 4B DEC BX0B76:0100 4C DEC SP0B76:0100 4D DEC BP0B76:0100 4E DEC SI0B76:0100 4F DEC DI0B76:0100 50 PUSH AX0B76:0100 51 PUSH CX0B76:0100 52 PUSH DX 0B76:0100 53 PUSH BX 0B76:0100 54 PUSH SP0B76:0100 55 PUSH BP0B76:0100 56 PUSH SI0B76:0100 57 PUSH DI0B76:0100 58 POP AX 0B76:0100 59 POP CX 0B76:0100 5A POP DX 0B76:0100 5B POP BX 0B76:0100 5C POP SP0B76:0100 5D POP BP0B76:0100 5E POP SI0B76:0100 5F POP DI0B76:0100 60 DB 600B76:0100 61 DB 610B76:0100 62 DB 620B76:0100 63 DB 630B76:0100 64 DB 640B76:0100 65 DB 650B76:0100 66 DB 660B76:0100 67 DB 670B76:0100 68 DB 680B76:0100 69 DB 690B76:0100 6A DB 6A0B76:0100 6B DB 6B0B76:0100 6C DB 6C0B76:0100 6D DB 6D0B76:0100 6E DB 6E0B76:0100 6F DB 6F0B76:0100 7000 JO 01020B76:0100 7100 JNO 0102 0B76:0100 7200 JB 01020B76:0100 7300 JNB 0102 0B76:0100 7400 JZ 01020B76:0100 7500 JNZ 0102 0B76:0100 7600 JBE 0102 0B76:0100 7700 JA 01020B76:0100 7800 JS 01020B76:0100 7900 JNS 0102 0B76:0100 7A00 JPE 0102 0B76:0100 7B00 JPO 0102 0B76:0100 7C00 JL 01020B76:0100 7D00 JGE 01020B76:0100 7E00 JLE 01020B76:0100 7F00 JG 01020B76:0100 800000 ADD BYTE PTR [BX+SI],000B76:0100 81000000 ADD WORD PTR [BX+SI],0000 0B76:0100 820000 ADD BYTE PTR [BX+SI],000B76:0100 830000 ADD WORD PTR [BX+SI],+00 0B76:0100 8400 TEST AL,[BX+SI]0B76:0100 8500 TEST AX,[BX+SI]0B76:0100 8600 XCHG AL,[BX+SI]0B76:0100 8700 XCHG AX,[BX+SI]0B76:0100 8800 MOV [BX+SI],AL0B76:0100 8900 MOV [BX+SI],AX0B76:0100 8A00 MOV AL,[BX+SI]0B76:0100 8B00 MOV AX,[BX+SI]0B76:0100 8C00 MOV [BX+SI],ES0B76:0100 8D00 LEA AX,[BX+SI]0B76:0100 8E00 MOV ES,[BX+SI]0B76:0100 8F00 POP [BX+SI]0B76:0100 90 NOP0B76:0100 91 XCHG CX,AX0B76:0100 92 XCHG DX,AX0B76:0100 93 XCHG BX,AX0B76:0100 94 XCHG SP,AX0B76:0100 95 XCHG BP,AX0B76:0100 96 XCHG SI,AX0B76:0100 97 XCHG DI,AX0B76:0100 98 CBW0B76:0100 99 CWD0B76:0100 9A00000000 CALL 0000:00000B76:0100 9B WAIT0B76:0100 9C PUSHF0B76:0100 9D POPF0B76:0100 9E SAHF0B76:0100 9F LAHF0B76:0100 A00000 MOV AL,[0000]0B76:0100 A10000 MOV AX,[0000]0B76:0100 A20000 MOV [0000],AL0B76:0100 A30000 MOV [0000],AX0B76:0100 A4 MOVSB0B76:0100 A5 MOVSW0B76:0100 A6 CMPSB0B76:0100 A7 CMPSW0B76:0100 A800 TEST AL,000B76:0100 A90000 TEST AX,00000B76:0100 AA STOSB0B76:0100 AB STOSW0B76:0100 AC LODSB0B76:0100 AD LODSW0B76:0100 AE SCASB0B76:0100 AF SCASW0B76:0100 B000 MOV AL,000B76:0100 B100 MOV CL,000B76:0100 B200 MOV DL,000B76:0100 B300 MOV BL,000B76:0100 B400 MOV AH,000B76:0100 B500 MOV CH,000B76:0100 B600 MOV DH,000B76:0100 B700 MOV BH,000B76:0100 B80000 MOV AX,00000B76:0100 B90000 MOV CX,00000B76:0100 BA0000 MOV DX,00000B76:0100 BB0000 MOV BX,00000B76:0100 BC0000 MOV SP,00000B76:0100 BD0000 MOV BP,00000B76:0100 BE0000 MOV SI,00000B76:0100 BF0000 MOV DI,00000B76:0100 C0 DB C00B76:0100 C1 DB C10B76:0100 C20000 RET 00000B76:0100 C3 RET0B76:0100 C400 LES AX,[BX+SI]0B76:0100 C500 LDS AX,[BX+SI]0B76:0100 C60000 MOV BYTE PTR [BX+SI],000B76:0100 C7000000 MOV WORD PTR [BX+SI],0000 0B76:0100 C8 DB C80B76:0100 C9 DB C90B76:0100 CA0000 RETF 00000B76:0100 CB RETF0B76:0100 CC INT 30B76:0100 CD00 INT 000B76:0100 CE INTO0B76:0100 CF IRET0B76:0100 D000 ROL BYTE PTR [BX+SI],10B76:0100 D100 ROL WORD PTR [BX+SI],10B76:0100 D200 ROL BYTE PTR [BX+SI],CL0B76:0100 D300 ROL WORD PTR [BX+SI],CL0B76:0100 D400 AAM 000B76:0100 D500 AAD 000B76:0100 D6 DB D60B76:0100 D7 XLAT0B76:0100 D800 FADD DWORD PTR [BX+SI] 0B76:0100 D900 FLD DWORD PTR [BX+SI]0B76:0100 DA00 FIADD DWORD PTR [BX+SI] 0B76:0100 DB00 FILD D WORD PTR [BX+SI]0B76:0100 DC00 FADD QWORD PTR [BX+SI] 0B76:0100 DD00 FLD QWORD PTR [BX+SI]0B76:0100 DE00 FIADD WORD PTR [BX+SI] 0B76:0100 DF00 FILD W ORD PTR [BX+SI]0B76:0100 E000 LOOPNZ 01020B76:0100 E100 LOOPZ 01020B76:0100 E200 LOOP 01020B76:0100 E300 JCXZ 01020B76:0100 E400 IN AL,000B76:0100 E500 IN AX,000B76:0100 E600 OUT 00,AL0B76:0100 E700 OUT 00,AX0B76:0100 E80000 CALL 01030B76:0100 E90000 JMP 01030B76:0100 EA00000000 JMP 0000:00000B76:0100 EB00 JMP 01020B76:0100 EC IN AL,DX0B76:0100 ED IN AX,DX0B76:0100 EE OUT DX,AL0B76:0100 EF OUT DX,AX0B76:0100 F0 LOCK0B76:0100 F1 DB F10B76:0100 F2 REPNZ0B76:0100 F3 REPZ0B76:0100 F4 HLT0B76:0100 F5 CMC0B76:0100 F60000 TEST BYTE PTR [BX+SI],000B76:0100 F7000000 TEST WORD PTR [BX+SI],0000 0B76:0100 F8 CLC0B76:0100 F9 STC0B76:0100 FA CLI0B76:0100 FB STI0B76:0100 FC CLD0B76:0100 FD STD0B76:0100 FE00 INC BYTE PTR [BX+SI]0B76:0100 FF00 INC WORD PTR [BX+SI]三、8086/8088指令系统操作码编码方法8086/8088 指令系统采用了一种灵活的,由1~6 个字节组成的变字长的指令格式,包括操作码、寻址方式以及操作数3 部分。
第一部分软件部分实验实验一汇编语言上机环境的熟悉和命令使用【实验目的及要求】1学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2学会使用MASM在计算机上汇编、连接、调试及运行程序的方法。
3掌握用DEBUG调试汇编程序的方法,为以后实验打下基础。
【实验内容】一、建立软件工作环境为了正常运行汇编程序,需要如下程序:masm.exe 或tasm.exe ;汇编命令link.exe ;链接命令debug.exe ;调试命令二、按照要求完成以下题目1、在屏幕上输出'This is a masm sample!'(1)使用文本文档编辑如下源程序,并保存为sample.asm:;Program is an exampledata segmentastr DB 'This is a masm sample!',0dh,0AH,'$'data endscode segmentassume CS:code,DS:datamain proc farstart:PUSH DS ;保护环境,返回DOSXOR AX, AXPUSH AXMOV AX, data ;数据段的初始化MOV DS, AXLEA DX, astr ;取得字符串的首地址MOV AH, 09h ;9号功能调用INT 21hRETmain endpcode endsend start(2)使用masm汇编命令汇编源程序c:\ >masm sample.asm ---开始汇编Microsoft (R) Macro Assembler V ersion 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. ……--软件提示Object Filename[sample.obj]: --提示输入目标文件名,可省略直接回车Source listing[Nul.lst]: --提示输入列表文件名,可省略直接回车Cross reference[NUL.crf]:Warning errors 0Severe errors 0注意:若汇编的错误提示不为0,则须重新修改sample.asm,然后再汇编,该过程直到错误提示为0为止。
HUNAN UNIVERSITY 课程实习报告题目: 8086/8088指令系统学生姓名学生学号专业班级计算机科学与技术2班指导老师完成日期2013年4月21日一、实验目的利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作吗编码对应的指令功能,得到8086/8088操作吗从00~FF所对应的的汇编指令的名字。
并加以分析总结,形成你的关于8086/8088指令系统操作码编码方法的实验报告。
二、实验过程1、编写C++程序,生成debug的输入文件(shuru.txt)2、将shuru.txt复制到debug的根目录下,在debug界面输入如下指令“debug <shuru.txt >out.txt”,在debug的根目录下,生成了输出文本文件out.txt。
打开out.txt,对256条记录进行整理,如下所示。
3、固定前两位为00,将第二字节从00变为ff,观察汇编指令变化。
编写C++程序如下:4、将shuru2.txt复制到debug的根目录下,在debug界面输入如下指令“debug <shuru.txt >out2.txt”,在debug的根目录下,生成了输出文本文件out2.txt。
打开out2.txt,对256条记录进行分析。
三、256条记录指令码汇编指令------------------------------------------------------------- 0B76:0100 0000 ADD [BX+SI],AL0B76:0100 0100 ADD [BX+SI],AX0B76:0100 0200 ADD AL,[BX+SI]0B76:0100 0300 ADD AX,[BX+SI]0B76:0100 0400 ADD AL,000B76:0100 050000 ADD AX,00000B76:0100 06 PUSH ES0B76:0100 07 POP ES0B76:0100 0800 OR [BX+SI],AL0B76:0100 0900 OR [BX+SI],AX0B76:0100 0A00 OR AL,[BX+SI]0B76:0100 0B00 OR AX,[BX+SI]0B76:0100 0C00 OR AL,000B76:0100 0D0000 OR AX,00000B76:0100 0E PUSH CS0B76:0100 0F DB 0F0B76:0100 1000 ADC [BX+SI],AL0B76:0100 1100 ADC [BX+SI],AX0B76:0100 1200 ADC AL,[BX+SI]0B76:0100 1300 ADC AX,[BX+SI]0B76:0100 1400 ADC AL,000B76:0100 150000 ADC AX,00000B76:0100 16 PUSH SS0B76:0100 17 POP SS0B76:0100 1800 SBB [BX+SI],AL0B76:0100 1900 SBB [BX+SI],AX0B76:0100 1A00 SBB AL,[BX+SI]0B76:0100 1B00 SBB AX,[BX+SI]0B76:0100 1C00 SBB AL,000B76:0100 1D0000 SBB AX,00000B76:0100 1E PUSH DS0B76:0100 1F POP DS0B76:0100 2000 AND [BX+SI],AL0B76:0100 2100 AND [BX+SI],AX0B76:0100 2200 AND AL,[BX+SI]0B76:0100 2300 AND AX,[BX+SI]0B76:0100 2400 AND AL,000B76:0100 250000 AND AX,00000B76:0100 26 ES:0B76:0100 27 DAA0B76:0100 2800 SUB [BX+SI],AL 0B76:0100 2900 SUB [BX+SI],AX 0B76:0100 2A00 SUB AL,[BX+SI] 0B76:0100 2B00 SUB AX,[BX+SI] 0B76:0100 2C00 SUB AL,000B76:0100 2D0000 SUB AX,00000B76:0100 2E CS:0B76:0100 2F DAS0B76:0100 3000 XOR [BX+SI],AL 0B76:0100 3100 XOR [BX+SI],AX 0B76:0100 3200 XOR AL,[BX+SI] 0B76:0100 3300 XOR AX,[BX+SI] 0B76:0100 3400 XOR AL,000B76:0100 350000 XOR AX,00000B76:0100 36 SS:0B76:0100 37 AAA0B76:0100 3800 CMP [BX+SI],AL 0B76:0100 3900 CMP [BX+SI],AX 0B76:0100 3A00 CMP AL,[BX+SI] 0B76:0100 3B00 CMP AX,[BX+SI] 0B76:0100 3C00 CMP AL,000B76:0100 3D0000 CMP AX,00000B76:0100 3E DS:0B76:0100 3F AAS0B76:0100 40 INC AX0B76:0100 41 INC CX0B76:0100 42 INC DX0B76:0100 43 INC BX0B76:0100 44 INC SP0B76:0100 45 INC BP0B76:0100 46 INC SI0B76:0100 47 INC DI0B76:0100 48 DEC AX0B76:0100 49 DEC CX0B76:0100 4A DEC DX0B76:0100 4B DEC BX0B76:0100 4C DEC SP0B76:0100 4D DEC BP0B76:0100 4E DEC SI0B76:0100 4F DEC DI0B76:0100 50 PUSH AX0B76:0100 51 PUSH CX0B76:0100 52 PUSH DX 0B76:0100 53 PUSH BX 0B76:0100 54 PUSH SP0B76:0100 55 PUSH BP0B76:0100 56 PUSH SI0B76:0100 57 PUSH DI0B76:0100 58 POP AX 0B76:0100 59 POP CX 0B76:0100 5A POP DX 0B76:0100 5B POP BX 0B76:0100 5C POP SP0B76:0100 5D POP BP0B76:0100 5E POP SI0B76:0100 5F POP DI0B76:0100 60 DB 600B76:0100 61 DB 610B76:0100 62 DB 620B76:0100 63 DB 630B76:0100 64 DB 640B76:0100 65 DB 650B76:0100 66 DB 660B76:0100 67 DB 670B76:0100 68 DB 680B76:0100 69 DB 690B76:0100 6A DB 6A0B76:0100 6B DB 6B0B76:0100 6C DB 6C0B76:0100 6D DB 6D0B76:0100 6E DB 6E0B76:0100 6F DB 6F0B76:0100 7000 JO 01020B76:0100 7100 JNO 0102 0B76:0100 7200 JB 01020B76:0100 7300 JNB 0102 0B76:0100 7400 JZ 01020B76:0100 7500 JNZ 0102 0B76:0100 7600 JBE 0102 0B76:0100 7700 JA 01020B76:0100 7800 JS 01020B76:0100 7900 JNS 0102 0B76:0100 7A00 JPE 0102 0B76:0100 7B00 JPO 0102 0B76:0100 7C00 JL 01020B76:0100 7D00 JGE 01020B76:0100 7E00 JLE 01020B76:0100 7F00 JG 01020B76:0100 800000 ADD BYTE PTR [BX+SI],000B76:0100 81000000 ADD WORD PTR [BX+SI],0000 0B76:0100 820000 ADD BYTE PTR [BX+SI],000B76:0100 830000 ADD WORD PTR [BX+SI],+00 0B76:0100 8400 TEST AL,[BX+SI]0B76:0100 8500 TEST AX,[BX+SI]0B76:0100 8600 XCHG AL,[BX+SI]0B76:0100 8700 XCHG AX,[BX+SI]0B76:0100 8800 MOV [BX+SI],AL0B76:0100 8900 MOV [BX+SI],AX0B76:0100 8A00 MOV AL,[BX+SI]0B76:0100 8B00 MOV AX,[BX+SI]0B76:0100 8C00 MOV [BX+SI],ES0B76:0100 8D00 LEA AX,[BX+SI]0B76:0100 8E00 MOV ES,[BX+SI]0B76:0100 8F00 POP [BX+SI]0B76:0100 90 NOP0B76:0100 91 XCHG CX,AX0B76:0100 92 XCHG DX,AX0B76:0100 93 XCHG BX,AX0B76:0100 94 XCHG SP,AX0B76:0100 95 XCHG BP,AX0B76:0100 96 XCHG SI,AX0B76:0100 97 XCHG DI,AX0B76:0100 98 CBW0B76:0100 99 CWD0B76:0100 9A00000000 CALL 0000:00000B76:0100 9B WAIT0B76:0100 9C PUSHF0B76:0100 9D POPF0B76:0100 9E SAHF0B76:0100 9F LAHF0B76:0100 A00000 MOV AL,[0000]0B76:0100 A10000 MOV AX,[0000]0B76:0100 A20000 MOV [0000],AL0B76:0100 A30000 MOV [0000],AX0B76:0100 A4 MOVSB0B76:0100 A5 MOVSW0B76:0100 A6 CMPSB0B76:0100 A7 CMPSW0B76:0100 A800 TEST AL,000B76:0100 A90000 TEST AX,00000B76:0100 AA STOSB0B76:0100 AB STOSW0B76:0100 AC LODSB0B76:0100 AD LODSW0B76:0100 AE SCASB0B76:0100 AF SCASW0B76:0100 B000 MOV AL,000B76:0100 B100 MOV CL,000B76:0100 B200 MOV DL,000B76:0100 B300 MOV BL,000B76:0100 B400 MOV AH,000B76:0100 B500 MOV CH,000B76:0100 B600 MOV DH,000B76:0100 B700 MOV BH,000B76:0100 B80000 MOV AX,00000B76:0100 B90000 MOV CX,00000B76:0100 BA0000 MOV DX,00000B76:0100 BB0000 MOV BX,00000B76:0100 BC0000 MOV SP,00000B76:0100 BD0000 MOV BP,00000B76:0100 BE0000 MOV SI,00000B76:0100 BF0000 MOV DI,00000B76:0100 C0 DB C00B76:0100 C1 DB C10B76:0100 C20000 RET 00000B76:0100 C3 RET0B76:0100 C400 LES AX,[BX+SI]0B76:0100 C500 LDS AX,[BX+SI]0B76:0100 C60000 MOV BYTE PTR [BX+SI],000B76:0100 C7000000 MOV WORD PTR [BX+SI],0000 0B76:0100 C8 DB C80B76:0100 C9 DB C90B76:0100 CA0000 RETF 00000B76:0100 CB RETF0B76:0100 CC INT 30B76:0100 CD00 INT 000B76:0100 CE INTO0B76:0100 CF IRET0B76:0100 D000 ROL BYTE PTR [BX+SI],10B76:0100 D100 ROL WORD PTR [BX+SI],10B76:0100 D200 ROL BYTE PTR [BX+SI],CL0B76:0100 D300 ROL WORD PTR [BX+SI],CL0B76:0100 D400 AAM 000B76:0100 D500 AAD 000B76:0100 D6 DB D60B76:0100 D7 XLAT0B76:0100 D800 FADD DWORD PTR [BX+SI] 0B76:0100 D900 FLD DWORD PTR [BX+SI]0B76:0100 DA00 FIADD DWORD PTR [BX+SI] 0B76:0100 DB00 FILD D WORD PTR [BX+SI]0B76:0100 DC00 FADD QWORD PTR [BX+SI] 0B76:0100 DD00 FLD QWORD PTR [BX+SI]0B76:0100 DE00 FIADD WORD PTR [BX+SI] 0B76:0100 DF00 FILD W ORD PTR [BX+SI]0B76:0100 E000 LOOPNZ 01020B76:0100 E100 LOOPZ 01020B76:0100 E200 LOOP 01020B76:0100 E300 JCXZ 01020B76:0100 E400 IN AL,000B76:0100 E500 IN AX,000B76:0100 E600 OUT 00,AL0B76:0100 E700 OUT 00,AX0B76:0100 E80000 CALL 01030B76:0100 E90000 JMP 01030B76:0100 EA00000000 JMP 0000:00000B76:0100 EB00 JMP 01020B76:0100 EC IN AL,DX0B76:0100 ED IN AX,DX0B76:0100 EE OUT DX,AL0B76:0100 EF OUT DX,AX0B76:0100 F0 LOCK0B76:0100 F1 DB F10B76:0100 F2 REPNZ0B76:0100 F3 REPZ0B76:0100 F4 HLT0B76:0100 F5 CMC0B76:0100 F60000 TEST BYTE PTR [BX+SI],000B76:0100 F7000000 TEST WORD PTR [BX+SI],0000 0B76:0100 F8 CLC0B76:0100 F9 STC0B76:0100 FA CLI0B76:0100 FB STI0B76:0100 FC CLD0B76:0100 FD STD0B76:0100 FE00 INC BYTE PTR [BX+SI]0B76:0100 FF00 INC WORD PTR [BX+SI]三、8086/8088指令系统操作码编码方法8086/8088 指令系统采用了一种灵活的,由1~6 个字节组成的变字长的指令格式,包括操作码、寻址方式以及操作数3 部分。