微机课件第3章修改

上传人:E**** 文档编号:90924717 上传时间:2019-06-20 格式:PPT 页数:229 大小:2.47MB
返回 下载 相关 举报
微机课件第3章修改_第1页
第1页 / 共229页
微机课件第3章修改_第2页
第2页 / 共229页
微机课件第3章修改_第3页
第3页 / 共229页
微机课件第3章修改_第4页
第4页 / 共229页
微机课件第3章修改_第5页
第5页 / 共229页
点击查看更多>>
资源描述

《微机课件第3章修改》由会员分享,可在线阅读,更多相关《微机课件第3章修改(229页珍藏版)》请在金锄头文库上搜索。

1、第3章 指令系统和寻址方式,3.1 指令系统概述 3.2 8088/8086 CPU的寻址方式 3.3 8088/8086 CPU的指令系统 习题3,操作码:指示指令的操作类型; 操作数:指令所需操作数或操作数的地址,可位于寄存器、存储器或I/O端口;操作数可以没有,也可以只有一个,也可以有两个,一个源操作数,一个目的操作数。 例3-1: HLT ; 暂停指令,编码为F4H DEC BX; 编码为4BH MOV AX,CX ;将CX的内容送入AX中。,3.1 指令系统概述,1、指令格式 指令由两部分组成:操作码字段和地址码字段,格式如下:,3.2 8088/8086 CPU的寻址方式,8088

2、/8086 CPU的寻址分为两类,即数据寻址和指令寻址。 数据寻址方式:CPU用来获取操作数的存放地址及操作结果的存放地址的方法。,3.2.1 立即寻址方式 立即寻址方式指寻找的操作数紧跟在指令操作码之后。汇编语言格式表示为: 操作码 数字表达式 【例3-2】 MOV AX,267 MOV AL,10010011B AND 0FEH MOV AL,PORT1 MOV AX,DATA1,例中,“267”是数字;“10010011B AND 0FEH”是一个数字表达式;PORT1是一个用EQU定义的变量名,属于常数;DATA1是定义的段名,实际上就是段地址,是一常数。 对于数字表达式的编译:在汇编

3、立即寻址方式时,汇编程序首先计算出数字表达式的值,然后将其写入指令的地址码字段,这称为立即数。,【例3-3】 MOV AL,0FFH 操作的示意图如图3.2所示。,图3.2 8位立即寻址操作示意图,【例3-4】 MOV AX,1234H 操作的示意图如图3.3所示。 注意:这种寻址方式不能用于单操作数指令。若用于双操作数指令,也只能用于源操作数字段,不能用于目的操作数字段。,图3.3 16位立即寻址操作示意图,3.2.2 寄存器寻址方式 寄存器寻址是指寻找的操作数在某个寄存器中。汇编语言格式表示为: 操作码 寄存器名 如:AL,BX,CX,DS等。 【例3-5】MOV AX,BX MOV AL

4、,BL 例中,AX,BX是16位寄存器寻址方式;AL,BL是8位寄存器寻址方式。,3.2.3 存储器寻址方式 当操作数放在存储器中的某个单元时,CPU要访问存储器才能获得该操作数。如果存储器的存储单元地址是20位,把通过各种方法算出段内偏移地址(有效地址),结合段地址形成20位物理地址找到操作数的方法,统称为存储器寻址方式。 1. 直接寻址方式 直接寻址方式是指寻找的操作数的地址在指令中直接给出。格式表示为: 操作码 地址表达式 (或地址表达式) 操作码 数字表达式,【例3-6】 假设TABLE是在数据段定义的一个字节数组的首地址标号(变量名),其偏移地址为1000H,则指令 MOV AL,T

5、ABLE 或 MOV AL,TABLE+2 或 MOV AL,TABLE 或 MOV AL,TABLE+2 或 MOV AL,1000H 或 MOV AL,1000H+2 是等效的,都是直接寻址方式。,【例3-7】 MOV AX,1000H 如果(DS)=3000H,(31000H)=12H,(31001H)=34H,则指令执行完以后,(AX)=3412H。 注意:该寻址方式默认的段寄存器是DS。由于8086的存储器采用分段管理,因此寻找一个内存操作数,只能在某一段的64K范围内寻找。对于以上的寻址方式,系统都有一个基本的段约定。当操作数段地址不在约定的段寄存器时,可以使用段超越前缀取代其约定

6、段。,段超越前缀形式为:“ 段寄存器名:” 段超越其汇编格式为 段寄存器名:地址表达式 或 段寄存器名:数字表达式 或 段寄存器名:地址表达式 或 段寄存器名:数字表达式 例如: MOV AX,ES:BP ;段地址在ES MOV AX,CS:BX SI ;段地址在CS,段地址的基本约定和允许超越的情况如表所示:,【例3-8】 假设TABLE是在附加数据段定义的一个字节数组的首地址标号,其偏移地址为1000H,则指令 MOV AL,ES:TABLE 或 MOV AL,ES:TABLE 或 MOV AL,ES:1000H 或 MOV AL,ES:1000H 是等效的,都表示将字节数组的第一个数组元

7、素送入AL寄存器中。,2. 寄存器间接寻址方式 在计算机中通常将BX、BP称为基址寄存器,SI、DI称为变址寄存器,寻址时操作数的地址被放在这些寄存器中。 寄存器间接寻址方式在汇编格式中表示为: 基址寄存器名或变址寄存器名 【例3-9】 MOV AX,BX MOV AX,SI 例中,BX、SI都是寄存器间接寻址方式。寄存器间接寻址要用方括号括起来,以便与寄存器操作数相区别。,汇编寻址这种方式时,汇编程序将BX、SI、DI或BP寄存器的地址编号写入指令的地址码字段,当机器执行含有这种寻址方式的指令时,依据地址码字段的值访问得到寄存器的值,将该值作为操作数的偏移地址。 注意:如果指令中指定的寄存器

8、是BX、SI、DI,则操作数默认在数据段中,取DS寄存器的值作为操作数的段地址值;如果指令中指定的寄存器是BP,则操作数默认在堆栈段中,取SS寄存器的值作为操作数的段地址值,从而算得操作数的20位物理地址,继而访问到操作数。,寻址方式的地址计算: 物理地址 = (DS)* 16 + (BX)或(SI)或(DI) 物理地址 =(SS)* 16 + (BP),例如:MOV AX,BX 若(DS)2000H,(BX)1000H,物理地址20000H1000H21000H。指令执行前,(AX)2030H,(21000H)A0H,(21001H)50H,指令执行后,(21000H)0A0H,(21001

9、H)50H ,(AX)50A0H 。指令执行情况如下:,注意: Mov指令的源操作数的长度必须与目的操作数一致,否则会出错。例如,不能将AH寄存器的内容传送到CX中去,尽管CX寄存器放得下AH的内容,但汇编程序不知道将它放到CH还是CL中。 源操作数可为寄存器寻址;目的操作数也可为寄存器寻址;源操作数和目的操作数可同时为寄存器寻址。,3. 寄存器相对寻址 操作数的偏移地址是指定寄存器的值与一个整数之和。汇编格式为: 变量名基址寄存器名或变址寄存器名或变量名+基址寄存器名或变址寄存器名 符号名基址寄存器名或变址寄存器名或基址寄存器名或变址寄存器名+符号名 基址寄存器名或变址寄存器名数字表达式,+

10、,1)物理地址 = (DS)* 16 +(BX)+DISP8 (SI)、(DI)、DISP16类同-偏移量。 2)物理地址= (SS) *16 + (BP)+DISP16 例: 如果 (DS)=3000H, (SI)= 2000H, COUNT=3000H, 则执行指令 MOV AX,CONUTSI,求出此种寻址方式对应的有效地址和物理地址。 有效地址= 2000H + 3000H = 5000H 物理地址=(DS)*16 + 5000H =30000H + 5000H =35000H,物理地址的计算:,例3-10:设执行前: (AX)=0040H,(BX)=0030H,(DS)=2000H,

11、(20036H)=0050H 执行指令: ADD 6BX,AX 执行:(20036H)+(AX) 20036H 执行后:(AX)=0040H,(BX)=0030H,(DS)=2000H,(20036H)=0090H。,【例3-11】 TABLE是在数据段定义的一个字节数组的首地址标号(也称变量名),则有如下程序: MOV SI,5 MOV AL,TABLESI ;可以写为:MOV AL,TABLE+SI ABC EQU 5 LEA SI,TABLE ;LEA是取偏址指令,本句是把TABLE偏址SI MOV AL,ABCSI ;可以写为:MOV AL,ABC+SI 如:BX+6、BP-100H、

12、SI+OFFSET TABLE都是寄存器相对寻址方式。,【例3-12】 TABLE是数据段中定义的一个变量,假设它在数据段中的偏移地址为0100H,有指令: MOV AX,TABLESI 若(DS)=2000H,(SI)=00A0H,(201A0H)=12H,(201A1H)=34H,则物理地址为:=20000H+0100H+00A0H=20000H+01A0H=201A0H。 也可用段超越前缀重新指定段寄存器,例如: MOV AL,ES:TABLESI 此寻址方式一般用于访问表格,表格首地址可设置为变量名,通过修改SI、DI、BX或BP的内容来访问表格的任一数据项的存储单元。,4、基址变址寻

13、址方式: BX、BP叫基址寄存器,因此用它们进行寻址的又叫基址寻址。SI、DI叫变址寄存器,用它们进行寻址的又叫变址寻址。在处理数组时,SI用于源数组的变址寻址;DI则用于目的数组的变址寻址。 操作数所在存储单元的有效地址为基址寄存器(BX或BP)与变址寄存器(SI或DI)内容之和。 用这种寻址方式,存储器操作数的有效地址EA是由指令指定的一个基址寄存器和一变址寄存器的内容之和,结果按16位归算(只取结果的低16位有效)。,例: MOV AX,BX+DI 或 MOV AX,BXDI DS:(BX)+(DI) 字存储单元内容送AX。 MOV AX,CS:BX SI ;段地址在CS 例: MOV

14、AX,BP+SI 或 MOV AX,BPSI SS:(BP)+(SI) 字存储单元内容送AX。 例: MOV AX,BXSI 或写为: MOV AX,BX+SI 设DS2000H,BX8000H,SI90FEH,则: BXSI8000H90FEH110FEH 取低16位有效得: EA10FEH PA2000H16EA210FEH 指令执行后,将把210FEH和210FFH相邻两个单元内容送到AX。而AL(210FEH),AH(210FFH)。,【例3-14】 MOV AX,BX SI(或写为MOV AX,BX+SI) 若 (DS)=2000H,(BX)=0500H,(SI)=0010H 则 偏

15、移地址=0500H+0010H=0510H 20位物理地址=20000H+0510H =20510H 如(20510H)=12H,(20511H)=34H,操作的示意图如图3.5所示。,图3.5 基址变址寻址操作示意图,5、基址变址加位移量间接寻址 操作数所在单元的有效地址为基址寄存器(BX或BP)与变址寄存器(SI或DI)的内容之和再加上位移量(8位或16位)。 (BX) (SI) DISP8 (BP) (DI) DISP16 物理地址 = (DS)* 16 +(BX)产生的有效地址 物理地址 = (SS)* 16 +(BP)产生的有效地址,有效地址=,+,+,例:已知:(DS)=3000H,(BX)=2000H,(SI)=1000H,MK=0250H 指令: MOV AX,MKBXSI 或 MOV AX,MKBX+SI 或 MOV AX,MK+BX+SI 有效地址:MK+(BX)+(SI)=0250H+2000H+1000H3250H 物理地址:(DS)*16 +有效地址 =30000H+3250H=33250H 执行结果:将33250H单元内容送AL,33251H内容送AH。,【例3-15】 MOV AL,TABLEB

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号