- [lk524849699] 虽说讲的是现在的实情,但也没有说出该怎么做,沿着什么方向去改变这种情况? 10/25 19:48
- [wulishuijiao] 什么工作不需要不断学习呢?做小姐的都很辛苦都要在技术上不断进取呢! 真是说得太妙了 06/08 12:23
- [leibniz007] 学无止境,《汇编语言》这本书嘛,每天抽一点点时间,一个月左右就能学完;汇编嘛,永远学不完的…………… 12/18 01:38
- [游客] 你是个好人,好人有好命,祝福你! 05/11 12:11
- [li4096255] 心情不好的时候就要运动,运动。 累的不能再累的时候,睡一觉就好多了。 若能在这样的时刻还能强 04/11 21:23
- [qingqingziyin] 呵呵,挫折不会少,乐观的态度比什么都重要。 01/11 19:56
- [playboy] 在消沉的时候,----》在消沉将要来或已经来的时候, 01/09 15:09
- [playboy] 处于心情消沉的时候,做些自己喜欢做的事,和朋友聊聊天,也可以看看历史方面的杂志,投入进去后,慢慢的就 01/09 15:07
- [playboy] 上学时,觉得有太多的时间可以用于玩耍,有太多的假期可以和亲朋团聚,可是现在,觉得时间是那么的短暂,还 01/09 15:00
- [playboy] 每个人都有自己的选择,选择了就应该坚持 01/09 14:58
- [游客] 你好! 在对《汇编语言》第二章2.10节的疑问? 中你所给出的确定指令长度的网页链接打不开 10/23 17:13
[2007-10-22 16:29] TC2.0环境下C语言中嵌入汇编指令
在TC2.0环境下,加入一句汇编代码的格式如下:
asm mov ax,0
即在汇编指令的前面加入一标记asm。这只是第一步。
例如我编写程序1.c如下:
main(){
asm mov ax,0
printf("hello world!");
}
然后通过按F9进行编译和连接,结果报In-line assembly not allowed...错误。而真实情况是,TC2.0环境正常情况下是不支持汇编指令的。要想执行此程序,需要在命令行方式下通过tcc命令,并且借助TASM.EXE(汇编编译器)才能完成。但是TC2.0根目录一般情况下是没有TASM.EXE的。所以得自己从网上下载。这个编译器我是先下载了tasm5.0,安装完成后,再从安装目录下拷出来的。把TASM.EXE放到tc根目录下,然后进入命令行方式,键入tcc 1.c(使用这个命令,不待任何参数,TCC会自动调用TASM.EXE和TLINK.EXE,并且能够使TLINK.EXE正确的找到需要的.obj和.lib文件),接着敲回车。ok,运行成功了。
以上是写入汇编指令会出现问题。然而TC2.0却支持直接对寄存器的读写。应用格式为‘_’+寄存器名称(必须是大写),如 _AX = 0; 就是把0赋予寄存器AX。如下程序:
main(){
_AX = 0;
_BX = _AX;
}
编译连接均是没有问题的。
以上论述的是如何在TC2.0环境下嵌入汇编指令并使之能够运行,其它环境下可能就没这么复杂了。
另外fishboy的学习博客
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=1118&kindId=1023&postId=1889&readSg=1也谈到了此问题,有兴趣的可以去看看。
以上内容参考:http://www.blog.edu.cn/user2/pyongyang/archives/2006/1311013.shtml
asm mov ax,0
即在汇编指令的前面加入一标记asm。这只是第一步。
例如我编写程序1.c如下:
main(){
asm mov ax,0
printf("hello world!");
}
然后通过按F9进行编译和连接,结果报In-line assembly not allowed...错误。而真实情况是,TC2.0环境正常情况下是不支持汇编指令的。要想执行此程序,需要在命令行方式下通过tcc命令,并且借助TASM.EXE(汇编编译器)才能完成。但是TC2.0根目录一般情况下是没有TASM.EXE的。所以得自己从网上下载。这个编译器我是先下载了tasm5.0,安装完成后,再从安装目录下拷出来的。把TASM.EXE放到tc根目录下,然后进入命令行方式,键入tcc 1.c(使用这个命令,不待任何参数,TCC会自动调用TASM.EXE和TLINK.EXE,并且能够使TLINK.EXE正确的找到需要的.obj和.lib文件),接着敲回车。ok,运行成功了。
以上是写入汇编指令会出现问题。然而TC2.0却支持直接对寄存器的读写。应用格式为‘_’+寄存器名称(必须是大写),如 _AX = 0; 就是把0赋予寄存器AX。如下程序:
main(){
_AX = 0;
_BX = _AX;
}
编译连接均是没有问题的。
以上论述的是如何在TC2.0环境下嵌入汇编指令并使之能够运行,其它环境下可能就没这么复杂了。
另外fishboy的学习博客
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=1118&kindId=1023&postId=1889&readSg=1也谈到了此问题,有兴趣的可以去看看。
以上内容参考:http://www.blog.edu.cn/user2/pyongyang/archives/2006/1311013.shtml
评论次数(3) |
浏览次数(2354) |
类型(计算机) |
收藏此文 |