第3章 指令系统.docVIP

  • 2
  • 0
  • 约4.91万字
  • 约 45页
  • 2019-09-14 发布于湖北
  • 举报
第3章 指令系统和寻址方式 计算机是通过执行指令序列来解决问题的。每种计算机都有一组指令集供给用户使用,这组指令集就称为计算机的指令系统。目前,一般小型或微型计算机的指令系统可以包括几十种或百余种指令。本章主要介绍8086/80286 的16位指令系统。但对于32位机来说也是完全兼容的。 汇编语言程序就是由指令序列构成,指令就是汇编语言程序中的语句。所以本章内容是学习的重点,也是编制程序的基础。通过学习,应该掌握汇编语言常用指令的格式和功能,并能应用这些指令编制程序的片段。 3.1 寻址方式 指令的操作对象是数据。在一条指令中通常要指出数据所存放的地址,所以计算机中的指令由操作码字段和操作数字段两部分组成。操作码字段指示计算机所要执行的操作,而操作数字段则指出在指令执行操作的过程中所需要的操作数。例如,加法指令中由操作码指明做加法操作,由操作数字段提供加数和被加数,还要约定在何处存放结果。操作数字段可以是操作数本身,也可以是操作数地址,还可以是指向操作数地址的指针或其它有关操作数的信息。 操作数字段可以有一个、二个或三个,通常称为一地址、二地址或三地址指令。例如,加1指令只要指出需要加1的操作数,它只需要指定一个操作数,所以单操作数指令就是一地址指令。运算型指令似乎使用三地址指令为好,除给出参加运算的两个操作数外,还可以指出运算结果的存放地址。运算型指令也可使用二地址指令,以指明两个操作数,运算结果存放到其中约定的一个操作数地址,此时分别称两个操作数为源操作数和目的操作数。显然在指令执行前这两个操作数都作为输入参加运算,但指令执行后将把运算结果存放到目的操作数的地址之中。就是说,经过运算后,其中一个参加运算的操作数将会丢失。对此,如果这个操作数需要保留的话,可以为它先准备一个副本。可见二地址指令也可以处理运算的问题,而且指令的长度可以得到控制。 所谓寻址方式(addressing mode)就是指令中寻找操作数据的方式,同时寻址方式也规定了指令的结构和格式。 3.1.1 指令结构 80x86汇编语言指令的一般格式为: [标号:] 指令助记符 [操作数] [;注释] 例如: START: MOV AX,DATA ;DATA 送AX 方括号[]中的内容为可选项。各部分的意义说明如下: 1.标号 标号是一个符号地址,用来表示指令在内存中的位置,以便程序中的其他指令能引用该 指令。它通常作为转移指令的操作数,以表示转向的目标地址。标号后应加冒号‘:’。 2.指令助记符 指令助记符表示指令名称,是指令功能的英文缩写。如‘MOV’表示传送指令。 3.操作数 操作数表示指令要操作的数据或数据所在的地址。80x86指令一般带有1个或2个操作数,少数指令不需要操作数,很少有3个操作数。对于2个操作数,左边的将存放操作结果称作目的操作数,右边的称作源操作数。2个操作数之间用逗号‘,’分隔。 操作数可以是寄存器、常量、变量,也可以由表达式构成。 4.注释 注释由分号‘;’开始,为了便于程序更容易理解而用来对指令的功能加以说明。汇编程序对注释部分不作处理。超过一行的注释,在每行都必须以分号开头。 可见一条指令中,只是指令助记符和操作数是不可少的,而指令助记符比较简单,对每一种操作确定对应的二进制代码就可以了,但操作数的情况就比较复杂和多样。 3.1.2 操作数的寻址方式 对于指令的操作数,80x86 提供了多种表示方法,以指出操作数或操作数的地址,提高了指令的灵活性和多样性,同时也带来复杂性,但寻址方式还是有其规则的。在80x86系列中,8086/8088和80286的字长l6位,通常一条指令只处理8位和16位数据。本节主要介绍l6位机的寻址方式,对32位机也是适用的。为讨论的方便,寻址方式以传送指令为例予以说明。 1.立即寻址方式(immediate addressing) 操作数就在指令中(紧跟在操作码之后),这种寻址方式称为立即寻址方式。操作数作为指令的一部分存放在代码段里,当机器从内存取指令到CPU时,操作数就连同一起被取走,当CPU开始执行这条指令时,就可以立即得到操作数而无须再到内存去取,所以这样的操作数称为立即数。 例3.1 MOV AL, 6H 则指令执行以后,(AL)=06H 指令中立即数6在机器中是8位而不是4位。 例3.2 MOV AX,1234H 则指令执行以后,(AX)=1234H,即(AH)=12H,(AL)=34H,遵循高位数据在高地址的规定。 需要注意的是,立即数只能作为源操作数,而不能用于目的操作数,并且源操作数长度应与目的操作数长度一致。 例如32位机器可以用:MOV EAX 2.寄存器寻址方式(r

文档评论(0)

1亿VIP精品文档

相关文档