汇编学习
一、在计算机中专门有连接CPU和其他芯片的导线,按照逻辑上划分为:
地址总线:在地址总线上传播就为地址,CPU是通过地址总线爱指定存储单元的
发到内存之后,改地址指向数据
数据总线:数据传递
控制总线:CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合,控制总线的宽度决定了CPU对外部器件的控制能力(正相关)。命令!
寄存器
寄存器结构
AH:高位寄存器 AL:地位寄存器
分开存储
汇编指令例子
物理地址的形成:段地址+偏移地址
CS、IP寄存器:
CS存放了指令的段地址,IP存放指令的偏移地址
Mov指令的格式:
Mov 寄存器名,内存单元地址
栈:
栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于最后进入这个空间的数据,最先出去
入栈:将一个新的元素放到栈顶。
出栈:从栈顶取出一个元素。
栈的操作规则:LIFO(Last In First Out,后进先出)
PUSH(入栈) POP(出栈)
段寄存器SS 存放栈顶的段地址
寄存器SP 存放栈顶的偏移地址(任意时刻,SS:SP指向栈顶元素)
PUSH指令的执行过程:
栈顶越界问题:
重复的push实现栈的溢出,数据泄露
POP指令的执行过程:
[bx]和Loop指令:
[bx]存放loop结果
Cx的值影响着loop语句的执行结果,cx存放着循环次数
段前缀:
lea指令:
1、lea eax,[addr]
就是将表达式addr的值放入eax寄存器,示例如下:
lea eax,[401000h]; 将值401000h写入eax寄存器中
lea指令右边的操作数表示一个精指针,上述指令和mov eax,401000h是等价的
2、lea eax,dword ptr [ebx];将ebx的值赋值给eax
3、lea eax,c;其中c为一个int型的变量,该条语句的意思是把c的地址赋值给eax;