项目作者: koerriva
项目描述 :
base AMD x86_64
高级语言: C
项目地址: git://github.com/koerriva/os.git
make iso
sudo apt install grub-pc-bin
c call nasm on Linux
- 当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。
- 当参数为 7 个以上时, 前 6 个与前面一样, 但后面的依次从 “右向左” 放入栈中。
link
nasm call c on Linux
- The first six integer or pointer arguments are passed in registers RDI, RSI, RDX, RCX, R8, and R9
link
使用in和out指令对端口进行读写:
和端口通信的数据只能用al和ax,8位数据用al,16位数据用ax,如果用其它寄存器会报错;
in用于从端口读数据,使用格式是:in al/ax, 端口号
out用于向端口写数据,使用格式时:out 端口号, al/ax
其中端口号只能用立即数或者dx表示(dx用于存放端口号,端口号毕竟是16位的嘛),并且如果用寄存器表示端口号就必须用dx,用其它的就会报错;
vga 教程
multiboot 显示模式切换问题