文档介绍:第3章 80X86指令系统和汇编语言(1)
教学提示:
本章描述了80X86微处理器指令的多种寻址方式,描述了80X86指令系统中各指令的书写格式、指令含义及编程应用;
描述了汇编语言伪指令的书写格式和含义、汇编语言中语句的书写格式。
另外通过大量的实例描述了汇编语言程序设计的基本方法,详细介绍了循环、分支、子程序的设计方法和DOS功能调用。
教学目标:
要求熟练掌握8086微处理器指令系统的指令寻址方式、指令书写格式和含义、指令在编程中的使用;要求掌握汇编语言语句的书写格式;要求掌握伪指令的含义及在程序中的应用;能够编写完整的汇编语言源程序;要求掌握循环、分支、子程序设计的概念和方法;掌握常用的DOS功能调用。
这一章的重点是:
与8086微处理器相关的寻址方式、指令系统和汇编语言程序设计,对于80286型号以上的微处理器的相关知识,要求有基本的了解。
寻址方式
计算机是通过执行程序解决问题的,程序是由指令组成的。指令一般由操作码字段和操作数字段组成,8086/8088带有操作数字段的指令一般格式为:
操作码操作数
操作码 目的操作数,源操作数
操作码字段,指示计算机所要执行的操作。
操作数字段,指出指令执行操作过程使用的操作数或产生的结果。操作数字段可以是操作数本身,也可以是操作数地址,或是地址的一部分;还可以是指向操作数地址的指针或其它信息。
根据操作数字段的个数,一般分为:
一地址指令、二地址指令。
单操作数指令是一地址指令,如INC BX。
加法指令,除需要指出进行加法操作外,还要提供加数和被加数,结果一般保存在目的操作数中,如ADD AX,BX指令表示BX的内容加AX的内容,和保存在AX中。
操作数可以保存在寄存器、存储器或者I/O接口中。
与数据有关的寻址方式用来说明指令中操作数如何存放以及寻找操作数的方法。
另外有的指令不对数据操作,而是控制程序的执行顺序,如转移指令、调用子程序指令等。执行这些指令要改变程序的执行顺序。如何找到新的执行地址,称为与转移地址有关的寻址方式。
8086/8088微处理器的寻址方式完全相同,80386及后续型号的微处理器寻址方式基本相同,分别介绍如下。
8086寻址方式
在与数据有关的寻址方式中,操作数一般可以存放在寄存器、存储器或者I/O接口中。
寄存器或I/O接口寻址方式比较简单,存储器寻址方式比较多;与转移地址有关的寻址方式也涉及到存储器,寻址方式与存储器相关的内容介绍如下。
1. 8086存储器地址空间及存储器编址
8086微处理器只有20条地址线,因此可寻址内存空间为1MB, 地址由00000-FFFFFH编码,也就是说,内存划分为1M个单元,每个单元分配一个地址,每个单元中可以存放一字节的信息。指令对一个单元读出或者写入信息,必须给出这个单元的地址才能够进行。若存取的信息是1字节,则指令中给出这个单元的地址就可以了。
若指令中一次存储的信息是一个字(16位二进制数),则将字的低字节存放在存储器的低地址,高字节存放在存储器的高地址,但是在指令中只要给出低地址就可以了,不必给出2个地址,但是需要在指令中含有标识存储的是字还是字节的信息。
内存地址空间存放数据的起始地址可以在任意位置,但是字数据存放在偶数地址开始的存储器单元,读或者写时8086CPU只用1个总线周期;字数据存放在奇数地址开始的存储器单元,读或者写时8086CPU用2个总线周期,花费时间比较长。
上述前一种情况称为对准的字,对应地址是2的倍数;后一种情况称为未对准的字,对应地址不是2的倍数。
例如字数据55FFH如果存放在地址为02102的存储单元中,指的是字的低8位0FFH存放在地址为02102的存储单元中,字的高8位55H存放在地址为02103的存储单元中,是对准的字。