计组指令格式实验报告.doc

计组指令格式实验报告.doc

ID:50131933

大小:100.50 KB

页数:9页

时间:2020-03-05

计组指令格式实验报告.doc_第1页
计组指令格式实验报告.doc_第2页
计组指令格式实验报告.doc_第3页
计组指令格式实验报告.doc_第4页
计组指令格式实验报告.doc_第5页
资源描述:

《计组指令格式实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验二(基本要求)(第一回合)8086/8088指令系统采用了一种灵活的,由1~6个字节组成的变字长的指令格式,包括操作码、寻址方式以及操作数3部分,如图1所示。操作码操作码MOD操作码DATA8/DISP8操作码MODDATA8/DISP8操作码DATA/DISP16(低)DATA/DISP16(高)操作码MODDATA/DISP16(低)DATA/DISP16(高)操作码MODDISP16(低)DISP16(高)DATA8操作码MODDISP16(低)DISP16(高)DATA16(低)DAT

2、A16(高)图18086/8088不同字长的指令码格式通常指令的第一字节为操作码,规定指令的操作类型;第二字节规定操作数的寻址方式;接着以后的3~6字节依据指令的不同取舍,可变字长的指令主要体现在这里,一般由其指出存储器操作数地址位移量或立即数。图28086/8088操作码及寻址方式字段格式第一字节中,W指出操作数类型:W=0为字节,W=1为字。D指出操作数的传送方向:D=0寄存器操作数为源操作数,D=1寄存器操作数为目标操作数。第二字节指出所用的两个操作数存放的位置,以及存储器中操作数有效地址E

3、A的计算方法。MOD字段用来区分另一个操作数在寄存器中(寄存器寻址)还是在存储器中(存储器寻址)。在存储器寻址的情况下,还用来指出该字节后面有多少偏移量字节(即指出存储器操作数地址偏移量的字节数)。MOD字段编码表见表1。(注:若第二操作数为立即数,则指令格式中无MOD字段,从第二字节起直接就是该操作数,且操作码另行编码。)表1MOD字段编码表及寻址方式选择MOD16位地址模式下32位地址模式下00存储器寻址,没有位移量存储器寻址,没有位移量01存储器寻址,有8位位移量存储器寻址,有8位位移量10

4、存储器寻址,有16位位移量存储器寻址,有32位位移量11寄存器寻址,没有位移量寄存器寻址,没有位移量REG字段规定一个寄存器操作数,它作为源操作数还是目标操作数已由第一个字节中的D位规定。由REG字段选择寄存器的具体规定见表2。表2REG字段编码表W=1(字操作)W=0REG域编码(字节操作)16位模式32位模式000AXEAXAL001CXECXCL010DXEDXDL011BXEBXBL100SPESPAH101BPEBPCH110SIESIDH111DIEDIBHR/M字段受MOD字段控制。

5、若MOD=11,为寄存器方式,R/M字段将指出第二操作数所在寄存器编号。MOD=00,01,10为存储器方式,R/M则指出如何计算存储器中操作数地址。MOD与R/M字段组合的寻址方式见表3。表3各种MOD与R/M字段组合编码及有关地址的计算(16位地址模式下)MOD=11寄存器寻址MOD≠11存储寻址、有效地址的计算公式R/MW=1W=0R/M不带位移l量MOD=00带8位位移量MOD=01带16位位移量MOD=10000AXAL000[BX+SI][BX+SI+D8][BX+SI+D16]001

6、CXCL001[BX+DI][BX+DI+D8][BX+SI+D16]010DXDL010[BP+SI][BP+SI+D8][BP+SI+D16]011BXBL011[BP+DI][BP+DI+D8][BP+DI+D16]100SPAH100[SI][SI+D8][SI+D16]101BPCH101[DI][DI+D8][DI+D16]110SIDH110(直接寻址)[BP+D8][BP+D16]111DIBH111[BX][BX+D8][BX+D16]例如:指令MOVAH,[BX+DI+50H]

7、。代码格式如下。OPCODEDWMODREGR/MDISP—8100010100110000101010000指令码:8A6150H。指令ADDDISP[BX][DI],DX;DISP=4523H代码格式:OPCODEDWMODREGR/MDISP—LoDISP—Hi00000001100100010010001101000101指令码为:01912345H。一、用试探法-e100000000000000(或用F命令填充100~105单元内容都为0)-u100105个字节结论:操作码字节前六位为0

8、00000(二进制)看来是一条ADD指令,而且只占两个字节。上述指令即为三个指令码为0000的指令解读指令码为0000代码格式:OPCODEDWMODREGR/M0000000000000000OPCODE:可有反汇编结果看出当操作码是000000是执行加法指令;D:D指出操作数的传送方向:D=0寄存器操作数为源操作数,而指令ADDA,B表示A=A+B,所以寄存器操作数放在右边;W:W指出操作数类型:W=0为字节;REG:字段规定一个寄存器操作数,上面已经判断它作为源操作数。由RE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。