第16章 直接定位表

16.1描述了单元长度的标号

以前用的标号都是这样的,它们表示的是起始地址:

第16章 直接定位表_第1张图片

注意这里的标号后面都跟了一个冒号,而本节要介绍的标号没有冒号,它不仅能表示起始地址还能表示内存单元的长度:

第16章 直接定位表_第2张图片

至于说内存单元的长度还是根据db和dw来确定的。

16.2在其他段中使用数据标号

带有冒号的标号只能用在代码段,不能用在数据段。

如果想在代码段中用数据标号直接访问数据,需要用assume将标号所在的段和一个段寄存器联系起来。

第16章 直接定位表_第3张图片

上图中所示代码将data段和DS寄存器联系了起来。

然后需要把DS中的值设置为data段的起始地址,如下所示:

第16章 直接定位表_第4张图片

你可以这样使用数据段内容:

第16章 直接定位表_第5张图片

很显然,现在a和b所代表的数据都是与DS相关连的,所以直接写出偏移地址来就可以确定数据的位置。

16.3直接定址表

本届讨论用查表的方法编写程序的技巧。

原来数字型数字和字符型数之间相差了30H,即1+30H=’1’。

16进制中的’A’与10相差37H,即,10+37H=’A’。

我感觉本节内容并不是在讲汇编语言,而是在说与复杂的计算比较起来,直接查表是更快的解决方案。但是表需要占用一定的存储空间,可这是以空间换时间算法思想的一种体现。

能够通过计算出元素位置从而找到所需元素的表称为直接定址表。

你可能感兴趣的:(第16章 直接定位表)