第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种颜色是纯白,因此画面变成了白色。
实验结果: