8086指令的机器码表示
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
§3-2 指令的机器码表示方法
例:求指令MOV SP,BX的机器码 求指令 , 的机器码
11
§3-2 指令的机器码表示方法
3、寄存器与存储器间传送指令的编码 、
例:求指令MOV CL, [BX+l234H]的机器码 求指令 , 的机器码 解:指令的功能是将有效地址为(BX+1234H)存储单元中的数据字 指令的功能是将有效地址为 存储单元中的数据字 节传送到CL中 节传送到 中。 该指令的编码格式为: 数据. 该指令的编码格式为:100010DW MOD REG R/M 数据. 第1、2字节可通过查表得到;第3字节存放 位位移量的低字节 、 字节可通过查表得到; 字节存放16位位移量的低字节 字节可通过查表得到 字节存放 34H; 第4字节存放高字节 ; 字节存放高字节12H 。 字节存放高字节 所以该指令的4字节编码为8A 所以该指令的 字节编码为 8F 34 12H 。 字节编码为
其中,第一个字节: 高6位是操作码100010; 位 W位说明传递数据的类型是字(W=l)还是字节(W=0); 位 D位标明数据传送的方向:D=0,数据从寄存器传出 位 传出; 传出 D=1,数据传至寄存器;
6
§3-2 指令的机器码表示方法
其中,第二个字节:
REG字段 字段:寄存器号,用3位编码寻址8种不同的寄存器,再根据第一字节中 字段 W位,选择8位或16位寄存器。如表3-l所示。(对使用段寄存器的指令,REG字 对使用段寄存器的指令, 对使用段寄存器的指令 字 段占2位 段占 位) 8086寄存器编码表 寄存器编码表
ADC AX, BX ;该指令完成操作数AX、BX和CF位相加。 位相加。 该指令完成操作数 、 和 位相加
4
§3-2 指令的机器码表示方法
二、机器语言指令代码的编制
1、编码格式说明: 编码格式说明:
以寄存器之间或寄存器与存储器之间交换数据的MOV指 指 以寄存器之间或寄存器与存储器之间交换数据的 令,来说明指令的编码格式。 来说明指令的编码格式。
3
§3-2 指令的机器码表示方法
一、机器语言指令的编码目的和特点
1、零操作数指令 、
CLC ;机器码为F8H 机器码为
2、单操作数指令 、
INC AX INC BX ;机器码为40H 机器码为 ;机器码为43H 机器码为
3、双操作数指令 、
MOV AL, 04 ;机器码为B004H 机器码为
4、三操作数指令 、
15 11 10 9 8 7 6 5 4 3 2 1 0
1
0
0
0
1
0
D
W
MOD
REG
R/M
操作码
典型的MOV指令的编码格式 典型的MOV指令的编码格式
5
§3-2 指令的机器码表示方法
15 11 10 9 8 7 6 5 4 3 2 1 0
1
0
0
0
1
0
D
W
MOD
REG
R/M
操作码
典型的MOV指令的编码格式 典型的MOV指令的编码格式
14
§3-2 指令的机器码表示方法
例:求指令MOV [BX+2100H], 0FA50H的机器码 求指令 , 的机器码
15
§3-2 指令的机器码表示方法
5、包含段寄存器的指令的编码 、
例:求指令MOV DS, AX的机器码 求指令 , 的机器码 寄存器的内容传送到数据段寄存器DS。 解:指令的功能是将AX寄存器的内容传送到数据段寄存器 。 指令的功能是将 寄存器的内容传送到数据段寄存器 该指令的编码格式为: 该指令的编码格式为:10001110 MOD 0 REG R/M . 段寄存器DS的编码为 ,即REG字段为 ;另一个操作数也是 字段为11; 段寄存器 的编码为11, 的编码为 字段为 寄存器,所以MOD=11,而R/M字段应填上AX的三位代码 寄存器,所以 = , 字段应填上 的三位代码000 . 字段应填上 的三位代码 所以,该指令的 字节编码为8E 字节编码为 所以,该指令的2字节编码为 D8H。 。
16
§3-2 指令的机器码表示方法
6、段超越前缀指令的编码 、
例:求指令MOV [BX], DL的机器码 求指令 , 的机器码
指令的功能是将DL寄存器的内容传送到有效地址为 寄存器的内容传送到有效地址为(BX)的字节存储单元。 的字节存储单元。 解:指令的功能是将 寄存器的内容传送到有效地址为 的字节存储单元 该指令(不带段超越前缀)的编码格式为: 该指令(不带段超越前缀)的编码格式为:100010DW MOD 0 REG R/M . 数据从寄存器传出, 数据从寄存器传出,则D=0;传递数据为字节,则W=0;进而,REG=010; ;传递数据为字节, ;进而, ; 另一个操作数是存储器,所以 另一个操作数是存储器,所以MOD=00,而R/M=111 .该指令的编码是在不带段 = , 超越前缀的指令代码为88 17H. 超越前缀的指令代码为 . 在指令代码前加一个8位的段超越的缀代码,代码的格式为 ×× ,其 位的段超越的缀代码 格式为001×× ××110, 在指令代码前加一个 位的段超越的缀代码,代码的格式为 的代码为01,所以指令的第1个字 中××位表明段超越寄存器。由于段寄存器CS的代码为 ,所以指令的第 个字 ××位表明段超越寄存器。由于段寄存器 的代码为 位表明段超越寄存器 节的编码为00101110,即 2EH. , 节的编码为 所以,该指令的机器码为 所以,该指令的机器码为2E 88 17H。 。
第三章 8Байду номын сангаас86的寻址方式和指令系统 8086的寻址方式和指令系统
内容提要
8086的寻址方式 的寻址方式 微机系统指令的机器码表示方法(自学) 微机系统指令的机器码表示方法(自学) 8086的指令系统 的指令系统
2
§3-2 指令的机器码表示方法(自学) 指令的机器码表示方法(自学)
一、机器语言指令的编码目的和特点
15 11 10 9 8 7 6 5 4 3 2 1 0
1
0
0
0
1
0
D
W
MOD
REG
R/M
操作码
典型的MOV指令的编码格式 典型的MOV指令的编码格式
MOD字段和 字段和R/M字段: 字段: 字段和 字段
这类MOV指令的两个操作数中有一个必为寄存器,另一个操作数可能是 指令的两个操作数中有一个必为寄存器, 这类 指令的两个操作数中有一个必为寄存器 寄存器,也可能是存储器单元,由指令代码的第二个字节个的 寄存器,也可能是存储器单元,由指令代码的第二个字节个的MOD和R/M字 和 字 段指定。 段指定。 对指令进行编码时,若包含 位位移量 位位移量, 对指令进行编码时,若包含8位位移量,则在编码后增加一个宇节存放位 移量disp-L;若包含16位的位移量,则增加2个字节存放位移量:第3个字节存 移量 ;若包含 位的位移量,则增加 个字节存放位移量: 个字节存 位的位移量 个字节存放位移量 放位移量的低字节disp-L,第4个字节存放位移量高字节 , 个字节存放位移量高字节disp-H。 放位移量的低字节 个字节存放位移量高字节 。
8
§3-2 指令的机器码表示方法
MOD和R/M的编码( 见表 -2:24种不同的编码格式,D8表示 位位移量, 和 的编码( 种不同的编码格式, 表示 位位移量, 表示8位位移量 的编码 见表3- : 种不同的编码格式 D16为16位位移量) 为 位位移量 位位移量)
MOD(右) ( R/M(下) 下 000 001 010 011 100 101 110 111 [BX]+[SI] [BX]+[DI] [BP]+[SI] [BP]+[DI] [SI] [DI] D16(直接地址) 直接地址) 直接地址 [BX] [BX]+[SI]+D8 [BX]+[DI]+D8 [BP]+[SI]+D8 [BP]+[DI]+D8 [SI]+D8 [DI]+D8 [BP]+D8 [BX]+D8 [BX]+[SI]+D16 [BX]+[DI]+D16 [BP]+[SI]+D16 [BP]+[DI]+D16 [SI]+D16 [DI]+D16 [BP]+D16 [BX]+D16 00 01 10 W=0 AL CL DL BL AH CH DH BH 11 W=1 AX CX DX BX SP BP SI DI
REG 000 011 001 010 100 111 101 110 W=1( W=1(字) AX BX CX DX SP DI BP SI W=0(字节) W=0(字节) AL BL CL DL AH BH CH DH
7
REG 01 11 00 10
段寄存器 CS DS ES SS
§3-2 指令的机器码表示方法
微型计算机原理与接口技术
第三讲 佘青山
86919130 qsshe@hdu.edu.cn
There’s always more to learn, and there are always better ways to do what you’ve done before. —DONANLD E. KNUTH
12
§3-2 指令的机器码表示方法
例:求指令MOV CL, [BX+l234H]的机器码 求指令 , 的机器码
13
§3-2 指令的机器码表示方法
4、立即数寻址指令的编码 、
例:求指令MOV [BX+2100H], 0FA50H的机器码 求指令 , 的机器码 解:指令的功能是将16位立即数送到指定有效地址的字存储单元 指令的功能是将 位立即数送到指定有效地址的字存储单元 送列[BX+2100H]单元,高字节 单元, 中;其中低字节50H送列 其中低字节 送列 单元 高字节FAH送到 送到 (BX+2101H)单元。 单元。 单元 该指令的编码格式为: 该指令的编码格式为:110011W MOD 000 R/M 数据 数据 (若W=1). ) 指令中不但有16位立即数,还有 位位移量 位位移量; 指令中不但有 位立即数,还有16位位移量; 位立即数 字节编码为 所以,该指令的 字节编码为C7 87 00 21 50 FA H。 所以,该指令的6字节编码为 。
汇编语言源程序: 汇编语言源程序:
即主要由指令系统组成的语言)编写的程序。 用汇编语言 (即主要由指令系统组成的语言)编写的程序。
编译程序 执行
源程序 编码特点: 编码特点:
机器码
运算结果
8086指令的二进制编码非常多,很难以一张表实现指令与机器语言的对照。 8086指令的二进制编码非常多,很难以一张表实现指令与机器语言的对照。 指令的二进制编码非常多 为每种基本指令类型给出一个编码格式, 为每种基本指令类型给出一个编码格式,对照格式填上不同的数字表示不同 的寻址方式、数据类型,即可求得每条指令的机器码。 的寻址方式、数据类型,即可求得每条指令的机器码。 8086指令系统采用变长指令,指令的长度可由1 8086指令系统采用变长指令,指令的长度可由1~6字节组成。 指令系统采用变长指令 字节组成。 8086机器指令有零个或多个操作数。 8086机器指令有零个或多个操作数。 机器指令有零个或多个操作数
17
第三章待续 谢谢大家!
There’s always more to learn, and there are always better ways to do what you’ve done before. —DONANLD E. KNUTH
9
§3-2 指令的机器码表示方法
2、寄存器间传送指令的编码
例:求指令MOV SP,BX的机器码 求指令 , 的机器码 寄存器的内容送到SP寄存器中 解:指令的功能是将BX寄存器的内容送到 寄存器中。 指令的功能是将 寄存器的内容送到 寄存器中。 该指令的编码格式为: 该指令的编码格式为:100010DW MOD REG R/M. W=1:表示传送的是字数据; = :表示传送的是字数据; REG字段:选择SP,则REG字段编码=100; 字段:选择 , 字段编码= ; 字段 字段编码 D位=1:表示数据传至所选的寄存器 位 :表示数据传至所选的寄存器(SP); ; MOD=11:因另一个操作数 也是寄存器。 = :因另一个操作数BX也是寄存器 也是寄存器。 根据W= 及寄存器名称为 及寄存器名称为BX,从表3-2查得 查得R/M=011。 根据 =1及寄存器名称为 ,从表 查得 = 。 所以,该指令的 字节编码为8B 字节编码为 所以,该指令的2字节编码为 E3H。 。