IA-32汇编语言笔记—— 基础知识
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IA-32汇编语言笔记—— 基础知识相关的知识,希望对你有一定的参考价值。
- 记录汇编语言课笔记,可能有不正确的地方,欢迎指出
- 教材《新概念汇编语言》—— 杨季文
- 这篇文章对应书第一章 基础知识
文章目录
- 一、CPU简介
- 1、目标代码
- 2、CPU基本功能
- 二、汇编语言的概念
- 1、机器指令
- 2、汇编指令格式
- 3、汇编语言及优缺点
- 三、数据的表示&存储
- 1. 数值数据的表示
- 2. 非数值数据表示
- 3. 基本数据类型
- 4. 数据的存储
一、CPU简介
1、目标代码
- 目标代码/目标程序:由机器指令组成的程序
- CPU只能执行机器指令
- 高级语言编写的程序,最后都要转换成机器指令组成的程序,即目标代码,这样才能执行
- 目标代码是二进制编码的
- 程序编译过程
2、CPU基本功能
- CPU的基本功能包括:执行机器指令、暂存少量数据、访问寄存器
- 执行机器指令
- 机器指令:CPU能直接识别并执行的指令
- 指令集:一款CPU能执行的全部指令的集合
- 指令的分类:
(1)数据传送指令
(2)转移指令
(3)处理器控制指令
(4)其他指令
- 暂存少量数据
- 大部分指令是对数据进行运算和处理。运算数据和运算结构存在
(1)寄存器(CPU中)
(2)存储器中(内存) - 利用CPU内寄存器存取运算数据和结果效率最高。汇编器会充分利用CPU中仅有的寄存器,编写汇编时也要注意
- 访问存储器
- 存储器:CPU可以直接访问的计算机系统的物理内存
- 由机器指令组成的目标程序存储于存储器中,部分待处理数据也是
- 存储器(内存)由一系列存储单元线性组成,最基本的存储单元为一个字节。为了标识和存取每一个单元,给每个单元一个编号(即地址)
二、汇编语言的概念
1、机器指令
- 由CPU直接识别并执行的指令称为机器指令,采用二进制编码
- 一般由
操作码
和操作数
两部分构成
(1)操作码
指出要进行的 操作
/运算
…
(2)操作数
指出参与操作的 对象
/结果存放位置
/数据
… - 通常用十六进制形式写出机器指令
2、汇编指令格式
- 用指令助记符、地址符号等表示的指令称为汇编格式指令
- 格式:
[标号:] 指令助记符 [操作数表]
,其中助记符
是必须的,操作数
随指令而定,标号
可有可无
3、汇编语言及优缺点
- 优:效率高
- 缺:繁琐、难调试
1. 数值数据的表示
- 数的二进制表示
- 有符号数的补码表示
- 符号扩展(扩展符号位)
- 数值数据表示范围
- BCD码(常用8421)
- 十六进制表示(4位二进制转换1位十六进制,通常后加H)
2. 非数值数据表示
- ASCII码
- 变形国标码
3. 基本数据类型
- 计算机存取的以二进制位表示的信息位数一般是8的倍数,有专门名称
IA32汇编名称 | 长度 | C中对应例子 | 说明 |
字节 | 8 | (unsigned)char / ASCII | - |
字 | 16 | (unsigned)short / 变形国标码汉字 | CPU一次能处理信息量的术语,字长是衡量CPU性能的重要指标 |
双字 | 32 | (unsigned)int | IA32是32位CPU,用的最多的数据类型就是双字 |
四字 | 64 | (unsigned)double | - |
十字节 | 80 | - | - |
字符串 | - | (unsigned)int | 字符构成的一个线性数组,通常每个字符由一个字节表示,但有时每个字符也可用一个字或一个双字表示 |
4. 数据的存储
- 使用小端存储:数据的低位保存在内存的低地址中,而数 据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
以上是关于IA-32汇编语言笔记—— 基础知识的主要内容,如果未能解决你的问题,请参考以下文章
使用 __builtin_ ia32 shufps 将向量移动 32 位?