《基本指令系统》PPT课件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不论入栈还是出栈,都只能从栈顶处进行,堆栈内数据 遵循先进后出,后进先出的原则。 (2).堆栈的设置
8086/8088中专门有2个寄存器用于堆栈操作:堆栈段寄 存器SS和堆栈指针寄存器SP。
SS用来存放堆栈段的段基址,SP用于指示堆栈的顶部单 元的段内偏移量,开始时堆栈内没有数据,栈顶就是栈底, 故开始时要将栈底单元的偏移量赋给它,以指明栈低位置。
二、交换指令 XCHG (Exchange)
格式:XCHG DEST,SRC ;(DEST)<-->(SRC)
功能:将两个操作数DEST与SRC的内容互换.
允许的操作数组合:交换可以在通用寄存器之间或通用寄存器 与存储器之间进行,但不能在两个存储单元之间直接进行,
DEST 与SRC可以为字或者是字节。
(5)通用寄存器到存储单元
如:MOV [2000H],AX ;
图3-2 MOV指令传送示意图
(6)通用寄存器到除CS外的段寄存器 如:MOV DS,AX ;。
(7)段寄存器到通用寄存器 如:MOV AX,DS ;
(8)存储器到除CS外的段寄存器 如:MOV ES,[2000H] ;
(9)段寄存器到存储器 如:MOV [2000H],DS ;
(4)(SP)←(SRCL),源操作数低字节送SP指向的单元。
8086的入栈过程:
(1) SP←SP-2,调整堆栈指针,指向一个空地 址;
(2) (SP)←(SRC),源操作数(字)送SP指 向的单元。
例1: PUSH AX
PUSH BX
2.出栈指令POP(Pop from the stack)
3.1 数据传送指令
3.1.1 机器指令格式
指令:机器语言的一条语句,它是一组有意义的 二进制代码,由操作码字段和操作数字段 两个部分组成。
操作码字段:表示该指令应进行什么性质的操作。 操作数字段:指出指令执行的参与者,也就是各
种操作的对象。
图3-1 指令的一般格式
3.1 数据传送指令
3.1.2 通用数据传送指令 通用数据传送指令负责CPU内
二、堆栈操作指令
堆栈 按“后进先出” 原则设计的数据区。
堆栈段地址 由SS段寄存器提供 堆栈区操作数据地址 由堆栈指针寄存器SP提供。
SP的初值是指向的地址为栈底,进行堆栈数据操作后SP指向 栈顶地址。必须为字操作数 1.入栈指令PUSH (Push onto the stack) 格式:PUSH SRC ;SP←SP-2,(SP+1,SP)←(SRC) 8088的入栈过程: (1) SP←SP-1,调整堆栈指针,指向一个空地址(新栈顶) (2)(SP)←(SRCH),源操作数高字节送SP指向的单元; (3) SP←SP-1,调整堆栈指针,指向一个空地址SP;
DEST可为:通用寄存器、存储器、段寄存器
DEST和SRC可以有9种组合,如下图所示:
(1)通用寄存器到通用寄存器
如:MOV AX,BX ;
(2)立即数到通用寄存器
如:MOV AX,03H ;
(3)立即数到存储单元
如:MOV BYTE PTR [2000H],12H
(4)存储单元到通用寄存器
如:MOV AX,[2000H] ;
例: MOV AL,BL ;BL中的8位数据送AL MOV ES,DX ;DX中16位数据送ES MOV AX,[BX] ; MOV CX,[1000H] MOV DX,5040 ;立即数5040送DX
注:对段寄存器赋值时,只能通过寄存器赋值,不能用立即 数直 接赋值。
允许的操作数组合:
SRC 可为:立即数、通用寄存器、存储器、段寄存器。
部的寄存器以及内存单元之间的数据 传递,是数据传送指令中使用最多的 一组指令。该类指令主要包括:MOV、 XCHG和XLAT指令。
3.1 数据传送指令
一、基本的传送指令MOV(Move)
格式:MOV DEST,SRC ;(DEST)← (SRC) 其中:(DEST)、(SRC)分别为源和目的操作数。
第三章 8086基本指令系统
8086全部指令按功能可分成六大类:数据传送指令、 算术运算指令、逻辑指令、串操作指令、控制转移 指令和处理机控制指令。本章主要介绍以下内容:
数据传送指令 算术运算指令 位操作指令 字符串操作指令 32位CPU扩展的指令
3.1 数据传送指令
数据传送指令负责将数据、地址或立即数传送到寄存 器或存储单元中。 在8086/8088 CPU指令系统中,数据传送指令共有14条 分5组,它们是: (1)通用数据传送指令:MOV 、XCHG 、XLAT (2)堆栈操作指令:PUSH 、POP (3)标志寄存器传送指令:LAHF、SAHF、PUSHF、 POPF (4)地址传送指令:LEA 、LDS 、LES (5)输入输出指令:IN 、OUT 其中除标志寄存器传送指令外,数据传送指均不影响任何 标志位。
该指令操作数全为隐含,换码表首地址在BX中,欲读取 数据表单元偏移量在AL中。
例: MOV BX,1000H M百度文库V AL,04H XLAT ;AL←(BX+AL)=(1004H)=50H
换码过程:
3.1 数据传送指令
3.1.3 堆栈操作指令
堆栈及堆栈操作指令 (1).堆栈的概念
堆栈是内存的一个逻辑段,当这个段被指定为堆栈后,可 用堆栈操作指令对它进行特殊规则的访问,这个规则就是:
例: XCHG AL,BL ;AL和BL的内容互换 XCHG BX,CX ;BX和CX的内容互换。 XCHG [1200H],CX ;CX中的内容和1200H, ;1201H两单元的内容互换
三、查表换码指令 XLAT (Translate)
格式:XLAT ;AL←(BX+AL) 表:≤256字节的数据区。 BX BX指向表的首地址 AL 指向数据表某项地址(0~255)。 执行XLAT时,将BX+AL指向字节单元中的值送AL。
格式:POP DEST ;(DEST)←(SP+1,SP),SP←SP+2 ;或(DEST)←(SP) , SP←SP+2
8088的出栈过程 (1)(DESTL)←(SP),源操作数低字节(SP)送目的; (2) SP←SP+1,调整堆栈指针SP; (3)(DESTH)←(SP),源操作数高字节(SP)送目的; (4) SP←SP+1,再调整堆栈指针SP 。 8086的出栈操作 (1) (DEST)←(SP),源字操作数(SP)送目的; (2) SP←SP+2,调整堆栈指针SP。
相关文档
最新文档