Linux操作系统汇编语言基础知识(图文代码)
1、什么是汇编语言,它在计算机语言中的地位?
1 | 汇编语言是程序设计语言的基础语言,是唯一可以直接与计算机硬件打交道的语言 |
2、汇编语言与源程序、汇编程序、汇编的关系?
3、汇编语言的特点
- \1) 汇编语言与机器指令一一对应,可充分理解计算机的操作过程汇编语言指令是机器指令的符号表示
- \2) 汇编语言是靠近机器的语言编程时要求熟悉机器硬件系统,可充分利用机器硬件中的全部功能,发挥机器的特点在计算机系统中,某些功能由汇编语言程序实现:实时过程控制系统、系统初始化、实际的输入输出设备操作
- \3) 汇编语言程序的效率高于高级语言效率,指的是用汇编语言编写的源程序在汇编后所得的目标程序效率高时间域的高效率:运行速度快;空间域的高效率:目标代码占用存储空间少
4、汇编语言与高级语言的比较
5、进制转换
1 | (略) |
6、数据组织单位
\1) 位(bit)
是计算机中表示信息的最小单位,符号b,是一个二进制位,每一位用0或1表示
\2) 字节(Byte)
8位二进制数为一个字节
\3) 字(Word)
若干个字节为一个字,一般一个字包含两个字节
范围0000HFFFFHFFFFFFFFH
\4) 双字(Double Word)
两个字节为一个字,四个字节为连个字,称为双字
范围00000000H
\5) 字长
机器字的长度为字长,即计算机中每个字所包含的位数,由机器数据总线数决定
例如,数据总线数为64位,机器字长为64位,即每个字有8个字节
\6) 数据字与指令字
数据字:在存储单元中存储的是数据
指令字:在存储单元中存储的是指令
无论是数据字还是指令字,在存储单元中都是以二进制的形式存放的
7、BCD码
两种存储方式:组合型(1个字节表示2个BCD码);非组合型(1个字节表示1个BCD码)
8、80X86计算机组织结构
微型计算机的硬件系统主要由3个主要部分组成:
- 1)中央处理器CPU(运算器、控制器、寄存器)
- 2)输入输出设备
- 3)存储器
9、80X86 CPU的寄存器
寄存器分为3类:
- 1)通用寄存器
- 2)控制寄存器
- 3)段寄存器
8个8位通用寄存器:AL,AH,BL,BH,CL,CH,DL,DH
8个16位通用寄存器:AX,BX,CX,DX,SI,DI,BP,SP
8个32位通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP
说明:1)指针寄存器(SP,ESP,BP,EBP)
SP,ESP为堆栈指针寄存器,存放当前堆栈段栈顶的偏移地址,
是根据指令自动移动的,要想随机读取堆栈段中的数据,必须通过BP或EBP基址指针寄存器来读取。
2)控制寄存器(IP,EIP,FLAGS,EFLAGS)
IP,EIP为指令指针寄存器,用于存放当前正在执行的指令的
下一条指令的偏移地址,该寄存器所指的为代码段的偏移地址。
FLAGS为标识寄存器,表示程序运行时的状态和一些特殊控制
3)段寄存器
代码和数据是分开存放,代码存放在代码段,数据存放在数据段
10、内存组织结构
1)内存的地址
在存储器中内存单元的基本单位是字节,每个字节都有一个唯一的地址
2)存储单元的内容
一个存储单元存放的信息为存储单元的内容
- 分为:字节单元、字节单元、双字单元
- 双字:需要两个16位寄存器,通常为DX:AX,DX高位,AX低位
1 | 3)堆栈 |
11、实模式
1 | 1)介绍 |
1 | 逻辑地址:用段地址和偏移地址来表示内存单元的地址为逻辑地址,例如,段地址:偏移地址 |
内存分配方法?
代码段、数据段、堆栈段的大小,是以节为最小单位分配内存区域的16字节=2个字=1节,节的边界地址就是能够被16整除的地址偏移地址(段内地址)是从0000H开始的例子:假设程序分配的内存区从6100H开始,程序长度1020字节,操作数510字节,堆栈段250字节则代码段长度为1024D=400H,数据段长度为512D=200H,堆栈段长度为256D=100H
示意图如下:
段与段之间的关系?
8088/8086 CPU把1MB的存储空间划分成若干逻辑段每个段的起始地址必须是能够被16整除的数逻辑段的最大长度为64KB 1MB的存储空间最多可以分成64K个逻辑段,当每个逻辑段为16KB时段与段之间可以相邻、分离、重叠、部分重叠
12、保护模式
1 | 1)保护模式存储器寻址机制 |
13、存储器管理机制
1 | 1)分段管理机制 |
版权声明:本文为知乎博主「玩转Linux内核」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://zhuanlan.zhihu.com/p/449157752