1.汇编语言的发展->是机器语言,由0和1组成的机器指令.
如:0101 0001 1101 0110
2.汇编语言(assembly language),使用符号代替机器语言,也称为符号语言如:mov ax,bx
3.汇编语言的特点,可以直接访问、控制各种硬件设备,比如存储器、CPU等,能最大限度地发挥硬件的功能,能够不受编译器的限制,对生成的二进制代码进行完全的控制,目标代码简短,占用内存少,执行速度快汇编指令是机器指令的助记符,同机器指令一一对应。每一种CPU都有自己的机器指令集\汇编指令集,所以汇编语言不具备可移植性,知识点过多,开发者需要对CPU等硬件结构有所了解,不易于编写、调试、维护
4.基于IA-32处理器和32位汇编语言
(1).指令的格式指令由操作码和操作数组成.在IA-32中采用的是可变长度指令格式,指令代码异常复杂,一般格式为:指令前缀+操作码+ModR/M或SIB+位移量+立即数。指令前缀有0-4个字节,可以分成 四组。操作码就是操作的编码。其中指令前缀和操作码组成操作码,ModR/M或SIB指示了操作数的地址,表示操作数在哪。
(2).汇编的语句格式,有两种语句:执行性语句和说明性语句。执行性语句格式:标号:硬指令助记符 操作数 ;注释说明性语句格式:名字 伪指令助记符 参数 ;注释,其中标号和名字符合高级语言的标示符命名规则。硬指令 助记符就是处理器执行的指令,伪指令助记符就是类型声明。操作数和参数可以是常量等。注释前面要有;引导。
(3).源程序框架,在此使用简化 段格式。汇编程序由代码段,数据段和堆栈段组成。通常将执行性语句放在代码段,说明性语句放在数据段。
5. 汇编语言的五种寻址模式
(1).寄存器寻址 registermode: %寄存器 例如:%edx 访问寄存器edx
(2). 立即寻址 immediate: $数字例如:$0x123 数值0x123
(3)·直接寻址 direct:数字 例如:0x123访问地址0x123指向的内存
(4)·间接寻址 indirect: (%寄存器) (%ebx) 例如:访问寄存器ebx中的地址指向的内存
(5)·变址寻址 displaced:偏移量(%寄存器) 4(%ebx):访问寄存器ebx中的地址再加4指向的内存;
6.内存分段管理
8086是用“基础地址(段地址×16) + 偏移地址 = 物理地址”的方式给出物理地址,为了开发方便,我们可以采取分段的方法来管理内存,比如:地址10000H~100FFH的内存单元组成一个段,该段的起始地址(基础地址)为10000H,段地址为1000H,大小为100H 地址10000H~1007FH、10080H~100FFH的内存单元组成2个段,它们的起始地址(基础地址)为:10000H和10080H,段地址为1000H和1008H,大小都为80H.在编程时可以根据需要,将若干连续地址的内存单元看做一个段,用段地址×16定为段的起始地址(基础地址),用偏移地址定位段中的内存单元。段地址×16必然是16的倍数,所以一个段的起始地址(基础地址)也一定是16的倍数,偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB