《指令系统(寻址方式).ppt》由会员分享,可在线阅读,更多相关《指令系统(寻址方式).ppt(28页珍藏版)》请在三一办公上搜索。
1、1,第四章 8086/8088CPU指令系统,2,主要内容:,本章的重点是理解8086常用指令的功能本章的难点是8086的各种寻址方式同学们一定要采用调试程序DEBUG进行实践,3,调试程序DEBUG,DEBUG是常用的汇编语言调试工具,为汇编语言程序员提供了分析指令、跟踪程序的有效手段。常用命令:A汇编 U反汇编T单步执行 G断点执行D数据显示 R寄存器,4,指令的基本构成,操作码,操作数,,操作数,说明要执行的是什么操作,操作对象,可以有0个、1个或2个,目的,源,5,指令举例:,ADD AX,SI+6,MOV AX,BX,操作码 操作数,INC BX,HLT,6,寻址方式,指令系统设计了
2、多种操作数的来源,寻找操作数的过程就是操作数的寻址方式。操作数采取哪一种寻址方式,会影响机器运行的速度和效率。如何寻址一个操作数对程序的设计来讲也很重要。在8086指令系统中,操作数所在地址的寻址方式可分为4大类:立即寻址 寄存器寻址 存储器寻址 I/O寻址,7,操作数(为一常数)直接由指令给出(此操作数称为立即数)立即寻址只能用于源操作数,常用来给寄存器或存储单元赋初值。例:MOV AX,1C8FH MOV BYTE PTR2A00H,8FH 错误例:MOV 2A00H,AX;错误!,1.立即寻址,8,立即数,操作码,低8位,高8位,存储器,MOV操作码,02H,31H,AH,AL,代码段,
3、代码段,立即寻址指令在存储器中的存放形式,AX,指令操作例:MOV AX,3102H;AX 3102H 执行后,(AH)=31H,(AL)=02H,用途:直接给出操作数据,立即数存放在内存的代码段中,9,2.寄存器寻址,操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例:MOV AX,BX MOV 3F00H,AX MOV CL,AL 错误例:MOV AX,BL;字长不同 MOV ES:AX,DX;寄存器与段无关,10,AX,SI,2233H,2233H,指令操作例:MOV SI,AX;SI(AX)指令执行前:(AX)=2233H 指令执行后:(AX)=2233
4、H,(SI)=2233H,11,3.存储器寻址 3.1直接寻址,指令中直接给出存储器操作数的16位偏移地址。存储器偏移地址也称为有效地址(EA,Effective Address)存储器默认的段寄存器为DS,但也可以显式地指定其他段寄存器称为段超越前缀存储器偏移地址也可用符号地址来表示,如ADDR、VAR 例:MOV AX,2A00H;段头隐含为DS MOV DX,ES:2A00H;段超越 MOV SI,TABLE_PTR;段头隐含为DS,12,例:MOV AX,3102H;AL(3102H),AH(3103H),如果(DS)=2000H,(23102H)=CDH,(23103H)=ABH则操
5、作数的物理地址为:20000H+3102H=23102H指令执行后:(AX)=0ABCDH,MOV操作码,02H,31H,AH,AL,23102H,CDH,ABH,存储器,代码段,数据段,.,23103H,13,3.2 寄存器间接寻址,操作数的偏移地址(有效地址EA)放在寄存器中 只有SI、DI、BX和BP可作间址寄存器 例:MOV AX,BX MOV CL,CS:DI错误例:MOV AX,DX MOV CL,AX,EA=,(BX)(BP)(SI)(DI),14,指令操作例:MOV AX,SI若(DS)=6000H,(SI)=1200H,(61200H)=44H,(61201H)=33H则指令
6、执行后,(AX)=3344H。,15,3.3 寄存器相对寻址,EA=间址寄存器的内容+8/16位的位移量,EA=,(BX)(BP)(SI)(DI),+,8位16位,位移量,16,例:MOV AX,BX+8 MOV CX,TABLESI MOV AX,BP+1000H;默认段寄存器为SS 指令操作例:MOV AX,DATABX 若(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H 则物理地址=60000H+1000H+2A00H=63A00H 指令执行后:(AX)=5566H(见下页图示),17,操作码,00 偏移量低,2A 偏移
7、量高,DS 60000,BX 1000,+DATA 2A00,63A00,63A00H,AH,AL,AX,代码段,数据段,.,.,.,66H,55H,MOV AX,DATABX,18,3.4 基址变址寻址,若操作数的偏移地址:由基址寄存器(BX或BP)给出 基址寻址方式 由变址寄存器(SI或DI)给出 变址寻址方式,由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址变址寻址。,EA=,(BX)(BP),+,(SI)(DI),同一组内的寄存器不能同时出现。,基址寄存器,变址寄存器,19,例:MOV AX,BX SI MOV AX,BX+SI同一寻址方式可以有不同的表
8、示形式。MOV AX,DS:BP DI错误例:MOV AX,BX BP MOV AX,DI SI,20,83000,操作码,DS 80000,BX 2000,+SI 1000,83000H,AH,AL,AX,代码段,数据段,.,.,.,YY,XX,指令操作例:MOV AX,BXSI假定:(DS)=8000H,(BX)=2000H,(SI)=1000H则物理地址=80000H+2000H+1000H=83000H指令执行后:(AL)=83000H(AH)=83001H,21,3.5相对基址变址寻址,在基址变址寻址的基础上再加上一个相对位移量 注意事项同基址变址寻址,EA=,(BX)(BP),+,
9、(SI)(DI),+,8位16位,位移量,例:,MOV AX,BASE SI BXMOV AX,BX+BASE SIMOV AX,BX+SI+BASEMOV AX,BX BASE SIMOV AX,BX+SI BASE,基址,变址,22,指令操作例:MOV AX,DATADIBX若(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H则指令执行后(AH)=83021H,(AL)=83020H,83200,83200H,AH,AL,AX,+DATA 0200,操作码,代码段,数据段,.,.,.,YY,XX,DS 80000,BX 2000,DI 1000,23,4.
10、I/O寻址方式,直接给出端口的地址,但寻址范围为00H0FFH,端口地址存放在寄存器DX中,寻址范围:0000H0FFFFH,例:IN AL,78H OUT 56H,AL IN AX,23H OUT 67H,AX,例:IN AL,DX OUT DX,AL IN AX,DX OUT DX,AX,4.1直接寻址方式:,4.2寄存器间接寻址:,24,小结,指令由()和()构成,如何取得操作数称为(),操作码,操作数,寻址方式,25,寻址方式可分8种,立即寻址,直接寻址-针对M、I/O,寄存器相对寻址-针对M,寄存器寻址-针对R,基址变址寻址-针对M,相对基址变址寻址-针对M,寄存器间接寻址-针对M、
11、I/O,26,寻址方式小结:(1)除了立即寻址和寄存器寻址外,其它寻址方式的操作数都来自存储区(除代码段以外的存储区)或I/O端口。通过不同的方式寻找到操作数的地址。(2)只有BX、BP、SI、DI可在方括号 内出现。(3)BX或BP可单独出现在 内,也可以与SI或DI或常数一起出现在 内,不允许BX和BP同时出现在一个 内。(4)SI或DI可单独出现在 内,也可以与BX或BP或常数一起出现在 内,不允许SI或DI同时出现在一个 内。(5)一个 内包括多个内容时,它们只能作加法运算。(6)若 内包含BP,则隐含使用堆栈段寄存器SS提供段基址,否则均隐含使用段寄存器DS提供段基址。,27,8086指令系统概述,Intel 8086指令系统共有117条基本指令,可分成6个功能组:数据传送类指令 算术运算类指令 逻辑运算和移位类指令 串操作类指令 控制转移类指令 处理器控制类指令如何学习呢?,28,学习指令的注意事项,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。指令支持的寻址方式该指令中的操作数可以采用何种寻址方式。指令对标志的影响该指令执行后是否对各个标志位有影响,以及如何影响。其他方面该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等。,
链接地址:https://www.31ppt.com/p-5980052.html