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

一、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]表示表示内存单元。

写法:

原文地址:https://www.cnblogs.com/Yangruzhang/p/10049313.html