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

推荐订阅源

F
Fortinet All Blogs
S
Secure Thoughts
月光博客
月光博客
美团技术团队
雷峰网
雷峰网
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Forbes - Security
Forbes - Security
W
WeLiveSecurity
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
G
GRAHAM CLULEY
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
AI
AI
Last Week in AI
Last Week in AI
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recent Announcements
Recent Announcements
Webroot Blog
Webroot Blog
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
N
News and Events Feed by Topic
罗磊的独立博客
The Register - Security
The Register - Security
Blog — PlanetScale
Blog — PlanetScale
T
Threat Research - Cisco Blogs
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
T
The Exploit Database - CXSecurity.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
B
Blog
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Engineering at Meta
Engineering at Meta
Latest news
Latest news
IT之家
IT之家
D
DataBreaches.Net
博客园 - 司徒正美
N
Netflix TechBlog - Medium
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

faryou的博客

出租车上的对话 faryou的博客-告别小高一 faryou的博客-中考 · 竞赛 · 生活 · 思考 5月月考 - faryou的博客 - 日记 faryou的博客-五一回老家 【汇编 - 功能】中断安装中断实现 【汇编&硬件】时钟中断的具体实现 faryou的博客-这些年,我不再看《熊出没》 【汇编&硬件】关机中断的具体实现 【汇编&硬件】网络连接相关中断的具体实现 faryou的博客-年初小记 【汇编&硬件】鼠标控制中断的具体实现 【汇编&硬件】声音输出中断的具体实现 【汇编&硬件】屏幕输出中断的具体实现 【汇编&硬件】磁盘读取中断的具体实现 【汇编&硬件】键盘读取中断的具体实现 【汇编】汇编环境的搭建及Debug的使用教程 faryou的博客-关于本站即日起实行“一站三体”运营制度 【汇编基础教程】完结篇 写在最后:前言 【汇编基础教程】使用BIOS的中断实现键盘输入及磁盘I/O 【汇编基础教程】中断 【汇编基础教程】端口 【汇编基础教程】标志寄存器 【汇编基础教程】再谈栈 【汇编基础教程】段 【汇编基础教程】来存一些数据! 【汇编基础教程】寄存器和内存&一些基本命令的说明 【汇编基础教程】来写个“函数” 【汇编基础教程】更灵活的定位内存 【汇编基础教程】理解一下[bx]和loop指令 【汇编基础教程】跳一跳! faryou的博客-我的竞赛经历&对人生的一些思考 faryou的博客-关于现在中小学计算机课的一些想法及思考 faryou的博客-2025年度总结 faryou的博客-临平山下十五年 faryou的博客-Windows 10即将停止支持,谈谈自己从小到大用电脑的感受 faryou的博客-谈谈一名10后的怀旧情怀 【汇编基础教程】8086CPU工作原理 【C语言】指针的理解与应用 【算法教程】【C/C++】DP(动态规划):区间DP——程序设计思路与代码实现 【算法教程】【C/C++】BFS(广度优先搜索)——程序设计思路与代码实现 【算法教程】【C/C++】DFS(深度优先搜索)——程序设计思路与代码实现 【算法教程】【C/C++】单源最短路径——程序设计思路与代码实现 【算法教程】【C/C++】最小生成树——程序设计思路与代码实现 【算法教程】【C/C++】并查集——程序设计思路与代码实现 【算法教程】【C/C++】DP(动态规划):背包DP——程序设计思路与代码实现 【算法教程】【C/C++】DP(动态规划):简单动规问题——程序设计思路与代码实现 【算法教程】【C/C++】递推——程序设计思路与代码实现 【算法教程】【C/C++】三分算法——程序设计思路与代码实现 【算法教程】【C/C++】二分答案——程序设计思路与代码实现 【算法教程】【C/C++】二分查找——程序设计思路与代码实现 【算法教程】【C/C++】贪心算法——程序设计思路与代码实现 【算法教程】【C/C++】基础数学:快排——程序设计思路与代码实现 【算法教程】【C/C++】基础数学:快速幂——程序设计思路与代码实现 【算法教程】【C/C++】基础数学:进制转换——程序设计思路与代码实现 一文弄懂C++中的自定义函数 faryou的博客-2024年度总结
【汇编】漫谈:学习汇编后的一些思考
作者: faryou · 2026-02-01 · via faryou的博客

前言

学习汇编之后,我们或许能够思考一些之前无法考虑的问题。本文是个人的一些想法,分享给大家,也许可以激发大家的思维。

操作系统的思考

学了汇编,我们可以对一些结构较为简单的操作系统进行研究。
我们来考虑一个DOS操作系统,我们想想一个DOS系统由哪些部分组成,无非是引导、硬件控制(最基本的,磁盘、键盘和屏幕)、提供一些中断程序(即所谓"API"),以及一个基本的命令行。这也是MS-DOS1.25中的全部。
很显然,我们如果要独立制作一个DOS操作系统,就应该从这些方面入手。我们已经学完了汇编的基础知识。很显然,前面三个部分以我们目前的汇编能力,外加学习一点硬件知识,有希望能完成;最后一个部分涉及到字符串的处理,这需要我们学习一些相关的算法(如果想实现复杂点的语法使用C语言更为方便,但这里仅考虑最简单的情况)。
因此,我们不妨将这样一个较为基础的DOS作为练习16位汇编的大作业~

高级语言的思考

我们思考一下C语言里的函数、变量、结构体等概念的实现。
首先,我们在使用函数的时候经常进行嵌套及递归操作,那么如何保存之前函数中的数据就成为了一个问题。汇编语言中,我们使用call调用子程序之后,子程序会先把寄存器入栈。而在C语言的函数中,我们需要暂存局部变量,并且函数过程结束之后,应当及时释放局部变量占用的内存。很显然,函数调用及嵌套具有“先进后出”的性质,即越先进入的函数越靠后结束,这完美契合了栈的特性。如果我们构建一个“栈”,存下局部变量,那么只需要在函数调用前后进出栈,就可以很好的完成内存管理。而我们还有全局变量,两者应该分开存。通常的做法是:在内存中靠前的地方划出一块作为栈,分界线之后的区域存放全局变量,称为“堆”。其他高级语言的内存管理也与此大致相同。这也解释了为什么局部变量不能定义过大——栈的空间有限,会爆栈。
结构体的原理很简单,实质上是一堆挤在一起的变量,只需要用多个寄存器访问即可。

关于CPU

我们前面已经学习了8086CPU的工作原理,选择8086是因为其机制较为简单,同时作为早期CPU的代表,适合新手进行学习,现实生活中应该是见不到这种三十多年前的CPU的。8086CPU为单任务CPU,即只能同时执行一条指令,并且没有任何内存保护机制,也就是说所有程序的内存可以互相看到,非常不安全。因此Intel在之后的CPU版本中加入了保护模式,实现了内存的权限层级管理。保护模式下我们需要学习许多新东西,机制也更复杂。我的观点是:先把8086下的硬件之类的事情折腾清楚搞熟练,再逐步接触保护模式。因此,我后面的教程也会对8086机的其他硬件调用进行详细介绍,以助读者理解。