• 8086CPU中的数据传送类指令


    数据传送类指令

    注意点

    1. (SAHF、POPF) 指令外,其余传送类指令CPU执行后,对6个状态标志均无影响。

    也就是说,除 (SAHF、POPF) 指令外,CPU只是做了数据传送,并没有进行数据运算,对状态标志位无影响。

    1. 语法规则

    1)立即数只能做源操作数

    2)类型一致

    3)类型明确

    4)当ES、DS、SS做目的操作数时,源操作数不能是立即数。

    5)CS、IP不能做目的操作数

    6)两存储器单元之间不能直接操作

    数据传送类指令

    通用数据传送指令-MOV

    mov指令的格式为

    MOV DST,SRC
    

    取有效地址指令-LEA

    LEA指令的格式为

    LEA REG_16,MEM
    

    REG_16表示一个16位寄存器,理论上只要是16位即可,但是因为存放有效地址,所以最好是 BX、BP、SI、DI

    MEM是5种存储器寻址方式之一指明的一个存储器单元。

    例如

    LEA BX,data1 ;data1是变量,直接寻址找到这个存储单元把有效地址送给BX
    

    等同于

    MOV BX,OFFSET data1
    

    功能一样。

    取地址指针指令-LDS、LES

    这两个指令是将双字变量MEM内容中的高16位送入DS/ES,低16位送入指定的REG16中。这里REG16不允许为段寄存器。

    不常用,了解。

    以LDS为例,格式为

    LDS REG_16,MEM
    

    REG_16表示一个16位寄存器

    MEM是5种存储器寻址方式之一指明的一个存储器单元

    例如

    TABLE DB 10H,20H...
    LDS BX,TABLE ;TABLE的段地址->(DS),TABLE的偏移地址->(BX)
    

    得到地址指针,就可以很容易取数据

    MOV DX,[BX]
    

    实际中LEA用的比较多。

    标志传送指令-LAHF、SAHF

    指令LAHF(load AH register from flags)可以将PSW寄存器中的低8位传送到AH中,指令SAHF(store AH register from flags)可以将AH的内容传送到PSW寄存器中的低8位。

    源操作数和目的操作数的寻址方式均为隐含寻址方式。

    数据交换指令-XCHG

    XCHG指令完成两个操作数之间数据的交换

    XCHG指令格式为

    XCHG DST,SRC 
    

    注意两点:

    1. DST,SRC的内容均不能为立即数

    2. 所有的段寄存器不能参加交换

    例如

    XCHG AX,BX
    XCHG DL,DH
    XCHG AX,[SI+3]
    

    字节转换指令-XLAP

    XLAP为隐含寻址,格式为

    XLAP ;DS:(BX)+(AL)->(AL)
    

    右边默认在数据段,以BX内容为基址加上以AL为内容的相对位移量,作为有效地址,寻找一个存储单元,将这个单元的内容传送给AL。

    XLAP非常适合两个代码之间的交换(查表)

    例如

    TABLE DB 30H,31H,32H,33H... ;在DS段定义字符0-9,存储为ASCII码
    ...
    mov AL,3 ;通过查表得到字符3
    LEA BX,TABLE ;BX默认数据段,执行后TABLE的偏移地址属性传送给BX
    XLAB ;(AL)= 33H
    

    所以XLAB也叫查表指令。

    堆栈操作指令

    有四条,堆栈操作指令必须 按字(双字节)操作

    1. 压入堆栈指令-PUSH

    格式为

    PUSH SRC ;将SRC压入堆栈
    

    SRC不能为立即数

    1. 弹出堆栈指令-POP

    格式为

    POP DST ;从堆栈弹出DST
    
    1. PUSHF

    PUSHF为隐含寻址,格式为

    PUSHF ;将(PSW)压入堆栈
    
    1. POPF

    POPF为隐含寻址,格式为

    POPF ;从堆栈弹出一个字,送给(PSW)
    
  • 相关阅读:
    nxn随机矩阵乘以概率向量依旧是概率向量
    关于飞行器姿态计算
    两矩阵相乘后的秩
    关于矩阵A*b=A*c 中b是否等于c
    5.5节24题
    推论5.2.5
    js中function参数默认值
    陈经纶学校分析数据导出情况
    支付宝申请
    外国javascript资源搜索
  • 原文地址:https://www.cnblogs.com/ckk-blog/p/14540994.html
Copyright © 2020-2023  润新知