惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

文章列表

5月月考 - faryou的博客 - 日记 faryou的博客-五一回老家 【汇编 - 功能】中断安装中断实现 【汇编&硬件】时钟中断的具体实现 faryou的博客-这些年,我不再看《熊出没》 【汇编&硬件】关机中断的具体实现 【汇编&硬件】网络连接相关中断的具体实现 faryou的博客-年初小记 【汇编&硬件】鼠标控制中断的具体实现 【汇编&硬件】声音输出中断的具体实现 【汇编&硬件】屏幕输出中断的具体实现 【汇编&硬件】磁盘读取中断的具体实现 【汇编&硬件】键盘读取中断的具体实现 【汇编】汇编环境的搭建及Debug的使用教程 【汇编】漫谈:学习汇编后的一些思考 faryou的博客-关于本站即日起实行“一站三体”运营制度 【汇编基础教程】完结篇 写在最后:前言 【汇编基础教程】使用BIOS的中断实现键盘输入及磁盘I/O 【汇编基础教程】中断 【汇编基础教程】端口 【汇编基础教程】标志寄存器 【汇编基础教程】再谈栈 【汇编基础教程】段 【汇编基础教程】来存一些数据! 【汇编基础教程】来写个“函数” 【汇编基础教程】更灵活的定位内存 【汇编基础教程】理解一下[bx]和loop指令 【汇编基础教程】跳一跳! faryou的博客-我的竞赛经历&对人生的一些思考 关于现在中小学计算机课的一些想法及思考 2025年度总结
【汇编基础教程】寄存器和内存&一些基本命令的说明
faryou · 2026-01-30 · via

前言

本来已经编辑好了汇编语言后面的几篇教程,但最终考虑了一下还是决定写一下这篇基础教程,如果读者愿意看我的教程学习的话建议后面几篇反复来回看,有助于理解,看书也是如此~

什么是寄存器

从物理层面上看,寄存器位于CPU中,位数一般与地址总线相同(因为用地址总线在内存和寄存器之间通信)。寄存器的读写速度非常快,用处很多,有些寄存器用来存地址,帮助CPU实现一些功能,有的寄存器则用作循环,如下节课的bx。

什么是内存

不知道大家有没有见过内存条,外观上看,内存条是一块薄片,而实际上我们从物理的角度看内存条,它存储的数据确实是条状分布,即便是你在高级语言编程时创建的数组,在内存上也是“一条”,高级语言中的多维数组并不是多维,只不过是用指针标记的罢了。
内存的读写速度相比寄存器慢些(毕竟寄存器本身就在CPU里面),但相比硬盘这些还是要快不少的。应用程序运行时的数据都放在内存中(包括程序的机器代码数据本身、图片、视频、长文本等静态资源,和一些临时数据(就是高级语言中的变量))。

mov指令

mov指令从CPU的角度看就是用地址总线传输一组数据,有以下六种格式:

mov 寄存器,数据(常数)
mov 寄存器,寄存器
mov 寄存器,内存单元
mov 内存单元,寄存器
mov 段寄存器,寄存器
mov 寄存器,段寄存器

写成C语言方便理解就是这样:

void mov(int *a,int b){
    *a = b;
    return ;
}

使用mov时有三个需要注意的点:

  1. 要向段寄存器中传数据时,必须用寄存器中转。
  2. 要在内存空间之间中转数据,必须用寄存器中转。
  3. mov指令的两个数据必须位数相同

如违反会导致编译错误,因为CPU没有这些功能。

add&sub指令

add指令和sub指令的使用格式类似,其功能是向前一个操作单元加上/减去(add是加,sub是减)。以下是使用格式:

add/sub 寄存器,数据
add/sub 寄存器,寄存器
add/sub 寄存器,内存单元
add/sub 内存单元,寄存器

写成C语言方便理解就是这样:

void add(int *a,int b){
    *a += b;
    return ;
}
void sub(int *a,int b){
    *a -= b;
    return ;
}

需要注意的是,add/sub指令不能对段寄存器操作。