30天自制操作系统(day4)

第4天:C语言与画面显示的练习

**一、实验主要内容
1、内容1:**用C语言实现内存写入
如果想要在画面上显示东西的话,那么只需要向内存中写入东西即可。但是C语言没有直接写入指定内存地址的语句,便需要采用汇编语言创建一个有这种功能的函数。
修改naskfunc.nas,向其添加部分代码:
在这里插入图片描述
这个函数类似于C语言中的write_mem8(0x1234,0x56),其中addr是内存地址,data是数据,在这里指的是颜色的色号。
在C语言中如果用到了write_mem8函数,就会跳转到_ write_mem8。此时参数指定的数字就存放在内存里,分别是;
第一个数字的存放地址 [ESP+4]
第二个数字的存放地址 [ESP+8]
第三个数字的存放地址 [ESP+12]
第四个数字的存放地址 [ESP+16]
在指定内存地址的地方,需要使用32位寄存器。除此以外,还需要给naskfunc.nas增加一行,也就是INSTRSET指令,其是告知nask“这个程序是给486使用的”,如果见到EAX,会解释成寄存器名。如果不指定的话,会将其解释成标签,因为在老的CPU中,会用EAX来做标签。
修改C语言,添加循环函数,使其填充0xa0000-0xaffff的内存。
在这里插入图片描述
这样的话,内存中能够全部写入了15,也就是全部像素的颜色都是第15种颜色,而第15种颜色是纯白,因此画面变成了白色。
实验结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值