【操作系统课设】《Orange‘S:一个操作系统的实现》编译运行中的关于 disp_str 函数的一些问题,程序员大本营,技术文章内容聚合第一站。
Orange‘s:disp_str()字符串函数第二次调用乱码原因 技术标签: 编写操作系统之路 于渊 操作系统 Orange S书上.c编译参数加上-m32,LD链接参数-m elf_i386 去掉此Bug后正好Makefile也完成了 第2次调用disp_str()时乱码,Google后说是ebx没有进栈被保护的原因,果然没错,但是为什么呢? 断点打到kernel起始执行...
DispStr: push ebp mov ebp, esp ;-->esp中放的是TopOfStack指针,指向栈顶(高地址) push ebx push esi push edi mov esi, [ebp+8] mov edi, [dwDispPos] ;_dwDispPos: dd (80 * 6 + 0) * 2; 屏幕第6行, 第0列,是屏幕上下一个显示的位置 ;dwDispPos equ _dwDispPos - $$ mov ah, ...
函数是需要先申明再使用的,错误提示表明编译器无法找到你的函数原型,所以不知道你这个函数调用是否正确,你可以在 void disp_welcome()前面加一个函数原型 disp_str(int a,int b,int c,char * s);这只是举个例子,具体函数原型要看你自己怎么定义的了 要把调用的函数disp_str放到main前面,或者在...