zoukankan      html  css  js  c++  java
  • 第4章 数据传递.寻址和算术运算

    Mov操作规则:
      1.两个操作数的尺寸必须一致
      2.两个操作数不能同时为内存操作数
      3.目的操作数不能是CS,EIP和IP
      4.立即数不能自己送至寄存器
    MovZx(零扩展传送)指令:无符号整数使用
      eg:
      mov bl,11111111b
      mov eax,bl
      MOVSX(符号扩展传送)前面补0

    LAHF:将EFLAGS的低字节复制到AH寄存器
    SAHF:将AH寄存器的值恢复到EFLAGS中
    xCHG:交换两个数,不支持立即数

    直接偏移操作数:
      eg:
      var1 byte 1ah,2ah

      .code
      mov ah,var1 1ah
      mov ah,var1+1 2ah
    加法减法:
      inc/dec
      inc reg/mem
      dec reg/mem
    ADD dec,source 只能操作相同尺寸的操作数
    Sub dec,source 同上,结果存储在dec中
    neg 得到操作数的补码

    CF(进位标志位) inc和Dec指令不影响进位标志位,neg总是改变cf
    AC(辅助标志位) 最低字节的第3位向第4位进位,则设置

    加法测试:
    在两个有符号整数相加的时候,以下情况说明发生了溢出
      1.两个正数相加的和是负数
      2.两个负数相加的和是正数
    CPU是如何检测溢出的:
      使用进位标志 xor 结果的最高有效位

    4.3 和数据相关的操作符合伪指令
      1.OFFSET 返回数据标号的偏移地址
      2.PTR 重载操作数的默认尺寸
      eg:
        .data varb dword 01aah
        .code mov ax,word ptr varb
      eg.将较小值送较大的目的操作数
        .data vara word 1h,2h
        .code mov eax,dword ptr vara
    3.TYPE 按字节计算单个元素大小
    4.LENGTHOF 计算数组元素的数目
    5.SIZEOF 返回TYPE*LENGTHOF
    6.ALIGN 将变量的位置按字节,字,双字或段边界对齐

    TYPDEF 允许创建自定义类型
      eg: pbyte typdef ptr byte 声明在数据段之前
    JMP:
      jmp 目的地址
    LOOP:
      loop 目的地址
    步骤:
      首先,ecx减1,接着与0相比较,不能与0就跳转到目标标号处

     

  • 相关阅读:
    H
    并查集
    H
    Supermarket (贪心 并查集)
    H
    M
    N-Find a way
    HDU 4035 Maze
    #386. 【UNR #3】鸽子固定器
    P4688 [Ynoi2016]掉进兔子洞
  • 原文地址:https://www.cnblogs.com/student-note/p/8619503.html
Copyright © 2011-2022 走看看