汇编语言的源代码组成: 由转换成本地代码的指令(操作码)与针对会汇编器的伪指令构成
伪指令: 负责把程序的构造及汇编的方法指示给汇编器,伪指令本身无法转换成本地代码.
段定义: 用来划定范围区域,是一个连续的内存空间,在程序中表示一段命令和数据等程序构成的集合体,一个程序由多个段构成
汇编语言的segment伪指令表示段定义的开始,ends伪指令表示段定义的结束,group伪指令将源代码中不同的段定义在本地代码程序中整合为一个(多个段定义汇总成一个,如功能类型的多个段定义),proc/endp伪指令包含的部分表示函数的处理过程,end源代码结束
在源代码中,即使指令和数据是混杂编写的,经过编译或者汇编后的本地代码,都会转换成段定义划分整齐的本地代码
cpu 与内存的关系:
本地代码加载到内存中才能运行,内存中存储着构成本地代码的指令和数据
程序运行时,cpu 从内存中把指令和数据读出,然后将其存储到 CPU 内部的寄存器中进行相应的处理
cpu 中的寄存器通过 eax、ebx 等名称进行区分,内存中的存储区域通过地址编号进行区分
汇编代码通过寄存器的名称指定给操作数
汇编语言的语法:
由操作码(动作) + 操作数(对象)组成,不过也存在只有操作码的指令,多个操作数时使用逗号分割开,一行表示对 CPU 的一个指令
操作数中指定了寄存器名、内存地址、常数等,能够使用何种形式的操作码,由 CPU 的架构类型决定
汇编语言中函数名表示的是函数所在的内存地址
常用操作码及功清单如下
在汇编中,通过使用 cmp 比较指令与 jl 跳转指令来实现的循环与条件分支。
mov 指令: 对寄存器和内存进行数据存储,mov A,B 把B的值赋给A,
操作数 A, B 可以为寄存器、常数、标签(附加在地址前),以及用[地址]表示的内存地址
没有用方括号围起来的内容表示对该值进行处理,有方括号围起来的内容会被解释为内存地址,会对该内存地址对应的值进行读写操作。