Intel- 64 与 IA-32架构软件开发人员手册 中文版

来源:互联网 发布:微信推广源码 编辑:程序博客网 时间:2024/05/21 12:39

1.3.2.1指令的操作数

当指令用被表示成符号时,一个IA-32汇编语言的子集是可用的。在该子集中,一个指令有如下的格式:

标号:助记符参数1,参数2,参数3

在此:

*标号是一个后跟一个冒号的标识符

*助记符是一类具有相同功能的机器指令操作码的名称

*操作数参数1参数2和参数3可选。可能会有03个操作数,这取决于操作码。有时他们也采用文字或标识符的形式来表示数据项目。操作数标识符用来保存寄存器名称或被假定分配给(可能不在例子中显示的)程序中另一部分声明的数据项目。

当两个操作数出现在算术或逻辑指令中时,右边是源操作数,左边是目的操作数。

例如:

LOADREG: MOV EAX, SUBTOTAL

在该例子中,LOADREG是个标号,MOV是一个操作码的助记符,EAX是目的操作数,SUBTOTAL是目的操作数,有的汇编语言则把目的操作数和源操作数放在相反的位置。

1.3.3十六进制和二进制

十六进制数由一串十六进制的数字后跟一个H表示(如:0F82EH),十六进制的数字是下面这个集合中的字符:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,E,F

二进制数是由一串01表示的,有时候它后面会跟一个B(如:1010B)。B标识只用在数字类型可能混乱的情况下。

1.3.4分段寻址

处理器按字节寻址。这意味着内存是按字节被组织和访问的。不管访问一个还是多个字节,字节地址是用来定位字节或字节所在内存的。可被寻址的内存范围被称为寻址空间。处理器也支持分段寻址,这是一种一个程序可以有很多独立地址空间的寻址方式,称为分段。例如,一个程序可以将它的代码和堆栈放在不同的段。代码地址总是在代码空间,而堆栈地址总是在堆栈空间。下面的符号用来指明段内字节地址:

段寄存器:偏移地址

例如:下面的段寻址表示DS寄存器指向的段的偏移为FF79H的字节:

DS:FF79H

 

 下面的段寻址表示代码段中的指令地址,CS寄存器指向代码段,EIP包含指令地址:

CS:EIP

0 0
原创粉丝点击