[IT认证]第三章指令系统和寻址方式1.ppt
《[IT认证]第三章指令系统和寻址方式1.ppt》由会员分享,可在线阅读,更多相关《[IT认证]第三章指令系统和寻址方式1.ppt(174页珍藏版)》请在三一办公上搜索。
1、第3章 指令系统和寻址方式,3.1 8086/8088CPU的概述及寻址方式 3.2 8086/8088CPU的指令系统,3.1 指令系统的概述及寻址方式,一条指令需要指出两部分内容:,1、要进行什么操作(由操作码指出),2、指令所涉及的操作数和操作结果存放的位置,3.1 指令系统的概述,指令组成:,操作码和操作数(地址码)两部分构成,操作码:表示该指令所要完成的操作,操作数:表示该指令的操作对象,指令中可以直接给出所使用的操作数本身,或者只给出操作数所在的寄存器编号、存储器或I/O端口的地址或地址的信息。,数据寻址,指令中关于如何计算操作数有效地址的方法称为寻址方式。计算机中按照指令给出的寻
2、址方式求出操作数的有效地址和存取操作数的过程称为寻址操作,指令地址寻址,数据寻址-获取操作数的存放地址及操作结果 的存放地址,确定下一条指令的地址的方法,数据寻址有以下三种:,1.立即寻址方式2.寄存器寻址方式3.存储器寻址方式(5种),1.立即寻址方式,指令中直接给出操作数,例如:,MOV CL,05;(CL)=05MOV AX,1234H;(AX)=1234H,MOV AL,PORT1MOV AL,10010011B AND 0FEH,格式:操作码 数字表达式,说明:1)立即数可为8位,可为16位;2)只能为整数 3)只能做源操作数 4)不能用于单操作数,2.寄存器寻址方式,操作数在CPU
3、内部的某个寄存器中,指令中只给出寄存器名,例如:,MOV AX,BX;将BX内容传送到AX中,格式:操作码 寄存器名,MOV AL,BL;将BL内容传送到AL中,1)16位寄存器为AX,BX,CX,DX,SI,DI,SP,BP;2)8位寄存器为AH,AL,BH,BL,CH,CL,DH,DL;3)源操作数,目的操作数都(同时)可以使用 寄存器寻址,说明:,例:,MOV SS,AX,指令执行前(AX)=3064H(SS)=1234H,指令执行后(SS)=3064H(AX)保持不变,3.存储器寻址方式,1)直接寻址方式,操作数在存储器中,存储单元的地址由指令直接给出,格式:操作码 地址表达式或地址表
4、达式或数字表达式,例:MOV AL,TABLE MOV AL,TABLE MOV AL,1000H,TABLE 是在数据段定义的一个字节数组的首地址标号(变量名),其偏移地址为1000H,例如:,MOV AX,1000H,指令执行前:(DS)=3000H,(31000)=12H,(31001)=34H,3412H,指令执行后:(AX)=?,默认的段寄存器位DS,如果不是DS,则需要用前缀说明,说明:,MOV AX,ES:1000H,将ES段中1000H和1001H两个单元的内容送到BX中,MOV AX,1000H,基址寄存器:BX,BP;变址寄存器:SI,DI,操作数在存储器中,存储单元的有效
5、地址在寄存器中。,2)寄存器间接寻址方式,格式:操作码 基址寄存器名或者变址寄存器名,例:MOV AX,BX MOV AX,SI,例如:,MOV AX,BX,假设指令执行前:(DS)=3000H,(BX)=1010H,(31010)=12H(31011)=24H,2412H,指令执行后:(AX)=?,若指令中指定的寄存器是BX,SI,DI,则操作数默认在数据段中,即在DS中为段基址;若指令中指出寄存器为BP,则操作数默认在堆栈段,即在SS中为段基址,说明:,1)以SI,DI,BX为寄存器间接寻址,默认段寄存器为DS,如使用其它段寄存器需要加前缀说明,MOV AX,ES:BX,2)以BP为寄存器
6、间接寻址,默认段寄存器为SS,如使用其它段寄存器需要加前缀说明,MOV AX,ES:BP,3)寄存器相对寻址方式,操作数在存储器中,存储单元的有效地址是寄存器的值与一个整数之和。,格式:操作码 变量名基址寄存器名或者变址寄存器名 操作码 变量名+基址寄存器名或者变址寄存器名 操作码 符号名基址寄存器名或者变址寄存器名 操作码 变量名+基址寄存器名或者变址寄存器名操作码 数字表达式基址寄存器名或者变址寄存器名,例:,TABLE 是在数据段定义的一个字节数组的首地址标号(也成变量名)则:MOV SI,5 MOV AL,TABLESI或者 MOV AL,TABLE+SI,若指令中指定的寄存器是BX,
7、SI,DI,则操作数默认在数据段中,即在DS中为段基址;若指令中指出寄存器为BP,则操作数默认在附加数据段中,即在ES中为段基址,说明:,4)基址变址寻址方式,MOV AX,BXSI或MOV AX,BX+SI,操作数的偏移地址是两个指定寄存器之和,格式:操作码 基址寄存器名变址寄存器名 操作码基址寄存器名+变址寄存器名,例:MOV AX,BXSI,用途:,5)相对基址变址寻址方式,操作数偏移地址在指定寄存器的值和相对偏移量之和,格式:操作码 变量名基址寄存器名变址寄存器名 操作码 变量名+基址寄存器名+变址寄存器名-,MOV AX,MASKBXSI或MOV AX,MASKBX+SI或MOV A
8、X,MASK+BX+SI,例:MOV AX,MASKBXDI,若指令中指定的基址寄存器是BX,则操作数默认在数据段中,即在DS中为段基址;若指令中指定的基址寄存器为BP,则操作数默认在附加数据段中,即在ES中为段基址,说明:,用途:,小结,综观8086/8088寻址方式,其操作数有三种类型:,立即操作数寄存器操作数存储器操作数,指令寻址有以下四种:,1.段内直接寻址2.段间寻址方式3.段内间接寻址4.段间间接寻址,确定下一条要执行指令的地址的方法,1.段内直接寻址,格式:,指令名 SHORT 转移目标地址标号指令名 转移目标地址标号指令名 NEAR PTR转移目标地址标号,JMP SHORT
9、NEXT,这种指令只改变IP寄存器的值,而不改变CS的值,位移量,指令,IP寄存器,IP寄存器,段内寻址示意图,2.段间直接寻址,格式:,指令名 FAR PTR 转移目标地址标号指令名 段地址:段内偏移量,JMP FAR PTR NEXT1,这种指令不仅改变IP寄存器的值,而且改变CS的值,地址,指令,段间寻址示意图,段地址,IP寄存器,CS寄存器,3.段内间接寻址,格式:,指令名 16寄存寄名指令名 WORD PTR 存储器寻址方式,JMP WORD PTR TABLEBX,这种指令只改变IP寄存器的值,而不改变CS的值,寄存器编号,指令,段内间接寻址示意图,IP寄存器,转移目标地址的偏移地
10、址,16位寄存器,存储器寻址方式,指令,IP寄存器,转移目标地址的偏移地址,存储器,计算物理地址,4.段间间接寻址,格式:,指令名 DWORD PTR 存储器寻址方式,JMP DWORD PTR TABLEBX,这种指令不仅改变IP寄存器的值,而且改变CS的值,段间间接寻址示意图,3.2 8086/8088CPU的指令系统,3.2.1 数据传送指令3.2.2 算术运算指令3.2.3 逻辑运算和移位指令3.2.4 串操作指令3.2.5 控制转移指令3.2.6 处理器控制指令,3.2.1 数据传送指令,通用传送指令累加器传送指令地址传送指令标志传送指令,1.通用传送指令,1)最基本的传送指令MOV
11、,格式:MOV 目的操作数 源操作数,功能:将源操作数存入目的操作数的寄存器或存储单元,例:MOV AX,BX MOV AX,1010H,说明:,1、目的操作数不能是立即数2、不能在两个内存单元之间直接传送数据3、不能将立即操作数送给段寄存器4、段寄存器之间不能相互传送数据5、CS,IP,PSW不能作为目的操作数,但可以作为 源操作数6、源操作数和目的操作数字长必须相等7、MOV指令不影响标志位,1.MOV MEM2,MEM1,修改为:MOV AX,MEM1 MOV MEM2,AX,2.MOV DS,2000H,修改为:MOV AX,2000H MOV DS,AX,3.MOV ES,DS,修改
12、为:MOV AX,DS MOV ES,AX,例题:,2)数据进栈指令PUSH和出栈指令POP,堆栈是一段内存区域,可以用于保护中间数据、运算结果或某些寄存器的值,需要时可以从堆栈中将数据取出来。,堆栈按照先进后出的原则来保存数据,微机一般把内存的一段区间作为堆栈使用,即堆栈段SS。段内物理地址由SS和SP决定,SP始终指向栈顶。对于数据的的保存和恢复需要有由堆栈指令来完成,格式:PUSH 操作数 POP 操作数,假设(SS)=9000H,堆栈段位64KB(SP)=0E200H,则:整个堆栈段的物理地址范围为:90000H9FFFFH,堆栈物理地址为:9E200H,举例:,PUSH AX;将AX
13、内容压入堆栈,PUSH BX;将堆顶内容弹出到BX,(1),(2),说明:,1、8086的堆栈操作总是按字进行的;2、每推入一个字,SP减2,一个字的高字节放在堆栈的较高地址,低字节放在较低地址;弹出一个字,SP加2;3、堆栈的内容按先进后出的原则;4、不能使用立即寻址方式;5、PUSH和POP指令不影响标志位;6、CS可以压入堆栈,但栈中的值出断点的之外 不能弹入到CS,3)标志进栈指令PUSHF和出栈指令POPF,将16位堆栈数据压入或弹出到标志寄存器(PSW)中,设置TF=1则:,PUSHFPOP AXOR AH,01HPUSH AXPOPF,4)数据交换指令XCHG,格式:XCHG 目
14、的操作数,源操作数,功能:实现源和目的操作数的存放位置,说明:,1、目的操作数和源操作数不能为立即数或段寄存器,并且不能同时为内存单元;2、CS和IP不能为交换指令的源或目的操作数;3、目的和源操作数的取值范围应相同,即同为8位或同为16位;,XCHG BL,DLXCHG AX,SIXCHG DI,AL,XCHG BX,DI XCHG DS,AX,例题:,2.累加器专用指令,1)累加器输入/输出指令IN,OUT,输入指令用于CPU从外设端口接收数据,输出指令用于CPU从外设端口发送数据,端口:,端口:CPU与外设之间通过接口进行数据交换,一个端口通常对应接口中的一个或一组寄存器。每个8位端口有
15、一个地址,叫端口号,两个相邻的8位端口可以组成一个16位地址,端口数:外部设备最多可以有65536个(64KB)个 由A0A16译码形成,端口号:即外部设备端口地址,为0000FFFFH。,PC机仅使用A0A9译码形成I/O端口地址,即1024H个端口地址,因此端口号范围为0000H03FFFH。其中:A9=1表示扩充槽上的端口地址,8086利用地址纵向的低16位对8位I/O端口的寻址号,1)直接累加器输入/输出指令IN,OUT,格式:IN 累加器,端口号 OUT 端口号,累加器,端口号中前256个端口(0FFH),可以使用直接的输入/输出指令:指令中提供端口号,例如:IN AL,50H IN
16、 AX,70H OUT 44H,AL OUT 80H,AX,2)间接累加器输入/输出指令IN,OUT,格式:IN 累加器,DX OUT DX,累加器,所有的端口号(0FFFFH),都可以使用间接的输入/输出指令:执行这些指令之前,已经将端口号送入到DX中,例如:IN AL,DX IN AX,DX OUT DX,AL OUT DX,AX,注:端口号256时只能使用间接输入输出指令,3)XLAT换码指令,使累加器的一个值转换为内存表格中对应的某一个值。,换码指令用于编码制的转换,格式:XLAT或XLAT 地址标号,功能:(AL)(BX)+(AL),使用该指令前,内存的表首地址赋给BX,AL中存放表
17、格某一项与表格首地址的位移量,执行BX+AL,得到该表格中的一个地址,再将此地址所对应单元中的值送到AL中。,AL为8位无符号数,表格最多为256个代码,例题:十进制数字09的7段显示码表,例:求5对应的显示码,MOV AL,5MOV BX,OFFSET DISP_TABLEXLAT或者XLAT DISP_TABLE,结果(AL)=12H,3)XLAT换码指令,格式:XCHG 目的操作数,源操作数,功能:实现源和目的操作数的存放位置,3.地址传送指令,1)LEA偏移地址送寄存器指令(Load Effective Address),格式:LEA 16位寄存器名,存储器寻址方式,功能:将源操作数的
18、地址送到一个寄存器中,例如:LEA AX,2782HLEA BX,BP+SILEA SP,0482H,MOV AX,2782H,(2782H)=02H,2)LDS(Load Pointer into register and DS)指针送指定寄存器和DS寄存器指令,格式:LEA 16位寄存器名,存储器寻址方式,功能:将寻址到的存储单元的第一个源操作数(字)送16位寄存器,第二个源操作数送DS寄存器,例如:LDS DI,2140H,(DI)=0201H(DS)=0605H,3)LES(Load pointer into register and ES)指针送指定寄存器和ES寄存器指令,格式:LE
19、A 16位寄存器名,存储器寻址方式,功能:将寻址到的存储单元的第一个与源操作数(字)送16位寄存器,第二个源操作数送ES寄存器,例如:LES DI,2140H,三类地址传送指令中16位寄存器不包括段寄存器,说明:,例如:LES DI,2140H,(DI)=0201H(ES)=0605H,4.标志传送指令,读取标志位,对标志位进行设置:,1)读取标志指令LAHF2)设置标志指令SAHF,格式:LAHF 或SAHF,功能:将标志寄存器中的低8位传送给AH;将AH值传送给标志寄存器,3.2.2 算术运算指令,无符号数和有符号数是否能使用同一套加、减、乘、除指令?无符号数和有符号数使用同一套加、减,要
20、求参与运算的两个数必须同为无符号数或同为有符号数;另外,要用不同的方法判断运算结果是否溢出。采用什么方法?,结论:,1.无符号数和有符号数加法、减法可以使用同一套指令系统;无符号数有符号数乘法、除法不可以使用同一套指令系统;,2.参与运算的必须同是无符号数和有符号数;,3.溢出判断:无符号数运算产生溢出时CF=1;有符号数运算产生溢出时:OF=1,4.无符号数运算产生溢出会设置进位位,对于多字节运算,要利用到进位;有符号数运算产生溢出则表示出现错误,3.2.2 算术运算指令,1.加法指令,格式:ADD 目的操作数,源操作数 ADC 目的操作数,源操作数 INC 操作数,以上三条指令都可作字节或
21、字操作运算,除INC指令不影响标志位CF外,其他标志位都受指令结果的影响,PSW中最主要的是ZF,SF,CF,OF四位,ADC用于多字节的减法指令中,ADD AL,50HADD CX,1000HADD BC+DI,AXADD AX,BX+2000H,ADC AX,SIADD DX,SIADC BX,2000HADC AL,5,例:,设两个四字节数(DX,CX)=12345678H,(BX,AX)=9ABCDEF0H,ADD CX,AXADC DX,BX,例:利用ADC指令实现多字节加法,MOV SI,2000HMOV AX,SIMOV DI,3000HADD AX,DIMOV SI,AXMOX
22、 AX,SI+2ADC AX,DI+2MOV SI+2,AXMOV AX,0000HADC AX,0000HMOV SI+4,AX,2.减法指令,格式:SUB 目的操作数,源操作数 SBB 目的操作数,源操作数 DEC 操作数 NEG 求补指令,求补指令,即各位取反后末位加1,结果送回操作数通常CF=1,SBB用于多字节的减法指令中,SUB BX,CXSUB BP+2,CLSUB AL,20SUB WORD PTRDI,1000H,SBB AX,2030HSUB WORD PTRDI+2,1000H,DEC AXDEC AL,3.比较指令,格式:CMP 目的操作数,源操作数,结果不送回,两操作
23、数保持原值,但影响标志位不保存结果,例如:CMP AX,2000H CMP AL,50H CMP AX,BX+DI+100 CMP DX,DI,标志位的状态判断比较结果:,1.ZF=1,则两个操作数相等,2.对于两个无符号数,CF=0,则OPRD1OPRD2;CF=1,则OPRD1OPRD2,3.对于两个有符号数两数同为正或同为负时,则如果SF=0,则OPRD1OPRD2;SF=1,则OPRD1OPRD2,4.乘法指令,格式:MUL 源操作数(无符号数)若为字节操作(AX)(AL)源操作数;若为字操作(DX),(AX)(AX)源操作数,格式:IMUL 源操作数(有符号数),IMUL/MUL B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IT认证 IT 认证 第三 指令系统 寻址 方式
链接地址:https://www.31ppt.com/p-4594014.html