第八章总结
本章对前面的所有内容是具有总结性的。我们知道,计算机是进行数据处理、运算的机器,那么有两个基本的问题就包含在其中:(1)处理的数据在什么地方?(2)要处理的数据有多长?
这两个问题,在机器指令中必须给以明确或隐含的说明,否则计算机就无法工作。本章中,我们就要针对8086CPU对这两个基本问题进行讨论。虽然讨论是在8086CPU的基础上进行的,但是这两个基本问题却是普遍的,对任何一个处理机都存在。
我们定义的描述性符号: roreg和sreg。为了描述上的简洁,在以后的课程中,我们将使用两个描述性的符号reg 来表示一- 个寄存器,用sreg表示一个段寄存器。reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di;sreg的集合包括: ds、ss、 CS、es。
绝大部分机器指令都是进行数据处理的指令,处理大致可分为3类:读取、写入、运算。在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行前一刻,(它将要处理的数据所在的位置。指令在执行前,所要处理的数据可以在3个地方: CPU内部内存、端口(端口将在后面的课程中进行讨论),比如表8.1中所列的指令。8086CPU 提供的如[bx+si+idata]的寻址方式为结构化数据的处理提供了方便。使得我们可以在编程的时候,从结构化的角度去看待所要处理的数据。从上面可以看到,一个结构化的数据包含了多个数据项,而数据 项的类型又不相同,有的是字型数据,有的是字节型数据,有的是数组(字符串)。一般来说,我们可以用[bx+idata+si]的方式来访问结构体中的数据。用bx定位整个结构体,用idata定位结构体中的某一个数据项,用si 定位数组项中的每个元素。
在c语言程序中我们看到,如: dcpip dcc 是一个变量名,指明了结构体变量的地址,中是一个名称,指明了数据项cp的地址,而i是用来定位p中的每一个字符。