微机系统与接口技术(钱晓捷)第二章_第1页
微机系统与接口技术(钱晓捷)第二章_第2页
微机系统与接口技术(钱晓捷)第二章_第3页
微机系统与接口技术(钱晓捷)第二章_第4页
微机系统与接口技术(钱晓捷)第二章_第5页
已阅读5页,还剩202页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第2 2章章微处理器内部结构及微处理器内部结构及指令系统指令系统2.1 微处理器的内部结构微处理器的内部结构从应用角度(不是从内部工作原理)展开从应用角度(不是从内部工作原理)展开典型典型8位微处理器的基本结构位微处理器的基本结构8088/8086的功能结构的功能结构8088/8086的寄存器结构的寄存器结构8088/8086的存储器结构的存储器结构为学习指令系统打好基础为学习指令系统打好基础例如:例如:关心用户关心用户“可编程可编程”寄存器,寄存器,不关心无法操纵的不关心无法操纵的“透明透明”寄存器寄存器内部数据总线内部数据总线控制总线控制总线数据总线数据总线地址总线地址总线暂存器暂存器累

2、加器累加器ALU标志寄存器标志寄存器指指令令寄寄存存指指令令译译码码时序时序和和控制控制逻辑逻辑通通 用用寄存器组寄存器组地地 址址寄存器组寄存器组地址地址总线总线控制控制数据数据总线总线控制控制2.1.1 微处理器的基本结构微处理器的基本结构1.算术逻辑单元(运算器)算术逻辑单元(运算器)2.寄存器组寄存器组3.指令处理单元(控制器)指令处理单元(控制器)2.1.2 8088/8086的功能结构的功能结构8088的的内部结构内部结构从功能上分成两个单元从功能上分成两个单元1. 总线接口单元总线接口单元BIU管理管理8088与系统总线的接口与系统总线的接口负责负责CPU对存储器和外设进行访问对

3、存储器和外设进行访问2. 执行单元执行单元EU负责指令的译码、执行和数据的运算负责指令的译码、执行和数据的运算两个单元相互独立,分别完成各自操作,两个单元相互独立,分别完成各自操作,还可以还可以并行执行并行执行,实现指令预取(,实现指令预取(指令读取指令读取和执行的流水线操作和执行的流水线操作)2.1.3 8088/8086的寄存器结构的寄存器结构8088/8086的寄存器组有的寄存器组有8个通用寄存器个通用寄存器4个段寄存器个段寄存器1个标志寄存器个标志寄存器1个指令指针寄存器个指令指针寄存器它们均为它们均为1616位位! !图示图示 汇编语言程序员看到的处理器,就是寄存器汇编语言程序员看到

4、的处理器,就是寄存器 所以,一定要熟悉这些寄存器的名称和作用所以,一定要熟悉这些寄存器的名称和作用1. 通用寄存器通用寄存器8088有有8个通用的个通用的16位寄存器位寄存器(1)数据寄存器)数据寄存器: AX BX CX DX(2)变址寄存器)变址寄存器: SI DI(3)指针寄存器)指针寄存器: BP SP4个数据寄存器还可以分成高个数据寄存器还可以分成高8位和低位和低8位两位两个独立的寄存器,这样又形成个独立的寄存器,这样又形成8个通用的个通用的8位寄存器位寄存器AX: AH ALBX: BH BLCX: CH CLDX: DH DL(1)数据寄存器)数据寄存器AX称为称为累加器累加器(

5、Accumulator)使用频度最高。用于算术、逻辑运算以及与外设传送信使用频度最高。用于算术、逻辑运算以及与外设传送信息等息等BX称为称为基址寄存器基址寄存器(Base address Register)常用做存放存储器地址常用做存放存储器地址CX称为称为计数器计数器(Counter)作为循环和串操作等指令中的隐含计数器作为循环和串操作等指令中的隐含计数器DX称为称为数据寄存器数据寄存器(Data register)常用来存放双字长数据的高常用来存放双字长数据的高16位,或存放外设端口地址位,或存放外设端口地址(2)变址寄存器)变址寄存器16位变址寄存器位变址寄存器SI和和DI常用于存储器变

6、址寻址方式时提供地址常用于存储器变址寻址方式时提供地址SI是源地址寄存器(是源地址寄存器(Source Index)DI是目的地址寄存器(是目的地址寄存器(Destination Index)在串操作类指令中,在串操作类指令中,SI、DI还有较特殊的还有较特殊的用法用法 现在不必完全理解,以后会详细展开现在不必完全理解,以后会详细展开(3)指针寄存器)指针寄存器指针寄存器用于寻址内存指针寄存器用于寻址内存堆栈堆栈内的数据内的数据SPSP为堆栈指针寄存器(为堆栈指针寄存器(Stack Pointer), ,指示指示堆栈段栈顶的位置(偏移地址)堆栈段栈顶的位置(偏移地址)BPBP为基址指针寄存器(

7、为基址指针寄存器(Base Pointer),表示),表示数据在堆栈段中的基地址数据在堆栈段中的基地址SPSP和和BPBP寄存器与寄存器与SSSS段寄存器联合使用以确段寄存器联合使用以确定堆栈段中的存储单元地址定堆栈段中的存储单元地址堆栈堆栈(Stack)是主存中一个特殊的)是主存中一个特殊的区域,采用区域,采用“先进后出先进后出”或或“后进先出后进先出”存取操作方式、而不是随机存取方式。存取操作方式、而不是随机存取方式。用用8088/8086形成的微机系统中,堆形成的微机系统中,堆栈区域被称为堆栈段栈区域被称为堆栈段2. 指令指针寄存器指令指针寄存器IP(Instruction Pointe

8、r)为指令指针寄存)为指令指针寄存器,指示主存储器指令的位置器,指示主存储器指令的位置随着指令的执行,随着指令的执行,IP将自动修改以指示下将自动修改以指示下一条指令所在的存储器位置一条指令所在的存储器位置IP寄存器是一个寄存器是一个专用专用寄存器寄存器IPIP寄存器与寄存器与CSCS段寄存器联合使用以确定下段寄存器联合使用以确定下一条指令的存储单元地址一条指令的存储单元地址3. 标志寄存器标志寄存器标志标志(Flag)用于反映指令执行结果)用于反映指令执行结果或控制指令执行形式或控制指令执行形式8088处理器的各种标志形成了一个处理器的各种标志形成了一个16位的标志寄存器位的标志寄存器FLA

9、GS(程序状态字(程序状态字PSW寄存器)寄存器) 程序设计需要利用标志的状态程序设计需要利用标志的状态标志寄存器标志寄存器-分类分类状态标志状态标志用来记录程序运行结果的状态用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它信息,许多指令的执行都将相应地设置它CF ZF SF PF OF AF控制标志控制标志可由程序根据需要用指令设置可由程序根据需要用指令设置,用于控制处理器执行指令的方式,用于控制处理器执行指令的方式DF IF TFOF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0标志寄存器标志寄存器FLAGS进位标志进位标志CF(Carry Flag)

10、当运算结果的最高有效位有进位(加法)或借当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置位(减法)时,进位标志置1,即,即CF1; 否则否则CF03AH + 7CHB6H,没有进位:,没有进位:CF = 0AAH + 7CH(1)26H,有进位:,有进位:CF = 1零标志零标志ZF(Zero Flag)若运算结果为若运算结果为0,则,则ZF1;否则否则ZF03AH7CHB6H,结果不是零:,结果不是零:ZF084H7CH(1)00H,结果是零:,结果是零:ZF1 注意:注意:ZF为为1表示的结果是表示的结果是0符号标志符号标志SF(Sign Flag)运算结果最高位为运算结果

11、最高位为1,则,则SF1; 否则否则SF03AH7CHB6H,最高位,最高位D71:SF184H7CH(1)00H,最高位,最高位D70:SF0 有符号数据用最高有效位表示数据的符号有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标志的状态所以,最高有效位就是符号标志的状态奇偶标志奇偶标志PF(Parity Flag)当运算结果最低字节中当运算结果最低字节中“1”的个数为的个数为零或偶数时,零或偶数时,PF1;否则;否则PF03AH7CHB6H10110110B结果中有结果中有5个个“1”,是奇数:,是奇数:PF0 PF标志仅反映最低标志仅反映最低8位中位中“1”的个数是的个数是偶

12、或奇,即使是进行偶或奇,即使是进行16位字操作位字操作溢出标志溢出标志OF(Overflow Flag)若算术运算的结果有溢出,则若算术运算的结果有溢出,则OF1; 否则否则 OF03AH + 7CHB6H,产生溢出:,产生溢出:OF1AAH + 7CH(1)26H,没有溢出:,没有溢出:OF0溢出和进位的区别溢出和进位的区别溢出标志溢出标志OF和进位标志和进位标志CF是两个意义是两个意义不同的标志不同的标志进位标志表示无符号数运算结果是否进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确超出范围,运算结果仍然正确溢出标志表示有符号数运算结果是否溢出标志表示有符号数运算结果是否超出范围

13、,运算结果已经不正确超出范围,运算结果已经不正确辅助进位标志辅助进位标志AF(Auxiliary Carry Flag)3AH7CHB6H,D3有进位:有进位:AF1运算时运算时D D3 3位(低半字节)有进位或位(低半字节)有进位或借位时,借位时,AFAF1 1;否则;否则AFAF0 0方向标志方向标志DF(Direction Flag)用于串操作指令中,控制地址的变化方向:用于串操作指令中,控制地址的变化方向:设置设置DF0,存储器地址自动增加;,存储器地址自动增加;设置设置DF1,存储器地址自动减少,存储器地址自动减少CLDCLD指令复位方向标志:指令复位方向标志:DFDF0 0STDS

14、TD指令置位方向标志:指令置位方向标志:DFDF1 1中断允许标志中断允许标志IF(Interrupt-enable Flag)控制可屏蔽中断是否可以被处理器响应:控制可屏蔽中断是否可以被处理器响应:设置设置IF1,则允许中断;,则允许中断;设置设置IF0,则禁止中断,则禁止中断CLICLI指令复位中断标志:指令复位中断标志:IFIF0 0STISTI指令置位中断标志:指令置位中断标志:IFIF1 1陷阱标志陷阱标志TF(Trap Flag)用于控制处理器进入单步操作方式:用于控制处理器进入单步操作方式:设置设置TF0,处理器正常工作;,处理器正常工作;设置设置TF1,处理器,处理器单步执行指

15、令单步执行指令单步执行指令单步执行指令处理器在每条指令执行结处理器在每条指令执行结束时,便产生一个编号为束时,便产生一个编号为1 1的内部中断的内部中断这种内部中断称为这种内部中断称为单步中断单步中断所以所以TFTF也称为也称为单步标志单步标志n利用单步中断可对程序进行逐条指令的调试利用单步中断可对程序进行逐条指令的调试n这种逐条指令调试程序的方法就是这种逐条指令调试程序的方法就是单步调试单步调试2.1.4 8088/8086的存储器结构的存储器结构存储器存储器是计算机存储信息的地方。掌握数是计算机存储信息的地方。掌握数据据存储格式存储格式,以及存储器的,以及存储器的分段管理分段管理对以对以后

16、的汇编程序设计非常重要后的汇编程序设计非常重要你能区别你能区别寄存器寄存器、存储器存储器(主存主存)、外存外存(包包括硬盘、光盘、磁带等存储介质括硬盘、光盘、磁带等存储介质)吗?吗?答案答案寄存器、存储器和外存的区别寄存器、存储器和外存的区别寄存器寄存器是处理器(是处理器(CPU)内部)内部暂存数据暂存数据的存储单的存储单元,以名称表示,例如:元,以名称表示,例如:AX,BX.等等存储器存储器也就是平时所说的也就是平时所说的主存主存,也叫,也叫内存内存,可直,可直接与接与CPU进行数据交换。主存利用地址区别进行数据交换。主存利用地址区别外存外存主要指用来长久保存数据的外部存储介质,主要指用来长

17、久保存数据的外部存储介质,常见的有硬盘、光盘、磁带、常见的有硬盘、光盘、磁带、U盘等。外存的数据盘等。外存的数据只能通过主存间接地与只能通过主存间接地与CPU交换数据交换数据程序及其数据可以长久存放在外存,在运行需要程序及其数据可以长久存放在外存,在运行需要时才进入主存时才进入主存1. 数据的存储格式数据的存储格式计算机中信息的单位计算机中信息的单位二进制位二进制位BitBit:存储一位二进制数:存储一位二进制数:0 0或或1 1字节字节ByteByte:8 8个二进制位,个二进制位,D D7 7D D0 0字字WordWord:1616位,位,2 2个字节,个字节,D D1515D D0 0

18、双字双字DWordDWord:3232位,位,4 4个字节,个字节,D D3131D D0 0最低有效位最低有效位LSBLSB:数据的最低位,:数据的最低位,D D0 0位位最高有效位最高有效位MSBMSB:数据的最高位,对应字节:数据的最高位,对应字节、字、双字分别指、字、双字分别指D D7 7、D D1515、D D3131位位存储单元及其存储内容存储单元及其存储内容每个存储单元都有一个编号;被称每个存储单元都有一个编号;被称为为存储器地址存储器地址每个存储单元存放一个字节的内容每个存储单元存放一个字节的内容0002H0002H单元存放有一个数据单元存放有一个数据34H34H表达为表达为0

19、002H0002H34H34H多字节数据存放方式多字节数据存放方式多字节数据在存储器中占连续的多个多字节数据在存储器中占连续的多个存储单元:存储单元:存放时,低字节存入低地址,高字节存存放时,低字节存入低地址,高字节存入高地址;入高地址;表达时,用它的低地址表示多字节数据表达时,用它的低地址表示多字节数据占据的地址空间。占据的地址空间。图图2-52-5中中0002H0002H“字字”单元的内容为:单元的内容为:0002H = 1234H0002H = 1234H0002H0002H号号“双字双字”单元的内容为:单元的内容为:0002H = 78561234H0002H = 78561234H

20、80 x86处理器采用处理器采用“低对低、高对低对低、高对高高”的存储形式,被称为的存储形式,被称为“小端方式小端方式Little Endian”。 相对应还存在相对应还存在“大端方式大端方式Big Endian”。数据的地址对齐数据的地址对齐同一个存储器地址可以是字节单元地址、字单元同一个存储器地址可以是字节单元地址、字单元地址、双字单元地址等等地址、双字单元地址等等字单元安排在字单元安排在偶地址偶地址(xxx0B)、双字单元安排)、双字单元安排在在模模4地址地址(xx00B)等,为)等,为“地址对齐(地址对齐(Align)”(N字节数据安排的起始地址能够被字节数据安排的起始地址能够被N整除

21、)整除)对于不对齐地址的数据,处理器访问时,需要额对于不对齐地址的数据,处理器访问时,需要额外的访问存储器时间外的访问存储器时间应该将数据的地址对齐,以取得较高的存取速度应该将数据的地址对齐,以取得较高的存取速度2. 存储器的分段管理存储器的分段管理8088CPU8088CPU有有2020条地址线条地址线最大可寻址空间为最大可寻址空间为2 220201MB1MB物理地址范围从物理地址范围从00000H00000HFFFFFHFFFFFH8088CPU8088CPU将将1MB1MB空间分成许多空间分成许多逻辑段(逻辑段(SegmentSegment)每个段最大限制为每个段最大限制为64KB64K

22、B段地址的低段地址的低4 4位为位为0000B0000B这样,一个存储单元除具有一个唯一的物这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址理地址外,还具有多个逻辑地址物理地址和逻辑地址物理地址和逻辑地址8088CPU存储系统中,对应每个物理存存储系统中,对应每个物理存储单元都有一个唯一的储单元都有一个唯一的20位编号,就是物位编号,就是物理地址,从理地址,从00000H FFFFFH分段后在用户编程时,采用逻辑地址,分段后在用户编程时,采用逻辑地址,形式为形式为段基地址段基地址 : : 段内偏移地址段内偏移地址分隔符分隔符物理地址物理地址 14700H逻辑地址逻辑地址 146

23、0H:100H逻辑地址逻辑地址段地址段地址说明逻辑段在主存中的起始位置说明逻辑段在主存中的起始位置8088规定段地址必须是模规定段地址必须是模16地址:地址:xxxx0H省略低省略低4位位0000B,段地址就可以用,段地址就可以用16位数位数据表示,就能用据表示,就能用16位位段寄存器段寄存器表达段地址表达段地址偏移地址偏移地址说明主存单元距离段起始位置的说明主存单元距离段起始位置的偏移量偏移量每段不超过每段不超过64KB,偏移地址也可用,偏移地址也可用16位位数数据表示据表示物理地址和逻辑地址的转换物理地址和逻辑地址的转换将逻辑地址中的段地址左移将逻辑地址中的段地址左移4位,加上位,加上偏移

24、地址就得到偏移地址就得到20位物理地址位物理地址一个物理地址可以有多个逻辑地址一个物理地址可以有多个逻辑地址逻辑地址逻辑地址 1460:1001460:100、1380:F001380:F00物理地址物理地址 14700H 14700H14700H 14700H146014600 0H H 100H100H14700H14700H138013800 0H H F00HF00H14700H14700H段地址左移段地址左移4 4位位加上偏移地址加上偏移地址得到物理地址得到物理地址3. 段寄存器段寄存器8088有有4个个16位段寄存器位段寄存器CS指明指明代码段代码段的起始地址的起始地址SS指明指明

25、堆栈段堆栈段的起始地址的起始地址DS指明指明数据段数据段的起始地址的起始地址ES指明指明附加段附加段的起始地址的起始地址每个段寄存器用来确定一个逻辑段的起每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途始地址,每种逻辑段均有各自的用途代码段寄存器代码段寄存器CS(Code Segment)代码段用来存放程序的指令序列代码段用来存放程序的指令序列代码段寄存器代码段寄存器CS存放代码段的段地址存放代码段的段地址指令指针寄存器指令指针寄存器IP指示下条指令的偏移地址指示下条指令的偏移地址处理器利用处理器利用CS:IP取得下一条要执行的指令取得下一条要执行的指令堆栈段寄存器堆栈段寄存

26、器SS(Stack Segment)堆栈段确定堆栈所在的主存区域堆栈段确定堆栈所在的主存区域堆栈段寄存器堆栈段寄存器SS存放堆栈段的段地址存放堆栈段的段地址堆栈指针寄存器堆栈指针寄存器SP指示堆栈栈顶的偏移地址指示堆栈栈顶的偏移地址处理器利用处理器利用SS:SP操作堆栈顶的数据操作堆栈顶的数据数据段寄存器数据段寄存器DS(Data Segment)数据段存放运行程序所用的数据数据段存放运行程序所用的数据数据段寄存器数据段寄存器DS存放数据段的段地址存放数据段的段地址各种主存寻址方式(有效地址各种主存寻址方式(有效地址EA)得到存储器)得到存储器中操作数的偏移地址中操作数的偏移地址处理器利用处理

27、器利用DS:EA存取数据段中的数据存取数据段中的数据附加段寄存器附加段寄存器ES(Extra Segment)附加段是附加的数据段,也保存数据:附加段是附加的数据段,也保存数据:附加段寄存器附加段寄存器ES存放附加段的段地址存放附加段的段地址各种主存寻址方式(有效地址各种主存寻址方式(有效地址EA)得到存储器)得到存储器中操作数的偏移地址中操作数的偏移地址处理器利用处理器利用ES:EA存取附加段中的数据存取附加段中的数据串操作指令将附加段作为其目的操作数的串操作指令将附加段作为其目的操作数的存放区域存放区域如何分配各个逻辑段如何分配各个逻辑段程序的程序的指令指令序列必须安排在代码段序列必须安排

28、在代码段程序使用的程序使用的堆栈堆栈一定在堆栈段一定在堆栈段程序中的程序中的数据数据默认默认是安排在数据段,是安排在数据段,也经常安排在附加段,尤其是串操作也经常安排在附加段,尤其是串操作的目的区必须是附加段的目的区必须是附加段数据的存放比较灵活,实际上可以存数据的存放比较灵活,实际上可以存放在任何一种逻辑段中放在任何一种逻辑段中段超越前缀指令段超越前缀指令没有指明时,一般的数据访问在没有指明时,一般的数据访问在DS段段;使用;使用BP访问主存,则在访问主存,则在SS段段默认的情况允许改变,需要使用段超默认的情况允许改变,需要使用段超越前缀指令;越前缀指令;8088指令系统中有指令系统中有4个

29、:个:CS:;代码段超越,使用代码段的数据;代码段超越,使用代码段的数据SS: ;堆栈段超越,使用堆栈段的数据;堆栈段超越,使用堆栈段的数据DS: ;数据段超越,使用数据段的数据;数据段超越,使用数据段的数据ES: ;附加段超越,使用附加段的数据;附加段超越,使用附加段的数据段超越的示例段超越的示例没有段超越的指令实例:没有段超越的指令实例:MOV AX,2000H ;AXDS:2000H;从默认的;从默认的DS数据段取出数据数据段取出数据采用段超越前缀的指令实例:采用段超越前缀的指令实例:MOV AX,ES:2000H;AXES:2000H;从指定的;从指定的ES附加段取出数据附加段取出数据

30、段寄存器的使用规定段寄存器的使用规定访问存储器的方式访问存储器的方式默认默认可超越可超越偏移地址偏移地址取指令取指令CSCS无无IPIP堆栈操作堆栈操作SSSS无无SPSP一般数据访问一般数据访问DSDSCS ES SSCS ES SS有效地址有效地址EAEABPBP基址的寻址方式基址的寻址方式SSSSCS ES DSCS ES DS有效地址有效地址EAEA串操作的源操作数串操作的源操作数DSDSCS ES SSCS ES SSSISI串操作的目的操作数串操作的目的操作数ESES无无DIDI寄存器的总结寄存器的总结8088有有8个个8位通用寄存器、位通用寄存器、8个个16位通用位通用寄存器寄存

31、器8088有有6个状态标志和个状态标志和3个控制标志个控制标志8088将将1MB存储空间分段管理,有存储空间分段管理,有4个段个段寄存器,对应寄存器,对应4种逻辑段种逻辑段8088有有4个段超越前缀指令,用于明确指定个段超越前缀指令,用于明确指定数据所在的逻辑段数据所在的逻辑段 熟悉上述内容后,就可以进入下节熟悉上述内容后,就可以进入下节8088的内部结构的内部结构1 2 3 4 内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路总线总线执行部分执行部分控制电路控制电路ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI

32、DI通用通用寄存器寄存器地址地址加法加法器器指令队列指令队列执行部件执行部件 (EU)总线接口部件总线接口部件 (BIU)16位位20位位8位位8位位8088的指令执行过程的指令执行过程图图2-5 80882-5 8088的存储格式的存储格式D7D0字节字节D15D0字字D31D0双字双字D7 D000006H78H00005H56H00004H12H00003H34H00002H00001H00000H低地址低地址LSBMSB2.2 8088/8086的数据寻址方式的数据寻址方式从从8088/8086的指令格式入手,论述:的指令格式入手,论述:立即数寻址方式立即数寻址方式寄存器寻址方式寄存器

33、寻址方式存储器寻址方式存储器寻址方式进而熟悉进而熟悉8088/8086汇编语言指令格式,尤汇编语言指令格式,尤其是其中操作数的表达方法其是其中操作数的表达方法为展开为展开8088/8086指令系统做好准备指令系统做好准备指令的助记符格式指令的助记符格式操作数操作数2 2,常被称为源操作数,常被称为源操作数srcsrc,它表示参与指,它表示参与指令操作的一个对象令操作的一个对象操作数操作数1 1,成被称为目的操作数,成被称为目的操作数destdest,它不仅可以,它不仅可以作为指令操作的一个对象,还可以用来存放指令作为指令操作的一个对象,还可以用来存放指令操作的结果操作的结果分号后的内容是对指令

34、的解释分号后的内容是对指令的解释 操作码操作码 操作数操作数1,操作数操作数2 ;注释注释汇编语句格式汇编语句格式操作数的寻址方式操作数的寻址方式指令系统设计了多种操作数的来源指令系统设计了多种操作数的来源寻找操作数的过程就是操作数的寻址寻找操作数的过程就是操作数的寻址把寻找操作数的方式叫做(操作数)寻址方式把寻找操作数的方式叫做(操作数)寻址方式理解操作数的寻址方式是理解指令功能的前提理解操作数的寻址方式是理解指令功能的前提操作数采取哪一种寻址方式操作数采取哪一种寻址方式一方面,会影响处理器执行指令的速度和效率一方面,会影响处理器执行指令的速度和效率另一方面,另一方面,对程序设计也很重要对程

35、序设计也很重要MOV指令指令2.2.1 立即数寻址方式立即数寻址方式指令中的操作数直接存放在机器代码中,紧跟在指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)作码之后的主存单元中)这种操作数被称为这种操作数被称为立即数立即数imm可以是可以是8位数值位数值i8(00HFFH)也可以是也可以是16位数值位数值i16(0000HFFFFH)立即数寻址方式常用来给寄存器和存储单元赋值立即数寻址方式常用来给寄存器和存储单元赋值,多以常量形式出现,多以常量形式出现MOV AX, 0102H;AX0102H

36、2.2.2 寄存器寻址方式寄存器寻址方式操作数存放在操作数存放在CPU的内部寄存器的内部寄存器reg中:中:8位寄存器位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4个段寄存器个段寄存器seg:CS、DS、SS、ES寄存器名表示其内容(操作数)寄存器名表示其内容(操作数)MOV AX, BX;AXBX2.2.3 存储器寻址方式存储器寻址方式操作数在主存储器中,用主存地址表示操作数在主存储器中,用主存地址表示程序设计时,程序设计时,8088采用逻辑地址表示主存地址采用逻辑地址表示主存地址段地址在默认的或用段超

37、越前缀指定的段寄存器中段地址在默认的或用段超越前缀指定的段寄存器中指令中只需给出操作数的偏移地址(有效地址指令中只需给出操作数的偏移地址(有效地址EA)8086设计了多种设计了多种存储器寻址方式存储器寻址方式1、直接寻址方式、直接寻址方式2、寄存器间接寻址方式、寄存器间接寻址方式3、寄存器相对寻址方式、寄存器相对寻址方式4、基址变址寻址方式、基址变址寻址方式5、相对基址变址寻址方式、相对基址变址寻址方式1. 直接寻址方式直接寻址方式直接寻址方式的有效地址在指令中直接给出直接寻址方式的有效地址在指令中直接给出默认的默认的段地址在段地址在DS段寄存器,可使用段寄存器,可使用段超越前段超越前缀缀改变

38、改变用中括号包含有效地址,表达存储单元的内容用中括号包含有效地址,表达存储单元的内容MOV AX, 2000H;AXDS:2000HMOV AX, ES: 2000H;AXES:2000H2. 寄存器间接寻址方式寄存器间接寻址方式有效地址存放在基址寄存器有效地址存放在基址寄存器BX或变址寄存或变址寄存器器SI、DI中中默认的默认的段地址在段地址在DS段寄存器,可使用段超段寄存器,可使用段超越前缀改变越前缀改变MOV AX, BX;AXDS:BX3. 寄存器相对寻址方式寄存器相对寻址方式有效地址有效地址是寄存器内容与有符号是寄存器内容与有符号8位或位或16位位移位位移量之和,寄存器可以是量之和,

39、寄存器可以是BX、BP或或SI、DI有效地址有效地址BX/BP/SI/DIBX/BP/SI/DI8/168/16位位移量位位移量段地址对应段地址对应BX/SI/DI寄存器寄存器默认是默认是DS,对应,对应BP寄存器寄存器默认是默认是SS;可用段超越前缀改变;可用段超越前缀改变MOV AX, SI+06H;AXDS:SI+06HMOV AX, 06HSI;AXDS:SI+06H4. 基址变址寻址方式基址变址寻址方式有效地址有效地址由基址寄存器(由基址寄存器(BX或或BP)的内容加上)的内容加上变址寄存器(变址寄存器(SI或或DI)的内容构成:)的内容构成:有效地址有效地址BX/BPSI/DI段地

40、址对应段地址对应BX基址寄存器基址寄存器默认是默认是DS,对应,对应BP基基址寄存器址寄存器默认是默认是SS;可用段超越前缀改变;可用段超越前缀改变MOV AX, BX+SI;AXDS:BX+SIMOV AX, BXSI;AXDS:BX+SI5. 相对基址变址寻址方式相对基址变址寻址方式有效地址有效地址是基址寄存器(是基址寄存器(BX/BP)、变址寄存器)、变址寄存器(SI/DI)与一个)与一个8位或位或16位位移量之和:位位移量之和:有效地址有效地址BX/BPSI/DI8/16位位移量位位移量段地址对应段地址对应BX基址寄存器基址寄存器默认是默认是DS,对应,对应BP基基址寄存器址寄存器默认

41、是默认是SS;可用段超越前缀改变;可用段超越前缀改变MOV AX, BX+DI+6;AXDS:BX+DI+6MOV AX, 6BX+DIMOV AX, 6BXDI存储器寻址方式中的变量存储器寻址方式中的变量变量指示内存中的数据,变量名具有地址属性。变量指示内存中的数据,变量名具有地址属性。存储器寻找方式中经常采用变量形式存储器寻找方式中经常采用变量形式变量的定义变量的定义WVAR DW 1234H;定义;定义16位变量位变量WVAR,具有初值,具有初值1234H;假设其偏移地址为;假设其偏移地址为10H单独引用变量名是直接寻址方式单独引用变量名是直接寻址方式MOV AX,WVAR ;指令功能:

42、;指令功能:AX1234H;等同于;等同于 MOV AX,0010H相对寻址方式中,变量名表示其偏移地址,相当相对寻址方式中,变量名表示其偏移地址,相当于位移量于位移量MOV AX, DI+WVAR ; MOV AX,WVARDI;等同于;等同于 MOV AX,DI+0010H相对寻址方式中的位移量相对寻址方式中的位移量在寄存器相对和相对基址变址寻址方式中,其位在寄存器相对和相对基址变址寻址方式中,其位移量不仅可用常量表示,也可用符号表示移量不仅可用常量表示,也可用符号表示这个符号可以是变量名,例如这个符号可以是变量名,例如WVAR变量,而且变量,而且支持多种表达形式支持多种表达形式MOV A

43、X, DI+WVAR ;等同于;等同于 MOV AX, WVARDIMOV AX,BX+SI+WVAR;等同于;等同于 MOV AX, BXSI+WVAR;等同于;等同于 MOV AX, WVARBX+SI;等同于;等同于 MOV AX, WVARBXSI操作数的表达符号操作数的表达符号 寻址方式寻址方式操作数符号及含义操作数符号及含义立即数寻址立即数寻址 imm代表代表i8或或i16,i8:一个:一个8位立即数,位立即数, i16:一个:一个16位立即数位立即数寄存器寻址寄存器寻址 reg代表代表r8或或r16,r8:8位通用寄存器,位通用寄存器, r16:16位通用寄存器位通用寄存器seg

44、段寄存器段寄存器存储器寻址存储器寻址 mem代表代表m8或或m16 ,m8:8位存储器位存储器操作数,操作数, m16:16位存储器操作数位存储器操作数 掌握操作数的寻址方式后,进入指令学习掌握操作数的寻址方式后,进入指令学习汇编语言的两种语句格式汇编语言的两种语句格式执行性语句执行性语句执行性语句用于表达处理执行性语句用于表达处理器指令器指令(也称为硬指令也称为硬指令),汇编后对应一条指,汇编后对应一条指令代码。由处理器指令组成的代码序列是令代码。由处理器指令组成的代码序列是程序设计的主体程序设计的主体标号标号: 硬指令助记符硬指令助记符 操作数操作数,操作数操作数 ;注释注释说明性语句说明

45、性语句说明性语句用于表达伪指说明性语句用于表达伪指令,指示源程序如何汇编、变量怎样定义令,指示源程序如何汇编、变量怎样定义、过程怎么设置等、过程怎么设置等名字名字 伪指令助记符伪指令助记符 参数参数,参数参数, ;注释注释MOV指令的功能指令的功能立即数寻址方式立即数寻址方式寄存器寻址方式寄存器寻址方式直接寻址方式直接寻址方式间接寻址方式间接寻址方式相对寻址方式相对寻址方式基址变址寻址方式基址变址寻址方式相对基址变址寻址方式相对基址变址寻址方式2.3 数据传送类指令数据传送类指令数据传送是计算机中最基本、最重要的一种操作数据传送是计算机中最基本、最重要的一种操作, ,传送指令也是最常使用的一类

46、指令传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位除标志寄存器传送指令外,均不影响标志位重点掌握重点掌握MOV XCHG XLAT PUSH POP LEA2.3.1 通用数据传送指令通用数据传送指令提供方便灵活的通用传送操作提供方便灵活的通用传送操作有有3条指令条指令MOVXCHGXLAT1. 传送指令传送指令MOV(move)把一个字节或字的操作数从源地址传把一个字节或字的操作数从源地址传送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或

47、主存;立即数送寄存器或主存MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存演示演示MOV指令立即数传送指令立即数传送mov cl,4;cl4cl4,字节传送,字节传送mov dx,0ffh;dx00ffhdx00ffh,字传送,字传送mov si,200h;si0200hsi0200h,字传送,字传送mov

48、 bvar,0ah;字节传送字节传送;假设;假设bvarbvar是一个字节变量,定义如下:是一个字节变量,定义如下:bvar bvar dbdb 0 0mov wvar,0bh;字传送字传送;假设;假设wvarwvar是一个字变量,定义如下:是一个字变量,定义如下:wvar wvar dwdw 0 0明确指令是字节操作还是字操作明确指令是字节操作还是字操作MOV指令寄存器传送指令寄存器传送mov ah,al;ahal,字节传送,字节传送mov bvar,ch;bvarch ,字节传送,字节传送mov ax,bx;axbx,字传送,字传送mov ds,ax;dsax,字传送,字传送mov bx,

49、al;bxal,字节传送,字节传送 寄存器具有明确的字节和字类型寄存器具有明确的字节和字类型MOV指令存储器传送指令存储器传送mov al,bx;alds:bxmov dx,bp;dxss:bp+0mov dx,bp+4;dxss:bp+4mov es,si;esds:si 不存在存储器向存储器的传送指令不存在存储器向存储器的传送指令MOV指令段寄存器传送指令段寄存器传送mov si,dsmov ax,ds;axdsmov es,ax;esaxds 对段寄存器的操作不灵活对段寄存器的操作不灵活MOV指令传送功能图解指令传送功能图解MOV指令也并非任意传送指令也并非任意传送!立即数立即数段寄存器

50、段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器非法指令的主要现象:非法指令的主要现象:两个操作数的类型不一致两个操作数的类型不一致无法确定是字节量还是字量操作无法确定是字节量还是字量操作两个操作数都是存储器两个操作数都是存储器段寄存器的操作有一些限制段寄存器的操作有一些限制非法指令两个操作数类型不一致非法指令两个操作数类型不一致在绝大多数双操作数指令中,目的操作数和源操在绝大多数双操作数指令中,目的操作数和源操作数必须具有一致的数据类型,或者同为字量,作数必须具有一致的

51、数据类型,或者同为字量,或者同为字节量,否则为非法指令或者同为字节量,否则为非法指令MOV AL, 050AH;非法指令,;非法指令,修正:修正:;mov ax,050ahMOV SI, DL;非法指令,;非法指令,修正:修正:;mov dh,0;mov si,dx非法指令无法确定是字节量还是字量操作非法指令无法确定是字节量还是字量操作当无法通过任一个操作数确定是操作类型时,需当无法通过任一个操作数确定是操作类型时,需要利用汇编语言的操作符显式指明要利用汇编语言的操作符显式指明MOV BX+SI, 255;非法指令,;非法指令,修正:修正:;mov byte ptr bx+sibyte ptr

52、 bx+si,255;byte ptr byte ptr 说明是字节操作说明是字节操作;mov word ptr bx+siword ptr bx+si,255;word ptr word ptr 说明是字操作说明是字操作非法指令两个操作数都是存储器非法指令两个操作数都是存储器8088指令系统除串操作指令外,不允许两个操作指令系统除串操作指令外,不允许两个操作数都是存储单元(存储器操作数)数都是存储单元(存储器操作数)MOV buf2, buf1;非法指令,;非法指令,修正:修正:;假设;假设buf2和和buf1是两个字变量是两个字变量;mov ax,buf1;mov buf2,ax;假设;假

53、设buf2和和buf1是两个字节变量是两个字节变量;mov al,buf1;mov buf2,al非法指令段寄存器的操作有一些限制非法指令段寄存器的操作有一些限制8088指令系统中,能直接对段寄存器操作的指令指令系统中,能直接对段寄存器操作的指令只有只有MOV等个别传送指令,并且不灵活等个别传送指令,并且不灵活MOV DS, ES;非法指令,;非法指令,修正:修正:;mov ax,es;mov ds,axMOV DS, 100H;非法指令,;非法指令,修正:修正:;mov ax,100h;mov ds,ax MOV CS, SI;非法指令;非法指令;指令存在,但不能执行;指令存在,但不能执行2

54、. 交换指令交换指令XCHG(exchange)把两个地方的数据进行互换把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与寄存器之间对换数据寄存器与存储器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHG reg,reg/memXCHG reg,reg/mem;reg reg reg/memreg/mem演示演示例例2.2 数据交换数据交换mov ax,1199hmov ax,1199h;ax=1199hax=1199hxchg ah,alxchg ah,al;ax=9911hax=9911h;等同于;等同于 xchg al,

55、ahxchg al,ahmov wvar,5566hmov wvar,5566h;wvarwvar是一个字量变量是一个字量变量xchg ax,wvarxchg ax,wvar ;ax=5566hax=5566h,wvar=9911hwvar=9911h;等同于;等同于 xchg wvar,axxchg wvar,ax xchg al,byte ptr wvar+1xchg al,byte ptr wvar+1;ax=5599hax=5599h,wvar=6611hwvar=6611h;“byte ptr wvar+1byte ptr wvar+1”强制为字节量,只取高字强制为字节量,只取高字节

56、与节与ALAL类型交换,否则数据类型不匹配类型交换,否则数据类型不匹配3. 换码指令换码指令XLAT(translate)将将BX指定的缓冲区中、指定的缓冲区中、AL指定的位移处的一个指定的位移处的一个字节数据取出赋给字节数据取出赋给AL换码指令执行前:换码指令执行前:在主存建立一个在主存建立一个字节量表格字节量表格,内含要转换成的目的代码,内含要转换成的目的代码表格首地址表格首地址存放于存放于BXBX,ALAL存放相对表格首地址的存放相对表格首地址的位移量位移量换码指令执行后:换码指令执行后:将将ALAL寄存器的内容转换为寄存器的内容转换为目标代码目标代码XLATXLAT;alds:bx+a

57、lalds:bx+al演示演示2.3.2 堆栈操作指令堆栈操作指令堆栈是一个堆栈是一个“后进先出后进先出FILOFILO”(或说(或说“先进先进后出后出FILOFILO”)的主存区域,位于堆栈段中;)的主存区域,位于堆栈段中;SSSS段寄存器段寄存器记录其段地址记录其段地址堆栈只有一个出口,即当前栈顶;用堆栈只有一个出口,即当前栈顶;用堆栈堆栈指针寄存器指针寄存器SPSP指定指定堆栈只有两种基本操作:进栈和出栈,对堆栈只有两种基本操作:进栈和出栈,对应两条指令应两条指令PUSH和和POP图示图示进栈指令进栈指令PUSH进栈指令先使堆栈指针进栈指令先使堆栈指针SP减减2,然后把一,然后把一个字操

58、作数存入堆栈顶部个字操作数存入堆栈顶部PUSH r16/m16/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/seg演示演示push axpush 2000h出栈指令出栈指令POP出栈指令把栈顶的一个字传送至指定的目出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针的操作数,然后堆栈指针SP加加2POP r16/m16/segPOP r16/m16/seg; r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2pop axpop wvar演示演示堆栈操作的特点堆栈操作的特点堆

59、栈操作的单位是字,进栈和出栈只对字量堆栈操作的单位是字,进栈和出栈只对字量字量数据从栈顶压入和弹出时,都是低地址字节字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节送低字节,高地址字节送高字节堆栈操作遵循先进后出原则,但可用存储器寻址堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据方式随机存取堆栈中的数据堆栈段是程序中不可或缺的一个内存区,常用来堆栈段是程序中不可或缺的一个内存区,常用来n临时存放数据临时存放数据n传递参数传递参数n保存和恢复寄存器保存和恢复寄存器2.3.3 标志操作指令标志操作指令1. 标志位操作指令标志位操作指令CLC;复位进位标志:

60、;复位进位标志:CF0STC;置位进位标志:;置位进位标志:CF1CMC;求反进位标志:;求反进位标志:CFCFCLD;复位方向标志:;复位方向标志:DF0STD;置位方向标志:;置位方向标志:DF1CLI;复位中断标志:;复位中断标志:IF0STI;置位中断标志:;置位中断标志:IF12. 标志寄存器低字节与标志寄存器低字节与AH的传送指令的传送指令3. 标志寄存器出入堆栈指令标志寄存器出入堆栈指令将存储器操作数的有效地址送至指定的将存储器操作数的有效地址送至指定的16位通用位通用寄存器寄存器有效地址传送指令有效地址传送指令LEA(load effective address)LEA r16

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论