Chinaunix首页 | 论坛 | 博客
  • 博客访问: 136488
  • 博文数量: 42
  • 博客积分: 2521
  • 博客等级: 少校
  • 技术积分: 440
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-31 21:29
文章分类

全部博文(42)

文章存档

2011年(1)

2010年(33)

2009年(8)

我的朋友

分类:

2010-11-02 10:26:42

第一 基本概念

指令控制与存储程序是计算机的基本特征

      CPU根据指令的要求执行相应的操作,指令从存储器中获取。

      程序:使计算机完成一个任务的一组命令或指令序列。

      指令:使计算机执行某一特定操作的二进制编码。 (为了记忆和表示的方便,通常使用助记符来表示)

      指令系统:CPU所能够执行的指令的全集。

      机器语言:二进制指令编码

      汇编语言:用指令助记符和伪指令组成

      高级语言:接近于自然语言,使用方便

       (汇编语言和高级语言都需要使用编译器,翻译成机器语言,才能够被计算机识别并执行)

 

     寻址方式

      操作码:规定所要执行的操作类型指令

      操作数:所要处理的数据或数据的位置信息

      在操作数部分通常不是直接给出操作数的数据本身,而是给出该数据的位置信息,我们把如何获得数据的方式称为寻址方式。

     例如:指令 MOV AX,1234H

     在这条指令里有两个操作数,按照指令中所处的位置,将前者称为目的操作数,后者称为源操作数。该指令的作用是把数据1234H传送到AX中。源操作数是“立即”寻址方式,目的操作数是“寄存器”寻址方式。

 

第二 寻址方式

一、数据的寻址方式

(一)固定寻址

      指令中已经默认对微处理器中的某寄存器进行操作,不用在指令中指明使用的寄存器。

      例如:AAA指令,只有操作码,没有操作数,但是已经规定是进行BCD码加法运算以后对AL进行调整。

(二)立即寻址

操作数直接写在指令中,在指令译码执行时,可以立即得到,

同时把操作数也称为“立即数”。

(三)寄存器寻址

      操作数放在微处理器内部的寄存器中,在指令中直接指出寄存器的名字。

立即寻址和寄存器寻址的例子在前面已经举过。

这三种寻址方式直接在处理器内部获得数据,操作速度快。

(四)存储器操作数的寻址方式

操作数存放在存储器中,指令执行时必须通过总线在存储器中存取操作数。EU根据指令中给出的寻址方式计算出16位的偏移量,称为有效地址(EA)送到BIU,经过地址加法器生成20位实际物理地址后对存储器进行操作。一般在表示EA时,用[操作数]表示。

计算EA要费时,进行总线操作较慢,所以存储器操作数寻址比前三种要慢。

1、直接寻址

MOV AX,[1234H] ;在源操作数中直接给出EA。

 

在上例中,默认使用的是数据段,如果要使用其它段,可以使用段超越前缀声明。例如:MOV  AX,ES:[1234H]

在指令中,有四个段超越前缀:CS、DS、ES、SS

2、间接寻址

MOV AX,[BX];在源操作数中给出一个表示EA的寄存器名。

可以表示EA的寄存器有4个BX、SI、DI、BP。

BP 默认使用堆栈段

BX

SI 默认使用数据段

DI

3、相对寻址

MOV AX,[BX+1000H];在源操作数中给出的是寄存器和立即           数,EA是它们的和。

有时也写成:MOV  AX,BX[1000H] 或 MOV  AX,1000H[BX]

 在C语言中常使用的全局数组,一般写成x[0],x[1],x[2]等形式,实际上x在编译的时候就换成具体的在数据段中分配的位置,例如是1000H。

那么就是1000H[BX]这种形式。

4、基址变址寻址

MOV AX,[BX+SI];用基址寄存器和变址寄存器的和表示EA。

5、相对基址变址寻址

MOV  AX,[BX+SI+1000H]

用基址寄存器、变址寄存器和立即数的和表示EA。

       在对存储器中操作数寻址中,如果表示的EA中有BP,默认使用堆栈段;否则默认使用数据段。也可以使用段超越前缀来指明要使用的段。

 

(五)I/O端口操作数的寻址方式

       操作数存放在I/O端口中,指令执行时必须通过累加器(AX或AL)存取操作数。在8086中端口地址是独立编址的,需要使用专门的指令来进行操作。共有2条:输入指令 IN 和 输出指令 OUT。

1、直接寻址

IN   AL,60H;在端口寻址时,地址不需要加[ ]。

当端口地址可以用一个字节表示时,可以使用直接寻址。

2、间接寻址

MOV DX,1000H

OUT DX,AL;实际上就是用DX来间接表示端口地址。

比较:

MOV  DX,AX;把寄存器AX中的数据传送到寄存器DX中。

OUT  DX,AL ;把寄存器AL中的数据输出到DX所表示的I/O端口上去。

 

二、程序的寻址方式

(一)段内直接寻址

短跳转:把IP的内容加上一个字节补码数作为新的IP。

近调转:把IP的内容加上二个字节补码数作为新的IP。

(二)段内间接寻址

用寄存器或是存储器操作数的内容赋给IP。

(三)段间直接寻址

直接在指令中给出新的CS和IP内容。

(四)段间间接寻址

用存储器操作数的内容赋给CS和IP寄存器。

 

第三指令系统

 8086微处理器指令系统中有133条指令,根据指令的操作性质可分为六大类

1、传送类指令

2、运算类指令

3、逻辑类指令

4、转移类指令

5、串操作指令

6、控制类指令

阅读(2217) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-02 17:34:56

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com