当前位置:首页 » 编程语言 » c语言基于汇编

c语言基于汇编

发布时间: 2022-03-12 21:30:20

1. 单片机。分别使用c语言和汇编语言编写一个程序

#include<reg52.h>

unsignedcharaa_at_0x30;

voidmain()
{
IE=0x81;
IT0=1;
aa=0;
while(1);
}

X0_INT()interrupt0
{
aa++;
aa%=100;
}

//====================

ORG0000H
LJMPSTART
INC30H
MOVA,#100
CJNEA,30H,EXIT
MOV30H,#0
EXIT:
RETI

START:
MOVIE,#81H
SETBIT0
MOV30H,#0
SJMP$
END


上面两个程序,均经过试验,可以满足题目要求。

2. C语言和汇编语言的区别是什么

区别如下:

(1)两者编译组成不同。汇编语言是将由0、1组成的机器语言用具有简单语义的英文代码表示,而C语言不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等。

(2)两者被计算机识别的路径不同。汇编语言通常用于对硬件的直接操控。而且C语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行。

(3)两者用处不同。汇编语言通常用在程序中最核心的、控制硬件的代码,一方面是安全,另一方面提高运行速度。而C语言通常用在计算机外用功能上。

(4)两者学习难易程度不同。汇编语言所需要的编绘知识很多很复杂,经常被开发者使用。而C语言是一门很简单方便的语言,编程者也就不需要有太多的专业知识。

计算机语言(Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。计算机语言从低级到高级可以分为:

(1)机器语言,即由0、1组成的机器硬件可以识别的语言;

(2)低级语言,即汇编语言

(3)中级语言,如C语言

(4)高级语言,如C++,JAVA,C#等。

(2)c语言基于汇编扩展阅读:

如今通用的编程语言有两种形式:汇编语言和高级语言。

汇编语言和机器语言实质是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,容易识别和记忆。源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

高级语言是绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。

高级语言主要是相对于低级语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如流行的vb、vc、foxpro、delphi等,这些语言的语法、命令格式都各不相同。

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释类和编译类。

3. 将c语言 翻译为 汇编

你可以先编译,然后反汇编

4. c语言是用什么语言编写的汇编吗

C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言。

1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。

1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。


(4)c语言基于汇编扩展阅读

C语言编译器:

GCC,GNU组织开发的开源免费的编译器

MinGW,Windows操作系统下的GCC

Clang,开源的BSD协议的基于LLVM的编译器

Visual C++:: cl.exe,Microsoft VC++自带的编译器

C语言集成开发环境:

Code::Blocks,开源免费的C/C++ IDE

CodeLite,开源、跨平台的C/C++集成开发环境

Dev-C++,可移植的C/C++IDE

C-Free

Light Table

Visual Studio系列

5. c语言是怎么基于汇编实现的

如果你是想用汇编实现C语言功能呢,我感觉这个应该没什么必要,因为两者最终运行时,同样是以机器语言运行。zd高级语言存的产生就是为了让程序员在编写较少的代码是想更复杂的功能,虽然最终在效率上可能略有下降,但是这是软件工程的思想。但是有些地方是必须使用C,就是操作硬件的时候,有时候为了效率,也可以进行改写。
如果你是在是想知道呢,你对C语言可以进行反编译,就知道大致的结构了,但是C语言本身有很多统一的函数库,所以反编译的东西只要看自己写的东西就好了。

6. C语言和汇编语言的关系

程序员编写的C语言代码,首先要经过C语言编译器,生成汇编代码,这个过程称为编译阶断,当C语言编译器生成汇编代码后,再调用汇编器来将汇编代码编译成汇编指令。

这是一种站在巨人肩人的作法,最早的C++编程语言也是这样的实现方法,只不过那时候叫Cfront程序,Cfront程序的作用是将C++代码转换成C语言代码,类似于一个文本处理器,然后再调用C语言编译器,将C源码编译成汇编代码,然后再调用汇编器将汇编代码编译成机器码。

这个过程,在Windows平台上不容易操作,但是在Linux平台上很容易看到。以gcc这款c语言编译器为例,它实际上是四个小程序。
cp: c语言预处理程序,有它负责进行预处理操作。
cc: C语言编译器,它负责将C源码编译成汇编代码。
as: 汇编器,它负责将汇编代码编译成机器码,一般使用gcc test.c这样的命令编译C语言时,会生成一个a.out的程序,它实际上指的就是as ouput,即汇编器输出文件。
link: 链接器,它负责将汇编器输入的机器码和库打包成一个操作系统可以运行的可执行文件,在Linux上的可执行文件格式是ELF格式,这个格式的实现是有链接器来完成的。

7. C语言实现汇编语言代码

可以!
我就学过C语言`
能是能编辑~
但只能编辑些最简单的~
不过你还是不要小看C语言~它可是学习其他各种语言的基础!

8. 汇编和c语言如何结合的

汇编语言没有高级语言要占用较大的存储空间和较长的运行时间等缺点,它的运行速度快是高级语言所不能比拟的。可以说高级语言与汇编语言各有千秋。有时我们采用高级语言编程速度达不到要求,全部采用汇编语言编程工作量又大,此时可以采用"混合"编程,彼此相互调用,进行参数传递,共享数据结构及数据信息,是一种有效的编程方法。这种方法可以发挥各种语言的优势和特点,充分利用现有的多种实用程序、库程序等使软件的开发周期大大缩短。
1 高级语言与汇编语言的接口需要解决的问题
1、需要说明和建立调用者与被调用者间的关系被调用的过程或函数应预先说明为外部类型,如汇编子程序,应用PUBLIC说明其可被外部模块引用;调用程序则应预先说明要引用的外部模块名。
2、参数传递问题在汇编子程序之间通常采用寄存器作为参数传递的工具,汇编语言与高级语言程序间的参数传递,一般采用堆栈来传递,即调用程序将参数依次压入堆栈中,当被转调用程序后,再从堆栈中依次弹出参数作为操作数使用。为此,必须了解各种语言的堆栈结构、生成方式和入栈方式等。BASIC、FORTRAN、PASCAL等语言其参数进栈顺序是与参数在参数表中出现的顺序相同,即从右到左;而C语言则相反。
2 C语言与汇编语言的接口
2.1 C语言调用汇编子程序
●在C程序中使用关键字"ExTERn"对函数作显式说明。
●参数传递顺序是按其在参数表中出现的顺序的反序被压入堆栈中,即第一个参数最后进入堆栈,它在栈中的地址最低。
●对不同的存储模式(极小、小、紧凑、中、大和巨)要选用不同的汇编语言格式,如C程序为小模式,汇编用近过程,C程序为大模式,汇编用远过程。
●汇编程序取C的参数。远过程返回地址占四个字节,BP压入占二字节,所以第一个参数在BP+6所指向的单元。对于近过程第一个参数在BP+4所指向的单元。
●汇编程序中寄存器的保护。TuRboC允许子过程使用SI和DI存放局部变量,当寄存器变量多于二个时,多余部分会自动转到堆栈中存储。因此,汇编过程的格式为:
PUSH BP
MOV BP,SP
PUSH DI
PUSH SI�
……….
语 句�
………….
POP SI
POP DI
POP BP
RET
●返回值。每种C数据类型都有一个标准的返回位置,一般在AX中(极小、小、中模式),DX:AX(紧凑、大、巨模式),如:chaR,unSignEdchaR,Enum,ShoRTinT等,返回值位置为AX,且返回数据必须放置在RET指令之前。汇编子程序要定义为远过程,并用PUBLIC伪指令把过程名定义为公共。例
:#includE〃STdio.h〃
#includE〃STdlib.h〃
chaRMESSagE[]=〃MESSagE〃;
inTfaRREVSTR(chaRfaR STR);
Voidmain(Void)
{ REVSTR((chaRfaR )MESSagE);
printf(〃%S〃,MESSagE);
}
REVSTR.asm

PUBLIC-REVSTR-
REVSTR PROC
PUSH BP
MOVBP,SP
PUSH DS
PUSH SI
PUSH DI

POP SI
POP AX
MOV DS,AX
POP BP
MOV AX,CX
RET
REVSTR ENDP
END
2.2 C语言嵌入汇编
在C程序中允许直接编写汇编语言代码,这称作嵌入汇编。C程序中嵌入汇编后可以无分号(C语言的语句以分号结束,汇编语句是C语言中唯一以换行结束的语句),以关键词ASM张一个嵌入汇编指令,如需多个ASM语句,可以将它们放在花括号内。如,
ASMMOVAX,DX/ 注释 /
ASM
PUSHAX}/ 注释 /
C语言允许嵌入四类汇编命令:一般指令、串指令、跳转指令、数据分配和定义指令,嵌入汇编比调用汇编子程序更方便、灵活、功能也更强。但嵌入汇编不是一个完整的汇编程序,所以许多错误不能马上检查出来。
3 结 束 语
采用两种或两种以上的编程语言组合编程,彼此相互调用,进行参数传递,是一种有效的程序设计方法。这种方法可以充分发挥各种语言的优势,充分利用现有的实用程序,是当前程序接口技术的一个重要研究和应用领域

9. c语言中如何调用汇编程序

汇编语言的基本格式为: PUBLIC _FOUND _TEXT SEGMENT BYTE PUBLIC 'CODE'ASSUME CS: _TEXT _FOUND PROC NEARPUSH BPMOV BP,SPMOV CX,[BP+4]DEC CXMOV SI,[BP+10]LODSWMOV DX,1 MOV BX,0 COMP: CMP AX,[SI]JA BIGGERMOV AX,[SI]MOV BX,DXBIGGER: INC SIINC SIINC DXLOOP COMPMOV DI,[BP+6] MOV [DI],AX MOV DI,[BP+8] MOV [DI],BXPOP BPRET_FOUND ENDP_TEXT ENDSEND为了看得更清楚,我们把代码去掉,留下基本框架: PUBLIC _FOUND _TEXT SEGMENT BYTE PUBLIC 'CODE'ASSUME CS: _TEXT _FOUND PROC NEARPUSH BPMOV BP,SP ......... ;从这里开始加入汇编代码 POP BPRET_FOUND ENDP_TEXT ENDSEND这是在samll(小模式)下的汇编语言接口框架,在加入代码处,写上你所要完成一定功能的汇编代码,就成为一个可供TC调用的汇编模块。 可以看出,代码段是以带下划线的标识符开头的。 代码段的标识为_TEXT,由C程序中调用的函数found在这里也是以下划线标出:_FOUND。 下面是代码段的组成: _TEXT SEGMENT BYTE PUBLIC 'CODE' _TEXT ENDS下面是函数的组成: _FOUND PROC NEAR _FOUND ENDP 在small(小模式下,只要按照以上的格式书写汇编代码,就一定能成功地被C程序调用。 这个格式是TC编译程序所定好了的,如果不按照这个格式书写汇编代码,调用就不会成功。

10. C语言汇编

从最基础的给你说吧
通俗的说 机器语言 就是电路中 能被电路识别处理的 逻辑电平(电路中相对的高电平和低电平)的 序列
最早人们是要用数字1和0的序列代表它以便记忆和使用,后来又缩减成16进制数方便机翼和使用
但。。。。这的确是很让人头疼的事,那么一长串的数字谁看都头疼
于是人们把各个机器语言的数字序列用一句简短或缩写的英文代替(现在有中文汇编,可以还不是完全我们自己的,仅仅是翻译吧)
这样书写的程序就更方便阅读了。早期这样写成的程序是要手工编译成16进制或二进制码然后再手动或通过打孔纸带输入到计算机当中的,现在已经可以由计算机完成
再后来,随着计算机功能的强大,程序也越来越庞大,使用汇编仍旧是很繁杂的事,于是出现了C语言,C语言的特点是编订一套C语言的编译系统,由这个系统把人们书写的C语言按照预定规则编译成汇编和机器语言,以便使用
具体的编译过程就比较复杂了,因为很多C语言的就单句涉及到逻辑判断处理、内存处理等诸多事项,所以简单的几句C语言程序,编译成汇编可能长度要长很多,也正是因为如此,高级语言使用起来才比基础语言省事
但凡是存在的都有其合理性嘛,汇编也一样,之所以没有淘汰就是因为汇编是机器语言的影像,它可以直接管理和使用计算机的任何资源,在一些对硬件资源、时序要求控制精细的方面就必须使用汇编了
由于现在计算机编译软件的发达,汇编其实使用好了也很方便,尤其对中小规模系统来说。这也是汇编在单片机系统大量应用的原因

纯个人理解,言词不规范之处各位大虾指正

热点内容
抽盒机算法 发布:2025-01-15 18:31:07 浏览:252
万网云服务器云虚拟主机 发布:2025-01-15 18:20:58 浏览:946
手动安装交叉编译链 发布:2025-01-15 18:15:30 浏览:565
java调用clinux 发布:2025-01-15 18:13:02 浏览:294
如何给孩子配置一份保险 发布:2025-01-15 18:07:53 浏览:457
思科模拟器ftp配置 发布:2025-01-15 18:01:53 浏览:198
wd软件如何修改密码 发布:2025-01-15 17:59:57 浏览:716
公共代理服务器地址 发布:2025-01-15 17:59:53 浏览:819
android文件图片 发布:2025-01-15 17:39:44 浏览:207
linux的路径怎么写 发布:2025-01-15 17:18:49 浏览:185