一、简介
玩了几天树莓派,想自己写个系统玩玩。搜索了一圈下来,只有一本《自己动手写操作系统》能学习,所以就开始了自己动手写操作系统的学习。
今天记录一些在书中学习的部分汇编语言基础知识。
二、我目前在使用的云服务器推荐,学Linux不搞个云服务器始终感觉不爽
要稳定性、安全性、不差钱的可以使用阿里、腾讯等大厂的云服务器。
本人穷屌丝一枚,所以我用的是免费的“三丰云”,同时提供"免费虚拟主机"和“免费云服务器”产品,有兴趣的可以试一下。
“三丰云”我已经用了一段时间,感觉还是很不错的,速度快也很稳定。
三丰云 https://www.sanfengyun.com 链接。
大家可以点击前往查看是否需要。
三、在书中学习的部分汇编语言知识
书中使用的是NASM编译器。
NASM是区分大小写的,例如,符号foo
与FOO
被视为两个不同的标识符。在NASM中,对memory操作数需要加[ ]
括号,例如,将变量bar
的值赋给ebx
寄存器应写作movebx,[bar]
而不是movebx,bar
。
NASM支持多种内存寻址方式,如[base + disp]
,并且可以为memory操作数提供一个size,如使用byte
关键字指明操作数的大小为byte。此外,还可以为memory操作数提供一个displacement值,这在指令的执行中非常重要。
NASM的标号对大小写敏感,必须以字母开头或以特殊字符(如_
、.
等)开头。标号可以包含字母、数字、_$#@\~.?
等字符,但最大长度为4095。此外,NASM支持使用段寄存器名字作为指令前缀,如es mov [bx], ax
等价于mov [es:bx], ax
。
NASM中的立即数表示形式灵活,支持十六进制、十进制和二进制,并且后缀的大小写随意。此外,NASM还支持使用下划线来提高立即数字符的可读性。立即数可以作为操作数使用在指令中。