汇编语言
用汇编语言翻译机器语言,对人类更友好。要理解汇编语言,需要知道寄存器、基本指令、中断等基础知识。由于汇编语言偏向底层,所以不同的系统上汇编语言是不一样的。
1 | // 用汇编语言实现对话框弹出helloworld |
常见寄存器
- 通用寄存器:
- 数据寄存器:EAX、EBX、ECX、EDX
- 变址寄存器:ESI、EDI
- 指针寄存器:ESP、EBP
- 段寄存器:CS、DS、ES、SS、GS
- 指令寄存器:EIP
- 标志寄存器:CF、PF、AF、ZF、SF、OF
常见基本语句
- 基本运算:INC(加法)、ADD(加法)、DEC(减法)、SUB(减法)、mul(乘法)、div(除法)
- 循环、跳转:loop(循环)、call(函数调用)、jmp(跳转)、ret(返回)
- 数据移动:mov、lea
- 栈操作:PUSH、POP
- 逻辑运算:AND、OR、XOR(异或)、NOT
- 比较运算:cmp、test
中断
汇编语言需要和底层打交道,这里就需要有中断机制
- 内中断:和cpu直接交互
- int指令
- 端口:对应硬件设备的交互
- 外中断:来自外设的中断
从汇编看函数栈
在编程语言中函数是以栈结构来设计的,先调用的函数后返回。
1 | void firstCall(int x, int y) |