8086指令系统(一) 通用数据传送指令 |
您所在的位置:网站首页 › 地址传送指令有什么 › 8086指令系统(一) 通用数据传送指令 |
通用数据传送指令
指令作用MOV dest,srcsrc -> destPUSH src(16位)src 内容入栈POP dest(16位)栈顶2个单元内容复制到dest中XCHG dest,src交换 dest 和 src 中的数据XLAT表的首地址(偏移地址)放到 BX , 将要查找的元素序号放到 AL 中, 执行XLAT指令后, 表中相应序号的元素被存入 AL 中LEA REG, 符号变量将符号变量所对应的内存偏移地址复制到 REG 中MOV REG, OFFSET 符号变量LEA REG, 符号变量MOV REG, SEG 符号变量将SEGMENT的段地址复制到REGLDS REG, SEGMENT:[偏移地址]指定段的偏移地址位置的两个单元内容复制到REG,+2两个单元的内容复制到DSLES REG, SEGMENT:[偏移地址]指定段的偏移地址位置的两个单元内容复制到REG,+2两个单元的内容复制到ESCBWAL数据的最高位扩展到AHCDWAX数据的最高位扩展到DXPUSHF将FLAGS寄存器中的内容入栈POPF将栈顶的内容(栈顶两个单元的内容)复制到FLAGS寄存器中LAHF将FLAGS寄存器的低8位内容复制到AH寄存器中SLAHF将AH寄存器的内容复制到FLAGS寄存器中
1. MOV指令
MOV 目标操作数, 源操作数 功能: 将一个操作数从源地址复制到目标地址。 注意: (1). 两个操作数必须是相等字长的; (2). 两个操作数不能同时是存储器操作数, 既不能实现内存中的单元复制到另一块内存中的单元; (3). 两个操作数不能同时是段寄存器; (4). 指令指针存储器IP 和 代码段寄存器CS 不能作为目标操作数; (5). 寄存器FLAGS不能作为操作数; (6). 源操作数是立即数, 目标操作数不能是段寄存器。 2. 入栈指令堆栈: 堆栈是内存中一个特定的区域, 用于存放寄存器或存储器中暂时不用又必须保存的数据, 在内存中, 堆栈所处的段叫堆栈段, 其段地址在SS寄存器中。对堆栈的操作满足先进先出。 堆栈的作用: 交换两个数、签到计数器 等 入栈指令 PUSH 存储器操作数/寄存器 功能: 将内存中的数据或寄存器中的数据放入堆栈。 注意: (1). 堆栈入栈以字节为单位, 每次2字节, 存储器必须是16位的; (2). 在堆栈中存放数据, 从高地址向低地址存放; (2). 堆栈段的内存由SS决定, 寄存器SP中存放着栈顶的偏移地址。 执行 PUSH AX 指令 步骤: ① SP = SP -2 ② 将数据拷贝到栈中 高8位复制到 SP + 1 低8位复制到 SP 3. 出栈指令 出栈指令 POP 存储器操作数/寄存器 功能: 将当前栈顶元素数据复制到内存中或寄存器中。 注意: 出栈时, 寄存器不能为CS 执行 POP AX 指令 步骤: ① 将数据拷贝到栈中 SP 数据复制到 低八位 SP + 1 数据复制到 高8位复制到 SP ② SP = SP + 2 4. 交换指令XCHG 目标操作数, 源操作数 注意: (1). 两个操作数不能同时为存储器操作数 (2). 两个操作数不能是段寄存器 (3). 两个操作数字长必须相同 4. 查找表指令XLAT 功能: 根据查找表中的元素序号找出相应的元素 使用: 将查找表写好放到内存中, 将表的首地址(偏移地址)放到 寄存器BX , 将要查找的元素序号放到 寄存器AL 中(表中第一个元素序号为0), 执行XLAT指令后, 表中相应序号的元素被存入 寄存器AL中。 例子: LEA SI, TABLE ;将TABLE(查找表)的偏移地址放到SI寄存器中 MOV BX, TABLE MOV AL, 0 XLAT 此时AL中存放的就是表中序号为0的元素的ASCII码 5. 取偏移地址的指令或运算符 取当前逻辑段偏移地址LEA REG, MEM 功能: 将当前逻辑段中的变量(内存单元的符号地址, 存储器操作数)的16位偏移地址写入通用寄存器(最好选择间址寄存器) 取段偏移地址运算符OFFSET MOV REG, OFFSET MEM 功能: 与 LEA REG, MEM 等价 取段地址的运算符MOV REG, SEG SEGMENT 功能: 将段的16位地址存入REG中 远地址传送指令LDS REG, SEGMENT:[偏移地址] 功能: 将SEGMENT段的偏移地址位置的两个单元内容复制到REG, 将SEGMENT段的偏移地址 + 2 位置的内容复制到DS LES REG, SEGMENT:[偏移地址] 功能: 将SEGMENT段的偏移地址位置的两个单元内容复制到REG, 将SEGMENT段的偏移地址 + 2 位置的内容复制到ES 6. 字位扩展指令对于无符号数, 用零扩展 对于有符号数, 用符号位扩展 CBW 功能: 将寄存器AL数据的最高位扩展到AH CBD 功能: 将寄存器AX数据的最高位扩展到DX 7. 标志寄存器数据传送指令PUSHF 功能: 将FLAGS寄存器中的内容入栈。 POPF 功能: 将栈顶的内容(栈顶两个单元的内容)复制到FLAGS寄存器中。 LAHF 功能: 将FLAGS寄存器的低八位内容复制到AH寄存器中 SLAHF 功能: 将AH寄存器的内容复制到FLAGS寄存器中 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |