• 第七章 更灵活的定位内存地址的方法


    一、and和or指令

    and指令:逻辑与指令,按位进行与运算。(仅在1与1时结果中为1)

    eg:mov al,01100011B

            and al,00111011B

    结果:al=00100011B

    作用:通过该指令可以将操作对象的相应位设为0,其他位不变。

    or指令:逻辑或指令,按位进行或运算。(仅在0或0时为0)

    eg:mov  al,01100011B

            or   al,00111011B

    结果:al=01111011B

    作用:通过该指令可以将操作对象的相应位设为1,其他位不变。

     注意:(1)and和or指令的格式需要参照add指令。

                (2)在debug中,默认十六进制,不支持二进制写法。

                (3)在.asm格式的完整汇编源程序文件中,默认十进制;也支持二进制、十六进制写法。(加B->二进制,加H->16进制)

    二、关于ASCII码(略)

    三、以字符形式给出的数据

    用'......'的形式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCII码。

    eg:“db 'unIX' ”相当于“db 75H,65H,49H,58H”,“u”、“n”、“I”、“X”的ASCII码分别为75H、6EH、49H、58H。

    四、大小写和数字字符与数字间的转化问题

    规律ASCII码:大写字母+20H=小写字母

    规律ASCII码:数字字符-30H=数字

    注意:在汇编源程序中:既可以使用诸如'a'这样的字符写法,也可以使用ASCⅡ码形式的写法。 在debug中: a命令中不支持诸如'a'这样的写法 e命令中支持诸如'a'这样的写法,也支持ASCⅡ码形式的写法。

     五、其他灵活的地址表示方式

    ①用[bx + idata]表示表示内存单元。idata表示常数。

    ②用[si]表示表示内存单元。用[si + idata]表示表示内存单元。idata表示常量。

    ③用[di]表示表示内存单元。用[di + idata]表示表示内存单元。idata表示常量。

    ④用[bx+di], [bx+si]表示表示内存单元。 用[bx+di+idata], [bx+si+idata]表示表示内存单元。

    写法:

  • 相关阅读:
    Leveldb Advanced
    loadrunner生成随机数
    用strtok函数分割字符串
    loadrunner关联及web_reg_save_param方法浅析
    Linux中find用法
    在LoadRunner中从数组类型的参数随机取值的方法
    LoadRunner可以把关联取值当作检查点来使用
    Oracle特殊字符转义:&和'
    LoadRunner 11 error:Cannot initialize driver dll
    用SecureCRT在windows和CentOS间上传下载文件
  • 原文地址:https://www.cnblogs.com/Yangruzhang/p/10049313.html
Copyright © 2020-2023  润新知