第七章 更灵活的定位内存地址的方法
一、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]表示表示内存单元。
写法: