zoukankan      html  css  js  c++  java
  • 03.通用寄存器_内存读写

    32位通用寄存器
    寄存器 主要用途 编号
    EAX 累加器 0
    ECX 计数 1
    EDX I/O指针 2
    EBX DS段的数据指针 3
    ESP 堆栈指针 4
    EBP SS段的数据指针 5
    ESI 字符串操作的源指针, SS段的数据指针 6
    EDI 字符串操作的目标指针, ES段的数据指针 7

    EIP
    指向当前将要执行的代码

    16位通用寄存器
    AX
    CX
    DX
    BX
    SP
    BP
    SI
    DI

    8位通用寄存器
    AL
    CL
    DL
    BL
    AH
    CH
    DH
    BH

    EAX寄存器经过下列运算结果
    MOV EAX, 0xAAAAAAAA
    MOV AX, 0xBBBB
    MOV AH, 0xCC
    MOV AL, 0xDD

    0xAABBCCDD

    OD快捷键
    打开程序
    F3

    单步步过
    F8

    汇编指令
    MOV
    移动"源"到"目的"
    MOV指令特殊注意: 两个操作数不能都是内存

    汇编练习(深刻理解寄存器、内存、数据的宽度)
    r 通用寄存器, m 代表内存, imm 代表立即数, r8 代表8位通用寄存器, m8 代表8位内存, imm8 代表8位立即数
    MOV指令
    MOV r/m8, r8
    MOV r/m16, r16
    MOV r/m32, r32
    MOV r8, r/m8
    MOV r16, r/m16
    MOV r32, r/m32
    MOV r8, imm8
    MOV r16, imm16
    MOV r32, imm32
    ADD指令
    将源操作的值加到目标操作数上
    ADD r/m8, imm8
    ADD r/m16, imm16
    ADD r/m32, imm32
    ADD r/m16, imm8
    ADD r/m32, imm8
    ADD r/m8, r8
    ADD r/m16, r16
    ADD r/m32, r32
    ADD r8, r/m8
    ADD r16, r/m16
    ADD r32, r/m32

    SUB指令
    将目标操作数减去源操作的值
    SUB AL, imm8
    SUB AX, imm16
    SUB EAX, imm32
    SUB r/m8, imm8
    SUB r/m16, imm16
    SUB r/m32, imm32
    SUB r/m16, imm8
    SUB r/m32, imm8
    SUB r/m8, r8
    SUB r/m16, r16
    SUB r/m32, r32
    SUB

    AND指令
    将目标操作数按位与源操作的值
    AND AL, imm8
    AND AX, imm16
    AND EAX, imm32
    AND r/m8, imm8
    AND r/m16, imm16
    AND r/m32, imm32
    AND r/m16, imm8
    AND r/m32, imm8
    AND r/m8, r8
    AND r/m16, r16
    AND r/m32, r32
    AND r8, r/m8
    AND r16, r/m16
    AND r32, r/m32

    OR
    将目标操作数按位与源操作的值
    OR AL, imm8
    OR AX, imm16
    OR EAX, imm32
    OR r/m8, imm8
    OR r/m16, imm16
    OR r/m32, imm32
    OR r/m16, imm8
    OR r/m32, imm8
    OR r/m8, r8
    OR r/m16, r16
    OR r/m32, r32
    OR r8, r/m8
    OR r16, r/m16
    OR r32, r/m32

    XOR
    将目标操作数按位异或源操作的值
    XOR AL, imm8
    XOR AX, imm16
    XOR EAX, imm32
    XOR r/m8, imm8
    XOR r/m16, imm16
    XOR r/m32, imm32
    XOR r/m16, imm8
    XOR r/m32, imm8
    XOR r/m8, r8
    XOR r/m16, r16
    XOR r/m32, r32
    XOR r8, r/m8
    XOR r16, r/m16
    XOR r32, r/m32

    NOT
    将操作数按位取反
    NOT r/m8
    NOT r/m16
    NOT r/m32

    内存编号的单位
    字节(8位)

    32位计算机
    正常情况寻址宽度是32位(2^32--> 2^2 * 2^10 * 2^10 * 2^10 --> 4G), 可以修改

    内存编号的格式(加[]区分立即数)
    [0x00000000 - 0xFFFFFFFF]

    mov word ptr ds: [0x12345678], 0xFFFF
    指令 大小 指针 数据段 操作内存编号 值

    每个应用程序都有
    4G的独立内存空间使用

  • 相关阅读:
    敏捷开发之Scrum扫盲篇
    select选项框特效
    jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码
    如何使用CSS实现小三角形效果
    轻松学习Ionic (四) 修改应用图标及添加启动画面(更新官方命令行工具自动生成)
    轻松学习Ionic (三) 安装sass并在webstorm中为scss添加watcher
    轻松学习Ionic (二) 为Android项目集成Crosswalk(更新官方命令行工具)
    轻松学习Ionic (一) 搭建开发环境,并创建工程
    cmake时选择的VS生成器
    mysql更改密码
  • 原文地址:https://www.cnblogs.com/ret688/p/12827231.html
Copyright © 2011-2022 走看看