社区
汇编语言
帖子详情
如何在c语言中使用汇编语言
zhuixe
2002-12-27 04:53:42
最好详细点,32位的汇编和8086/8088汇编使用时有什么区别?
...全文
178
13
打赏
收藏
如何在c语言中使用汇编语言
最好详细点,32位的汇编和8086/8088汇编使用时有什么区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yaos
2003-01-10
打赏
举报
回复
32为速度快
xdspower
2003-01-10
打赏
举报
回复
原来有一本书专门谈到了多种语言的相互调用问题,找找,图书馆里一定有的。
webhua
2003-01-10
打赏
举报
回复
低级语言调用高级语言,新鲜。
teal
2002-12-28
打赏
举报
回复
可能对妳没多大用
teal
2002-12-28
打赏
举报
回复
记错了,是再汇编里套 c程序
1.如何在汇编程序中调用c模块。
问题来源:主控程序是由汇编写成,而科学计算器由于需要使用c语言函数库中的 数学函数,以及浮点数的处理,并且这两部分如果用汇编实现的话工作量太大。
解决办法:c88在编译c文件时,是将它直接编译成汇编文件,然后再由汇编编译器编译成目标文件。考虑到上述过程,我们在编译时,加上参数-tmp,查看中间输出文件,即可看到后缀为.src的中间汇编文件。通过测试,得知c的命名规则:在c程序中的函数
int dd(){return 0;}
编译后的结果如下:
; E0C88 compiler v1.2 r3 SN00000000-069 (c) 2000 TASKING, Inc.
; options: -e -g -Ms
$CASE ON
$MODEL S
NAME "FILE0"
SYMB TOOL, "E0C88 compiler v1.2", 1
SYMB TYPE, 256, "bit", 'g', 0, 1
SYMB FILE, "..\\src\\file0.c"
DEFSECT ".text", CODE
SECT ".text"
SYMB LINE, 2
GLOBAL _dd
_dd:
SYMB TYPE, 257, 'X', 8, #16, 2, -1
SYMB GFUN, "dd", _dd, #257, 0, 0, 0
SYMB ALAB, _dd, #257
SYMB LINE, 3
LD ba,#00h
SYMB LINE, 4
RET
SYMB EFUN
SYMB ENDF
EXTERN (DATA) __lc_ub_xvwbuffer
EXTERN (DATA) __lc_ue_xvwbuffer
EXTERN (DATA) __lc_es
END
可以看出,函数的名称,在编译完后,相当于汇编程序的标号,并且函数的作用范围也是全局的,在汇编中体现在GLOBAL伪指令上。
并且通过测试,以及查阅文档,我们也搞清楚了它的参数传递机制:
c88编译器总是尽可能充分的利用寄存器,并且c88使用一种灵活的寄存器分配策略,也就是说对于c代码的任意改动,都可能会产生不同的寄存器分配方式。
但是对于传递参数使用的策略是固定的,这也就为我们从汇编调用c模块带来了很大方便。参数是通过一下的寄存器传送的,A,B,L,H,YP,XP,BA,HL,IX,IY。
afallenangel
2002-12-28
打赏
举报
回复
原码能给我看看吗?我的邮箱:afallenangel@sohu.com
teal
2002-12-28
打赏
举报
回复
可以搞到原理和源程序
teal
2002-12-28
打赏
举报
回复
我见过别人再c里面钳汇编
不过那时 c88,那汇编也是epson的8位汇编
不知道对妳有什么帮助
teal
2002-12-28
打赏
举报
回复
还有,32asm 跟系统联系比较紧 ,可以直接调用api函数
有控件
flyycyu
2002-12-28
打赏
举报
回复
__asm
{
....
}
hs_guanqi
2002-12-28
打赏
举报
回复
8086~80286的指令是16位模式的指令。
80386以上按实模式操作时,默认所有指令为16位模式,但是指令长度比对应的8086~80286长。
32位和16位寄存器都可以分别应用在16位指令模式和32位指令模式下。
hs_guanqi
2002-12-27
打赏
举报
回复
最显著的区别就是32位模式下,存取一个32位数据只要一个指令就够了,
而8086下需要两个指令。效率?
32位下,段内偏移采用32位,段的大小最多达4GB,而16位下,段64K。
另外,就是32位下支持保护模式编程,Win95是第一个完全符合32位标准的。
邹工
2002-12-27
打赏
举报
回复
32位的汇编即使用32位的寄存器。EAX,EBX,ECX,EDX...
而8086是16位的。ax,bx,cx,dx.....
清华大学
C语言
课件【超详细_很强大】
1973年贝尔实验室的D.M.Ritchie 在B语言的基础上设计出了
C语言
,对B取长补短,并用之改写了原来用汇编编写的UNIX,(即UNIX第5版),但仅在贝尔实验室
使用
C语言的特点 (1)语言简洁、紧凑,
使用
方便、灵活。 32个...
在
C语言
中
内嵌
汇编语言
② 内嵌汇编指令
中
不要将R12~R14,R0...④
C语言
程序
中
的标号可以被内嵌汇编指令
使用
,但指令BL不能
使用
C语言
的标号(B指令则可以);(2)在
使用
物理寄存器时,不要
使用
过于复杂的
C语言
表达式,避免物理寄存器冲突;
C语言
指针与汇编内存地址(二)
C语言
指针与汇编内存地址视频教程,该课程学习和
使用
过
C语言
的程序员都认为要做到对指针这一概念的透彻理解和灵活运用相当困难。本课程会详细讲解
C语言
与指针、以及如何查看汇编内存等
C语言
高级教程内容。
汇编和
c语言
混合
使用
案例,
汇编语言
与
C语言
的混合
使用
(转)
在
C语言
中
如何
使用
汇编语言
呢?这个问题在不同的编译器
中
,具体实现方法是不同的。不过在实现大方上也不过就是有两种,而且各种编译器的实现方法也是大同小异。一种是在
C语言
中
嵌入
汇编语言
代码,另一种是让
C语言
从...
c语言
可以调用
汇编语言
吗,
C语言
与
汇编语言
混编方式
C语言
是目前非常流行的一种编程语言,除具有高级语言
使用
方便灵活、数据处理能力强、编程简单等优点外:还可实现
汇编语言
的大部分功能,如可直接对硬件进行操作、生成的目标代码质量较高等,而
汇编语言
没有高级语言要...
汇编语言
21,459
社区成员
41,600
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章