1.and和or指令
(1)and指令:逻辑与指令,按位与运算
例如:
mov al,01100011B
and al,00111011B
执行后:al=00100011B
通过该指令可以将操作对象的相应位设为0,其他位不变。
(2)or指令:逻辑或指令,按位进行或运算
例如:
mov al,01100011B
or al,00111011B
通过该指令可以将操作对象的相应位设为1,其他位不变。
说明:在debug中,默认16进制,不支持2进制写法
2.汇编中的字符处理
(1)关于ASCII码
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符
![](https://img2018.cnblogs.com/blog/1499456/201812/1499456-20181220223039127-1203573836.png)
![](https://img2018.cnblogs.com/blog/1499456/201812/1499456-20181220223044979-1111475502.png)
1. 大写字母+20H=小写字母;小写字母-20H=大写字母
2. and al,11011111B 可将小写字母变为大写字母;or al,00100000B 可将大写字母变为小写字母
(3) [bx+idata]
[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata
例如:mov, ad,[bx+200]
将一个内存单元的内容送入ax,这个内存单元的长度为2个字节,存放一个字,偏移地址为bx中的数值加上200,段地址在ds中。
(4)si和di
是和bx功能相近的寄存器,但是si和di不能够分成两个8位寄存器来使用
(5)[bx+si]和[bx+di]
[bx+si]表示一个内存单元,它的偏移地址为(bx)+(si)(即bx中的数值加上si中的数值)
将一个内存单元的内容送入ax,这个内存单元的长度为2个字节,存放一个字,偏移地址为bx中的数值加上si中的数值,段地址在ds中。
(6)[bx+si+idata]和[bx+di+idata]
[bx+si+idata]表示一个内存单元,它的偏移地址为(bx)+(si)+idata(即bx中的数值加上si中的数值再加上idata)
将一个内存单元的内容送入ax,这个内存单元的长度为2个字节,存放一个字,偏移地址为bx中的数值加上si中的数值和idata中的值,段地址在ds中。