7.1 and和or指令
通过and指令可将操作对象的相应位设为0,其他位不变。
通过or指令可将操作对象的相应位设为1,其他位不变。
7.2 关于ASCII码
我们按一下键盘的a键
计算机用ASCII码的规则对其进行编码,将其转化为61H存储在内存的指定空间中;文本编辑软件从内存中取出61H,将其送到显卡上的显存中;工作在文本模式下的显卡,用ASCII码的规则解释显存中的内容,61H被当作字符“a",显卡驱动显示器,将字符"a"的图像画在屏幕上。我们可以看到,显卡在处理文本信息的时候,是按照ASCII码的规则进行的。这也就是说,如果我们要想在显示器上看到"a",就要给显卡提供"a"的ASCII码,61H.如何提供?当然是写入显存中。
7.3 以字符形式给出的数据
7.4 大小写转换的问题
如果一个问题的解决方案,是我们陷入了一种矛盾之中。那么,很可能是我们考虑问题的出发点有了问题,或是说,我们起初运用的规律并不合适。
王爽不仅是计算机科学家还是哲学家。
7.5 [bx+idata]
在前面,我们用[bx]的方式来指明一个内存单元,还可以用一种更为灵活的方式来指明内存单元:[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata
该指令也可以写成如下格式
见书
7.6 用[bx+idata]的方式进行数组的处理
7.7 SI和DI
si和di是8086CPU中和bx功能相近的寄存器,si和di不能够分成两个8位寄存器来使用。
7.8 [bx+si]和[bx+di]
7.9 [bx+si+idata]和[bx+di+idata]
7.10 不同的寻址方式的灵活应用
如果我们比较一下前面用到的几种定位内存地址的方法(可称为寻址方式),就可以发现:
1 [idata]用一个常量来表示地址,可用于直接定位一个内存单元
2 [bx]用一个变量来表示内存地址,可用于间接定位一个内存单元
3 [bx+idata]用一个变量和常量表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元。
4 [bx+si]用两个变量表示地址
5 [bx+si+idata]用两个变量和一个常量表示地址。
可以看到,从[idata]一直到[bx+si+idata],我们可以用更加灵活的方式来定位一个内存单元的地址。这使我们可以从更加结构化的角度来看待所要处理的数据。
下面我们通过一个问题的系列来体会CPU提供多种寻址方式的用意。
一般来说,在需要暂存数据的时候,我们都应该使用栈。
这一章中,我们主要讲解了更灵活的寻址方式的应用和一些编程方法,主要内容有:
寻址方式的意义和应用
二重循环问题的处理(二维数组)
栈的应用
大小写转换的方法
and,or指令
下一章中,我们将对寻址方式的问题进行更深入地探讨。之所以如此重视这个问题,是因为寻址方式的适当使用,是我们可以以更合理的结构来看待所要处理的数据。而为所要处理的看似杂乱的数据设计一种清晰的数据结构是程序设计的一个关键的问题。