OSLab1
NASM语法
首先,nasm相关一定要多看英文手册和stackoverflow,内网啥都学不到的……
¶程序结构
NASM is line-based. Most programs consist of directives followed by one or more sections. Lines can have an optional label. Most lines have an instruction followed by zero or more operands.

一般来说,代码写在.text段,全局使用的数据写在.data区
¶常用指令
movx,y: x←y
andx,y: x←x∧y
orx,y: x←x∨y
xorx,y: x←x⨁y
addx,y: x←x+y
subx,y: x←x−y
incx: x←x+1
decx: x←x−1
syscall n: Invoke operating system routine n
db: A pseudo-instruction that declares bytes that will be in memory when the program runs
¶三类操作数
¶寄存器操作数
x86-84架构下的16个64位integer registers:

也可以用下面的名字操作各寄存器的低32位,视作一个32位寄存器:

低16、8位也有相应的名称:

¶存储操作数
有如下几种寻址:
[ number ][ reg ][ reg + reg*scale ]scale 只有1, 2, 4和8[ reg + number ][ reg + reg*scale + number ]
The number is called the displacement(偏移); the plain register is called the base(基地址); the register with the scale is called the index.
¶立即操作数
1 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 慎治の万事屋!

