想要在画面里画点什么东西,就需要往VRAM的内存区里写入点什么东西。
但是如何写入呢?
作者先用了汇编:
_write_mem8: ; void write_mem8(int addr, int data);
MOV ECX,[ESP+4] ; [ESP + 4]中存放的是地址,将其读入ECX
MOV AL,[ESP+8] ; [ESP + 8]中存放的是数据,将其读入AL
MOV [ECX],AL
RET
SP是指向栈的指针,C语言压入参数又是从右往做压的,而压栈又是高地址压入低地址,而32位一次入栈就是4个字节。所以自然而然,[ESP+4]的内容就是地址,+8那就是数据了。
下面的一些C语言代码我就省略了。
作者的第二个方法是使用指针。我觉得C语言的指针还是应该去好好了解的,建议看一下
《C和指针》这本书。
至于什么调色板,想来也是十分好理解。
因为设定调色板的时候要屏蔽中断,但是设定好了又要回复,所以作者写了2个函数,先屏蔽在回复。
哦,实在不想赘述太多,因为这一章没有啥新概念,单纯的一些C语言罢了。
时间: 2024-10-25 16:45:43