微型计算机原理与接口技术第三章总结

第三章 8086/8088 指令系统

3.1概述

        3.1.1指令的基本构成

                1)指令的一般格式

                        一条指令主要由操作码和操作数组成,8086指令的长度在1-7个字节之间

                                操作码占用一个字节或两个字节

                        一条指令的操作数可以没有或有一个,但最多只有两个。

                                指令在格式上有以下形式:

                                        1.零操作数指令

                                        2.单操作数指令

                                        3.双操作数指令

                2)指令中的操作数类型

                        分为三种:立即数操作数,寄存器操作数,存储器操作数

                        1.立即数操作数:即为常数,只能作为源操作数,不能作为目标操作数,因为

                                常数没有表示地址的含义

                        2.寄存器操作数:8086 CPU的8个通用寄存器和4个段寄存器,既可以

                                作为源操作数,也可以作为目标操作数

                                通用寄存器通常用来存放数据或者数据所在存储单元的偏移地址

                                段寄存器用来存放当前操作数的段基地址

                        3.存储器操作数

                                参加运算的数据是存放在内存中,在指令中既可以作为源操作数,

                                        也可以作为目标操作数

        3.1.2   指令的执行时间

                一条指令的执行时间包括取指令,取操作数,执行指令,传送结果,单位用

                        时钟周期数表示

                指令执行速度由快到慢排序:寄存器操作数,立即操作数,存储器操作数

        3.1.3   CISC 和 RISC 指令系统

3.2   寻址方式

        寻址方式分为两种类型:

                1.寻找操作数的地址

                2.寻找程序的地址

        3.2.1   立即寻址

                此方式只针对源操作数。此时源操作数是一个立即数,作为指令的一部分存放在

                        内存的代码段中,这里的立即数可以是8位或16位的整数,若为16位,存放时

                        低8位存放在低地址,高8位存放在高地址

        3.2.2   直接寻址

                表示参加运算的数据存放在内存中,存放的地址由指令直接给出。[]内用16位常数

                        表示存放数据的偏移地址。数据的段基址默认为数据段。其与立即寻址两者之间

                        存在区别,立即寻址后面的是数据本身,所以用[]加以区别

        3.2.3   寄存器寻址

                指令的操作数为CPU内部寄存器,例如MOV SI,AX

        3.2.4   寄存器间接寻址

                寄存器的内容为操作数的偏移地址,只允许是SI,DI,BX,BP。当选择SI,DI,BX作为

                        间址寄存器时,段基地址有DS决定;若选择BP作间址寄存器,则操作数

                        在堆栈段,段基地址由SS决定。例如MOV AX,[SI],此为使用了默认的段寄存器DS

                                若是使用了附加段,则为MOV AX,ES:[SI];若是间址寄存器采用BP,则操作数

                                默认存放在SS段

        3.2.5   寄存器相对寻址

                操作数在内存中的存放地址(偏移地址)由间址寄存器的内容加上指令中给出的

                        一个8位或16位的位移量组成,例如下面的写法都是等价的:

                        MOV AL,DATA[SI]

                        MOV AL,[SI]DATA

                        MOV AL,DATA+[SI]

                        MOV AL,[SI]+DATA

                        MOV AL,[DATA+SI]

                        MOV AL,[SI+DATA]

                                其中,AL=10XDS+SI+DATA

        3.2.6   基址-变址寻址

                        此方式是有一个基址寄存器(BX或BP)的内容和一个变址寄存器(SI或DI)的

                                内容相加而形成操作数的偏移地址。例如MOV AX,[BX][SI];

                                那么AX=10XDS+BX+SI

                                此时需注意:不允许将两个基址寄存器或两个变址寄存器放在一起寻址

                                        例如:MOV AX,[BX][BP]

                                                   MOV AX,[SI][DI]

        3.2.7    基址-变址-相对寻址

                        这是上一种方式的扩充,同时给出了一个8位或16位的位移量,下面几种写法等价

                                

                        MOV AX,DATA[SI][BX]

                        MOV AX,[SI][DATA+BX]

                        MOV AX,[BX+DATA+SI]

                        MOV AX,[BX]DATA[SI]

                        MOV AX,[BX+SI]DATA

                        同样,不允许将两个基址寄存器或两个变址寄存器放在一起寻址,例如

                                MOV AX,[BX][BP]DATA

                                MOV AX,DATA[SI][DI]

        3.2.8   隐含寻址

                有些指令的操作码中不禁包含了操作的性质,还隐含了部分操作数的地址,如MUL

                        只需要指明诚实的地址,而被乘数以及乘积的地址是隐含而固定的

3.3   8086指令系统

        3.3.1   数据传送指令

                1)通用数据传送指令

                       

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2012O_O

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值