多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 1.2 其他文献 下面的书籍包含有关80386的其他资料。 + Introduction to the 80386, order number 231252 + 80386 Hardware Reference Manual, order number 231732 + 80386 System Software Writer's Guide, order number 231499 + 80386 High Performance 32-bit Microprocessor with Integrated Memory Management (Data Sheet), order number 231630 ## 1.3 符号转换 本手册在描述数据结构,指令助记符,十六进制数以及上标和下标时用了特殊的符号。下标用{}括起来,例如10{2} = 10 以2为基。上标用()加上前面的^来表示,例如,10^(3) = 10的3次幂。复习这些符号有助于以后的阅读。 ### 1.3.1 数据结构格式 在内存数据结构的示例图中,低位地址出现在图示的右边;地址从右至左,从下往上递增。位从右向左依次编号。图1-1举例说明了这种惯例。 ### 1.3.2 未定义位和软件兼容性 在许多寄存器和存储器的布局图中,一些位被标记为未定义。当位标记为未定义(如图1-1所示)时,将来的软件将这些位按未定义来处理对于软件兼容性非常重要。在处理未定义位时软件应该遵循下列规则: + 在测试含有未定义位的寄存器时,不要依赖这些位的状态。在测试前要屏蔽掉这些未定义位。 + 在将寄存器的值拷贝到另一个寄存器时,不要依赖这些位。 + 不要依赖于保留在已写入未定义位的信息。 + 装载寄存器时,要始终把未定义位按0载入,或以之前存在寄存器中的值重新载入。 注意: 依赖于寄存器中的未定义位将导致软件依赖于80386在处理这些位时的未指定的处理方式。如果将来的处理器使用了未定义位,那么依赖于这些位的软件有不兼容的风险。任何软件都要避免依赖于未定义的80386寄存器位。 ![](https://box.kancloud.cn/2016-03-06_56dbfdabde912.png) ### 1.3.3 指令操作数 当用符号表示指令时,你正在使用的是80386汇编指令集。在这个集合中,指令遵循下面的格式: ``` 标号:前缀 助记符 参数1,参数2,参数3 ``` 这里: + 标号是指令的标识符,后面跟冒号。 + 前缀是一条指令前缀的可选保留名字。 + 助记符暗示指令执行的操作,操作码中的一个保留字。 + 操作数参数1,参数2,参数3为可选项。可以有0-3个参数,取决于指令码。当含有参数时,它们或者是立即数,或者是数据项的标识符。操作数标识符可以是寄存器的保留字,或者在其他程序中声明(在例子中可能没有这种形式),指向数据项。当修改数据的指令中含有两个操作数时,右边的是源操作数,左边的是目的操作数。 例子: ``` LOADREG: MOV EAX, SUBTOTAL ``` 本例中,LOADREG是标号,MOV是操作码指令助记符,EAX是目的操作数,SUBTOTAL是源操作数。 ### 1.3.4 十六进制数 十六进制数字后面加上H的字符串表示以16为基的数字。十六进制数字从下面的集合中选取(0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F)。某些情况下,特别是在程序语法例子中,一个前导零会被加在A-F前面。例如,0FH等于十进制的15。 ### 1.3.5 上标和下标 本手册使用特殊的符号来表示上标和下标。下标用{}括起来,例如10{2} = 10 以2为基。上标用()加上前面的^来表示,例如,10^(3) = 10的3次幂。 编者注:本手册在适当的地方用实际形式来表示上标和下标。