
test.c内容如下
extern void pChar(char), //这个函数只是声明了,没有定义,因此根本就编译不过。
main()
{
pChar('a')
}
后面那个汇编文件写的,抛开语言问题。
1、8086在现在的计算机上,只是一种兼容模式,这种模式就类似于你在32位xp上运行debug那样,根本不对的。
2、windows你调不了这个int指令,这是特权指令,直接调不了的。而且int 10h,这个10h也未必就是输出 *** 作,这个要详细查windows系统调用表的,就是那个GDT。一般需要windbg内核调试的时候才能看到。
因此建议:
1、安装一个radasm或者masm,这是windows上的开发工具。
2、转战linux,linux可以直接作用as汇编器编译汇编代码,也可以使用gcc直接编译,而且可以马上看到执行效果。
3、若真欲学汇编大可不必单纯的学汇编,直接下载一个vc6.0 __asm直接内联汇编看效果就好啦,汇编语言重在读懂源码,目的是为了工作中调试程序,真正的靠汇编来编写程序,除非内存要求特别苛刻的条件下,譬如写shellcode .如下图所示,你就明白啦。 直接在VC中用汇编实现 1+1 = 2
分两种,一种是按值传递,一种是按地址传递,按值传递就是在子函数中开辟出一个临时内存空间,将传递的数值保存在这个空间中,当子函数结束后,这个内存空间就会释放了!
按地址传递则是把主函数开辟的某个内存空间首地址传递给子函数,子函数可以直接读写主函数上这段内存空间,当子函数结束后,这部分空间不会被释放,主函数将继续使用这段空间!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)