[工学]湖大微机原理及其应用_第4章

上传人:豆浆 文档编号:54832983 上传时间:2018-09-20 格式:PPT 页数:323 大小:2.28MB
返回 下载 相关 举报
[工学]湖大微机原理及其应用_第4章_第1页
第1页 / 共323页
[工学]湖大微机原理及其应用_第4章_第2页
第2页 / 共323页
[工学]湖大微机原理及其应用_第4章_第3页
第3页 / 共323页
[工学]湖大微机原理及其应用_第4章_第4页
第4页 / 共323页
[工学]湖大微机原理及其应用_第4章_第5页
第5页 / 共323页
点击查看更多>>
资源描述

《[工学]湖大微机原理及其应用_第4章》由会员分享,可在线阅读,更多相关《[工学]湖大微机原理及其应用_第4章(323页珍藏版)》请在金锄头文库上搜索。

1、8086CPU的指令系统与汇编语言程序设计,第四章, 指令的基本概念和指令所包含的 基本内容。 8086指令的格式及编码方式。 8086指令的寻址方式及寻址过程。 8086指令系统的分类、功能及操 作过程,每条指令的格式及用法。, 汇编语言程序的格式, 汇编语言程序的上机过程, 伪指令语句, 汇编语言程序设计的基本方法, 了解汇编语言程序的基本格式,及其上机过程。, 熟练掌握数据定义伪指令、段定义伪指令、符号定义伪指令、过程定义伪指令。, 熟练掌握汇编语言程序设计的一般步骤以及顺序程序、分支程序、循环程序、子程序设计的方法。,4.1 8086CPU的指令格式与寻址方式,4.1.1 指令的基本概

2、念,指令通常以二进制代码的形式提供给计算机,这种指令称为机器指令。,指令:指示计算机执行什么操作的命令。,指令系统 (Instruction System):,程序 (Program):,完成某个特定任务而编制的一系列指令的有序集合。,程序的执行一般是按指令的先后次序一条一条执行,但遇到转移类指令时则可能改变指令的执行次序。,计算机所能执行的全部指令。,4.1.2 指令包含的基本内容及格式,1. 做什么操作,由指令的操作码字段规定。,2. 操作数的来源,操作数来自于什么地方。由指令的操作数字段规定。,操作数的来源可以是:,3. 操作结果的去向,操作的结果将存放在何处。,4. 下一条指令的位置,

3、指示下一条指令是顺序执行还是转移执行。,指令的表示方法,1. 二进制代码表示机器语言指令,2. 助记符表示汇编语言指令,例:10001000 11011000,例:MOV AL,BL,MOV表示“传送”助记符,BL(寄存器)表示结果存放的位置,AL(寄存器)表示数据的来源。,助记符表示的指令便于书写、理解和记忆,但最终必须将助记符指令“翻译”成机器指令才能被识别和执行。这个过程叫“汇编”。,4.1.3 8086 CPU的寻址方式,地址:数据和指令存放的位置。,数据存放的位置可以是寄存器、存储器或I/O端口,指令存放的位置只能是存储器中的代码段。,寻址方式:寻找指令地址和操作数地址的方式。,寻址

4、过程:形成指令地址和操作数地址的过程。,1. 立即数寻址,操作数作为立即数就在指令中给出。,例:MOV AX,1234H,操作:把立即数1234H送寄存器AX中。,机器码:B8 34 12 (低字节在地址小的单元),AH,AL,AX,.,B8,34,12,.,代码段 (存储器中),操作码(B8),操作数(1234H) 立即数,一条指令,指令执行后,AX=1234H (原有的内容被新的内容替换)。,MOV AX,1234H,2. 寄存器寻址,操作数在某个寄存器中。,例:INC BL,操作:使BL中内容加1后送回,即BL=00H,则执行后BL=01H,若BL=FFH,则执行后BL=00H,01,关

5、于存储器寻址的说明,*操作数在存储器中的一个或几个单元中。,*在以下几种寻址方式中,要找到操作数,关键是必须找到该操作数所在单元的地址。,*由于8086对存储器采用分段的组织结构,内存单元的地址由段起始地址 (基地址) 和该单元与段起始地址之间的距离 (即偏移量,以字节数计) 两部分共同决定。,段起始地址: 某个段寄存器的内容(又称段基值)乘以16得到。,段内偏移量 (亦称为:有效地址EA) : 该单元与段起始地址之间的距离(字节数)。,待寻址的内存单元,(CS, DS, ES, SS)16 段基地址,内存单元物理地址,8086规定,在执行某种操作时,采用的段寄存器有一个预先的约定。 故指令中

6、一般只需给出EA的寻址信息,CPU将能够根据该次操作的性质自动选用段寄存器,并将其与EA一起形成物理地址。 因此,存储器寻址的实质就是如何形成有效地址EA。,3. 直接寻址,指令中以偏移量方式直接给出操作数的有效地址。即,EA=指令中给出的偏移量,例:MOV AX,1234H,机器码:A1 34 12,操作:把偏移量1234H作为EA,在数据段中找到相应的字单元,再将字单元的内容送AX。,本例执行完后,AX=3050H,EA=1234H,设DS=3000H,DS16,=30000H,= 3000H16,MOV AX, 1234H,b. 段基值乘以16,相当于段基值(二进制表示)左移4位,或段基

7、值(十六进制表示)在末尾添一个0H。,注:,4.寄存器 间接寻址,以间接的方式得到有效地址EA,有几个专用的寄存器可用于间接寻址:BX,BP,SI,DI。,a. 基址寻址方式,以BX作为基址寻址寄存器,操作数在数据段中。,以BP作为基址寻址寄存器,操作数在堆栈段中。,EA=BX或BP的内容,例:MOV AX,BX,机器码:8B 04,操作:以BX的内容作为有效地址EA,在数据段中找到对应的字单元,再将该字单元的内容送AX中。,EA=BX,设DS=2000H,BX=1000H,本例执行后 AX=50A0H,这种寻址方式的优点就在于可以随时修改BX寄存器的内容,而指向不同的存储单元。故BX又称为基

8、址指针寄存器。,b. 变址寻址方式,以SI,DI寄存器作为间接寻址寄存器,操作数在数据段中。,EA=SI或DI内容,例:ADD AX,SI,EA=SI,操作:以EA作为有效地址,在数据段中找到某个操作数,再将该操作数与AX的内容相加,结果存放在AX中。,5.寄存器相对寻址,操作数的有效地址EA由两部分合成,一部分置于某个基址或变址寄存器中,另一部分为指令中指定的8位或16位位移量。操作数所在的默认段与寄存器间接寻址类似。 例: MOV AX,4000H DI 或 MOV AX,DI + 4000H 设DI=1000H,则有效地址为: EA=1000H+4000H=5000H。 若DS=3000

9、H,则物理地址为: 30000H + 5000H = 35000H。,6. 基址变址寻址,既有基址寄存器(BX或BP),又有变址寄存器参与的(SI或DI)寻址,操作数在基址寄存器所规定的段中。,EA=(BX或BP)+(SI或DI),例: MOV AX,BXDI 或 MOV AX,BX+DI 设BX=6000H,DI=1000H,则:EA=6000H+1000H=7000H,默认段为DS。 若DS=2000H,则源操作数所对应的物理地址为:20000H+7000H=27000H。,7.相对基址变址寻址,有效地址由三部分组成, 即:EA=基址寄存器内容+变址寄存器内容+8位或16位位移量。 操作数

10、所对应的默认段与基址变址寻址方式相同。 例: MOV AX,BX+SI+0080H; 则:EA=BX+SI+0080H,操作数在数据段,例:MOV AX,0260H BX SI,EA=BX+SI+0260H,操作数在数据段中,MOV AX,INF BP+DI,EA=BP+DI+位移量INF,操作数在堆栈段中,* 以上两种基址+变址的格式都是合法的。,课堂练习与思考:,1.请指出下列每条指令源操作数的寻址方式。,(1) MOV AX, BX (2) MOV CH, 3AH (3) MOV BX, 2000H (4) MOV DX, BX (5) MOV CX, BP+2 (6) MOV AX,

11、3BX DI (7) MOV AL, ES:SI (8) MOV BX, DS:BP,;寄存器寻址,操作数在BX中 ;立即数寻址,操作数为3AH ;直接寻址,EA=2000H,数在数据段 ;间接寻址,EA=BX,数在数据段 ;寄存器相对寻址,EA=BP+2,数在堆栈段 ;相对基址变址寻址,EA=BX+DI+3,数在数据段 ;含段超越的变址寻址,EA=SI,数在附加段 ;含段超越的基址寻址,EA=BP,数在数据段,课堂练习与思考:,2. MOV AX,BX+SI+0080H, 即:将BX与SI中的内容与0080H相加作有效地址。 3.设BX=0123H DI=1000H DS=3200H,默认D

12、S作为操作数对应的段寄存器(假定没使用段前缀),试指出下列指令的寻址方式,并写出其操作数的有效地址和物理地址。 (1)MOV AX,1A38H (2)MOV AX,BX (3)MOV AX,BX+1A38H (4)MOV AX,BX+DI (5)MOV AX,BX+DI+1A38H,课堂练习与思考:,解: (1)直接寻址 有效地址=1A38H, 物理地址=32000H+1A38H=33A38H (2)寄存器间接寻址 有效地址=0123H, 物理地址=32000H+0123H=32123H (3)寄存器相对寻址 有效地址=0123H+1A38H=1B5BH, 物理地址=32000H+1B5B=3

13、3B5BH (4) 基址变址寻址 有效地址=0123H+1000H=1123H, 物理地址=32000H+1123H=33123H (5)相对基址变址寻址 有效地址=0123H+1000H+1A38H=2B5BH, 物理地址=32000H+2B5BH=34B5BH,4.2 8086指令系统,8086指令按功能分为六大类。,mem 存储器操作数 data 立即数 opr 表示操作数 存储单元的内容 acc 累加器操作数(AX或AL) reg 寄存器 src 源操作数 segreg 段寄存器 dist 目的操作数 S_ins 串操作指令 disp 8位或16位位移量 count 移位次数,可以是1

14、或CL port 输入输出端口,可用数字或表达式表示,本节中要用到的一些符号所表示的含义:,4.2.1 数据传送类指令,数据传送指令能够完成下列操作数的传送任务。,立即数,存储器,段寄存器 CS,DS,ES,SS,通用寄存器组 AX,BX,CX,DX BP,SP,SI,DI,(CS不能作目的寄存器),1. 通用数据传送指令 MOV,指令形式: MOV dist, src,功能:将源操作数s复制到目标操作数d,源保持不变,目标被源代替。,注: d, s不能同时为存储器,错误指令:MOV BX,SI , d不能为立即数,错误指令:MOV 1234H,AX , d, s必须同时为字节型或字型,错误指

15、令:MOV AX,BL ,指令后的分号“;”以后为注释部分,对指令的执行没有任何影响,主要是便于阅读或解释指令的功能。,例:MOV AX,0 ; AX0,AX清0,;执行后,AX=0,MOV SI,BP ; SIBP,BP内容送SI,;执行后,SI=BP,BP不变,MOV AL,BUFFERS ;BUFFERS内存 单元内容送入AL,这里,BUFFERS代表符号地址,从该地址单元中取出内容送AL寄存器。,相当于直接寻址方式。,MOV AX,DATA SI+BX,EA=SI+BX+DATA,在数据段中寻找字单元,取出该字单元的内容送入AX。,设DS=3000H,SI=200H,BX=1000H,DATA的偏移量为100H,则:,EA=SI+BX+DATA=200H+1000H+100H=1300H,物理地址=DS16+EA=30000H+1300H=31300H,即从31300H和31301H两单元中取出内容送AX。,MOV AX,DATA SI+BX,2.交换指令: XCHG d, s ;交换源和目标操作数,注:d=通用寄存器,s=通用寄存器或存储器,例:XCHG AX,SI+400H,3. 堆栈操作指令:PUSH、POP PUSH s ; SP2 SP; 源操作数压入堆栈保存,POP d ; SP所指堆栈的内容送目的地; SP+2 SP,

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

当前位置:首页 > 行业资料 > 其它行业文档

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