当前位置:文档之家› 8086指令的机器码表示

8086指令的机器码表示

3
§3-2 指令的机器码表示方法
一、机器语言指令的编码目的和特点
1、零操作数指令 、
CLC ;机器码为F8H 机器码为
2、单操作数指令 、
INC AX INC BX ;机器码为40H 机器码为 ;机器码为43H 机器码为
3、双操作数指令 、
MOV AL, 04 ;机器码为B004H 机器码为
4、三操作数指令 、
10
§3-2 指令的机器码表示方法
例:求指令MOV SP,BX的机器码 求指码表示方法
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 。 字节编码为
ADC AX, BX ;该指令完成操作数AX、BX和CF位相加。 位相加。 该指令完成操作数 、 和 位相加
4
§3-2 指令的机器码表示方法
二、机器语言指令代码的编制
1、编码格式说明: 编码格式说明:
以寄存器之间或寄存器与存储器之间交换数据的MOV指 指 以寄存器之间或寄存器与存储器之间交换数据的 令,来说明指令的编码格式。 来说明指令的编码格式。
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字节编码为 。
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
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。 。
微型计算机原理与接口技术
第三讲 佘青山
86919130 qsshe@
There’s always more to learn, and there are always better ways to do what you’ve done before. —DONANLD E. KNUTH
第三章 8086的寻址方式和指令系统 8086的寻址方式和指令系统
内容提要
8086的寻址方式 的寻址方式 微机系统指令的机器码表示方法(自学) 微机系统指令的机器码表示方法(自学) 8086的指令系统 的指令系统
2
§3-2 指令的机器码表示方法(自学) 指令的机器码表示方法(自学)
一、机器语言指令的编码目的和特点
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。 。
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 指令的机器码表示方法
17
第三章待续 谢谢大家!
There’s always more to learn, and there are always better ways to do what you’ve done before. —DONANLD E. KNUTH
汇编语言源程序: 汇编语言源程序:
即主要由指令系统组成的语言)编写的程序。 用汇编语言 (即主要由指令系统组成的语言)编写的程序。
编译程序 执行
源程序 编码特点: 编码特点:
机器码
运算结果
8086指令的二进制编码非常多,很难以一张表实现指令与机器语言的对照。 8086指令的二进制编码非常多,很难以一张表实现指令与机器语言的对照。 指令的二进制编码非常多 为每种基本指令类型给出一个编码格式, 为每种基本指令类型给出一个编码格式,对照格式填上不同的数字表示不同 的寻址方式、数据类型,即可求得每条指令的机器码。 的寻址方式、数据类型,即可求得每条指令的机器码。 8086指令系统采用变长指令,指令的长度可由1 8086指令系统采用变长指令,指令的长度可由1~6字节组成。 指令系统采用变长指令 字节组成。 8086机器指令有零个或多个操作数。 8086机器指令有零个或多个操作数。 机器指令有零个或多个操作数
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。 。
相关主题