《微机原理第3章8086指令系统》由会员分享,可在线阅读,更多相关《微机原理第3章8086指令系统(177页珍藏版)》请在金锄头文库上搜索。
1、 指令的基本概念和指令所包含的 基本内容。 8086指令的格式及编码方式。 8086指令的寻址方式及寻址过程。 8086指令系统的分类、功能及操 作过程,每条指令的格式及用法。,内存单元的地址和内容简介:,内存由许多存储单元组成,每个内存单元可存放一组二进数。在微机中规定每个内存单元可存放8位二进制数,即一个内存单元存放一个字节的内容,为了区分各个不同的内存单元,就给每个存储单元编上不同的号码,即内存地址。CPU要访问某个单元时,先要通过地址总线送出该单元的地址号。,3.1 基本数据类型,尽管存储器是按字节编址的,但实际操作中,一个操作数可以是字节、字、双字节、十字节等各种形式。 1. 字节:
2、计算机的基本处理单位,一个字节由8位二进制位组成 2. 字:通常微机的字长有8位、16位、32位、64位,故其字数据的存放所占内存单元的个数也不一样 3. 双字:即2个字 4. 四字:好4个字的长度,地址,存放内容 二进制表示,十六进制表示,00000H,11000010,11000010,00001H,C2H,18H,00010010,00008H,12H,00110100,00001H,34H,01110000,FFFFFH,70H,内存单元的地址和内容示意图,3.2 指令概述,一、指令 (Instruction):,指令通常以二进制代码的形式提供给计算机,这种指令称为机器指令。,指示计算
3、机执行什么操作的命令。,二、指令系统 (Instruction System):,三、程序 (Program):,完成某个特定任务而编制的一系列指令的有序集合。,程序的执行一般是按指令的先后次序一条一条执行,但遇到转移类指令时则可能改变指令的执行次序。,计算机所能执行的全部指令。,四、指令包含的基本内容,1. 做什么操作,由指令的操作码字段规定。,2. 操作数的来源,操作数来自于什么地方。由指令的操作数字段规定。,操作数的来源可以是:,3. 操作结果的去向,操作的结果将存放在何处。,4. 下一条指令的位置,指示下一条指令是顺序执行还是转移执行。,五、指令的种类,六、指令的表示方法,1. 二进制
4、代码表示机器语言指令,2. 助记符表示汇编语言指令,例:10001000 11011000,例:MOV BL,AL,MOV表示“传送”助记符,BL(寄存器)表示结果存放的位置,AL(寄存器)表示数据的来源。,助记符表示的指令便于书写、理解和记忆,但最终必须将助记符指令“翻译”成机器指令才能被识别和执行。这个过程叫“汇编”。,3.3 8086 CPU的寻址方式,地址:数据和指令存放的位置。,数据存放的位置可以是寄存器、存储器或I/O端口,指令存放的位置只能是存储器中的代码段。,寻址方式:寻找指令地址和操作数地址的方式。,寻址过程:形成指令地址和操作数地址的过程。,结果,2. 立即数寻址,操作数作
5、为立即数就在指令中给出。,例:MOV AX,1234H,操作:把立即数1234H送寄存器AX中。,机器码:B8 34 12 (低字节在地址小的单元),AH,AL,AX,.,B8,34,12,.,代码段 (存储器中),操作码(B8),操作数(1234H) 立即数,一条指令,指令执行后,AX=1234H (原有的内容被新的内容替换)。,MOV AX,1234H,3. 寄存器寻址,操作数在某个寄存器中。,例:INC BL,操作:使BL中内容加1后送回,若BL=00H,则执行后BL=01H,BL=FFH,则执行后BL=00H (自动溢出),01,4. 存储器寻址,操作数在存储器中的一个或几个单元中。,
6、在这种寻址方式下,要找到该操作数,关键是必须找到该操作数所在单元的地址。,由于8086采用存储器段组织结构,内存单元的地址由段起始地址 (基地址) 和该单元与段起始地址之间的距离 (以字节数计) 两部分共同决定。,段起始地址(基地址):某个段寄存器的内容(又称段基值)乘以16得到。,段内偏移量:该单元与段起始地址之间的距离(字节数) 。又称有效地址EA。,待寻址的内存单元,(CS, DS, ES, SS)16 段基地址,内存单元物理地址,8086规定,在执行某种操作时,采用的段寄存器有一个预先的约定。故指令中一般只需给出有关EA的信息,则CPU将能够根据该次操作自动选用段寄存器,并与EA一起形
7、成物理地址。 存储器寻址的实质就是如何形成有效地址EA。,(1) 直接寻址方式,指令中以偏移量方式直接给出操作数的有效地址。即,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位,或段基值(十六进制表示)在末尾添一个0H。,注:,(2) 间接寻址方式,以间接的方式得到有效地址EA
8、,有几个专用的寄存器可用于间接寻址:BX,BP,SI,DI。,a. 基址寻址方式,以BX作为基址寻址寄存器,操作数在数据段中。,以BP作为基址寻址寄存器,操作数在堆栈段中。,EA=BX或BP的内容+8位或16位位移量,例:MOV AX,BX,机器码:8B 04,操作:以BX的内容作为有效地址EA,在数据段中找到对应的字单元,再将该字单元的内容送AX中。,EA=BX (位移量为0),设DS=2000H,BX=1000H,本例执行后 AX=50A0H,DS=2000H,这种寻址方式的优点就在于可以随时修改BX寄存器的内容,而指向不同的存储单元。故BX又称为基址指针寄存器。,例:MOV AL,DAT
9、ABP,这里DATA是以符号表示的位移量。,EA=BP+位移量DATA,操作:以EA作为有效地址,在堆栈段中去 寻址字节单元,再将该字节单元内容送AL。,b. 变址寻址方式,以SI,DI寄存器作为间接寻址寄存器,操作数在数据段中。,EA=SI或DI内容+8位或16位位移量,例:ADD AX,SI,EA=SI,操作:以EA作为有效地址,在数据段中找到某个操作数,再将该操作数与AX的内容相加,结果存放在AX中。,c. 基址变址寻址方式,既有基址寄存器(BX或BP),又有变址寄存器参与(SI或DI)寻址,操作数在基址寄存器所规定的段中。,EA=BX或BP+SI或DI+8位或16位位移量,例:MOV
10、AX,0260H BX SI,EA=BX+SI+0260H,操作数在数据段中,MOV AX,INF BP+DI,EA=BP+DI+位移量INF,操作数在堆栈段中,* 以上两种基址+变址的格式都是合法的。,(3) 串操作指令寻址,这类指令规定:,源串操作数在数据段,且有效地址EA=SI,目的串操作数在附加段,且有效地址EA=DI,指令执行后,自动修改SI,DI的值,使之指向新的单元。,8086的段约定,8086在执行某种操作时,预先规定了采用的段寄存器和段,即有基本的段约定。如果要改变默认的段约定,则需要在指令中明 确指出来。,8086/8088的段约定,5. I/O端口寻址方式,(1) 直接端
11、口寻址,操作数在某个8位或16位端口中。,b. 端口输出,OUT port, AL,a. 端口输入,IN AL,port,port=端口地址 (8位,0255),例:IN AL,80H,操作:从端口地址为80H的端口输入一字节送AL。,(2) 间接端口寻址,可以把端口地址送入DX,然后进行端口寻址:,输入: IN AL,DX 输出: OUT DX,AL,注: 若用AX代替AL,则表示16位数据的端口。, 端口地址大于255时,必须将端口地址送入DX,即采用间接寻址端口方式。,6. 转移类指令的寻址方式,前面所述的各种寻址方式实际上是数据寻址方式,关键是如何找到操作数。,转移类指令寻址方式属于程
12、序存储器寻址,关键是要找到下一条待执行指令的地址。,(1) 转移范围,段内转移:转移范围在同一个段以内,段间转移:从一个代码段转移至另一个代码段,(2) 转移条件,无条件转移,有条件转移 (转移范围仅为128+127),(3) 转移方式,直接转移 (转移目标直接在指令中给出),间接转移 (转移目标预先放入某个寄存器或存储器中),寻址方式小结:,固定寻址:操作数固定在某个寄存器中,寄存器寻址:操作数在某个寄存器中,立即数寻址:操作数就是操作码后跟的立即数,存储器寻址,直接寻址,间接寻址,串操作寻址,基址寻址,变址寻址,基址+变址寻址,I/O端口寻址,直接端口寻址,间接端口寻址,转移类指令寻址,基
13、址变址寻址,基址变址寻址(Based Index Addressing)中的操作数的有效地址是一个基址寄存器(如BX、BP)和一个变址寄存器(如SI、DI)的内容之和,两个寄存器均由指令指出。操作数的段地址分配和前面所述相同,即使用默认段基址或使用段超越前缀来指定段基址。,相对基址变址寻址,课堂练习与思考:,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, 3BX DI (7) MOV AL, ES:SI (8) M
14、OV 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,默认DS作为操作数对应的段寄存器(假定没使用段前缀),试指
15、出下列指令的寻址方式,并写出其操作数的有效地址和物理地址。 (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=33B5BH (4) 基址变址寻址 有效地址=0123H+1000H=1123H, 物理地址=32000H+1123H=33123H (5)相对基址变址寻址 有效地址=0123H+1000H+1A38H=2B5BH, 物理地址=32000H+2B5BH=34B5BH,3.4 8086指令系统,8086指令按功能分为六大类。,mem 存储器操作数 port 输入输出端口,可用 数字或表达式表示 opr 表示操作数 存储单元的内容 ac 累加器操作数(AX或AL) reg 寄存器 src 源操作数 segreg 段寄存器 dist