❶ c語言如何轉換成匯編語言程序
KEILC裡面,如果單片機C語言編譯完成後,可以進入DEBUG模擬模式,那麼打開disassembly windows窗口,就可以看到C及對應的匯編。
❷ C語言寫的程序 怎麼反匯編成匯編語言
在keilc中,單片機的C語言程序可以再DEBUG模式中得到對應的匯編程序。步驟如下:
1、建立工程,導入C文件代碼,編譯生成hex文件。
3、點擊View--Disassembly Window調出匯編窗口,如上圖。
通過以上步驟就可以看到與C對應的匯編程序了。
❸ 匯編語言是怎麼調用c語言的程序的
一、 參數傳遞的基本規則(ATPCS(ARM—Thumb Procere Call Standard))
1、 參數傳遞
二、匯編程序、C程序相互調用舉例
1、 C程序調用匯編程序
匯編程序的設計要遵守ATPCS(ARM—Thumb Procere Call Standard),保證程序調用時參數的正確傳遞。在匯編程序中使用EXPORT 偽操作聲明本程序,使得本程序可以被別的程序調用。在C程序使用extern聲明該匯編程序。
下面是一個C程序調用匯編程序的例子。其中匯編程序str實現字元串復制功能,C程序調用str完成字元串復制的工作。
//C程序
#include <stdio.h>
extern void str(char *d, const char *s);
int main( )
{
const char *srcstr=」First string-source」;
char dststr[ ]=」Second string-destination」;
printf(「Before ing:\n」);
printf(「%s\n %s\n」, srcstr,dststr);
str(dststr,srcstr);
printf(「After ing:\n」);
printf(「%s\n %s\n 「,srcstr,dststr);
while(1) ;
}
;匯編程序
AREA S, CODE, READONLY
EXPORT str
Str
LDRB R2, [R1], #1
STRB R2, [R0], #1
CMPR2,#0
BNE Str
MOV PC, LR
END
2、 匯編程序調用C程序
匯編程序的設計要遵守ATPCS,保證程序調用時參數的正確傳遞。在匯編程序中使用IMPORT偽操作聲明將要調用的C程序。下面是一個匯編程序調用C程序的例子。其中在匯編程序中設置好各參數的值。本例中有6個參數,分別使用寄存器R0存放第1個參數,
R1存放第2個參數, R2存放第3個參數, R3存放第4個參數, 第5個、第6個參數利用數據棧傳送。由於利用數據棧傳遞參數,在程序調用結束後要調整數據棧指針。
//C程序g( )返回6個參數的和
int g( int a, int b, int c, int d, int e, int f )
{
printf(「e=%d\n」, e);
printf(「f=%d\n」, f);
return (a+b+c+d+e+f);
}
; 匯編程序調用C程序 g( ) 計算6個整數 i, 2*i, 3*i, 4*i, 5*i, 6*i的和
EXPORT f
AREA f ,CODE, READONLY
IMPORT g
MOV R0, #1
ADD R1, R0, R0
ADD R2, R1, R0
ADD R3, R2, R0
ADD R4, R3, R0
ADD R5, R4, R0
STR R4, [SP, #-4]!
STR R5, [SP, #-4]!
BL g
ADD SP, SP, #4
ADD SP, SP, #4
STOP B STOP
END
❹ 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編譯程序所定好了的,如果不按照這個格式書寫匯編代碼,調用就不會成功。
❺ 如何將C語言程序轉匯編語言
keilc裡面,將C程序編譯完成,進入到DEBUG模式,打開disassembly window窗口,就可以看到C及匯編程序代碼了。
❻ 匯編語言怎麼實現c語言
C語言可以內嵌匯編語言,匯編不能寫C語言。
❼ C語言怎麼轉換匯編程序
在單片機中,C語言轉換成匯編語言有一個小竅門,這要藉助於KEILC這個編譯軟體,步驟如下:
1、運行KEIL,建立工程,導入C語言。
❽ 怎麼學習C語言和匯編
1:如果你能夠熟練的使用Windows的話,你就可以開始你的程序生涯了!
2:首先從C語言開始。有的朋友可能認為C語言太難了,應該從VB開始。雖然,對於一個初學者來說,用一些控制項堆砌成一個小軟體,是有一些成就感,但是,基礎才是最重要的!C語言對於數據類型的描敘,遠比VB裡面說的更為全面,清楚,明白,而這些卻是編程中的根本!
3:學C語言,從數據類型,基本表達式,再到條件語句,循環語句,然後學習函數,再加上一些簡單的數組知識,就可以了!一句話,到現在為止,你只要理解結構化程序設計的思想也就夠了!
4:有了以上的基礎,就要開始學匯編了。匯編開始的時候是很難,那些各種各樣的寄存器,分段的內存地址,是很難理解,可是這些知識理解了以後,後面的內容就簡單了,學習8086的那些指令,再加上一些偽操作,還有DOS和BIOS中斷的調用,就可以看懂書上的匯編程序了。(著重是理解演算法,對於後面的那些匯編的應用有興趣的可以看一下!)到此,你應該會對計算機的理解更深一層!
5:有了匯編的基礎,再來學習C語言中的精華部分----指針,可謂如魚得水了。現在你要對C語言全全面面的學一遍了,譚版的教材要從頭到尾認認真真的看兩遍以上。
6:學完以上的內容,有必要研究一下數據結構了,線性表,堆棧,隊列,樹,圖,二叉樹,等等,都要滾瓜爛熟!(最好是清華嚴蔚敏老師的那本教材)
7:請時刻記住:浮躁是學習編程的大忌!
8:現在,你應該學習一些資料庫的知識,還有一些常用的演算法了!
9:如果以上的知識你都學精通的話,就可以開始C++的課程了,找本C++上手的書,用一個星期的時間大概了解一下C++,然後找一本VC上手的書,再花一個星期的時間學習VC的界面和用法,就可以做一些簡單的應用了!
10:要想學好VC,沒有扎實的C++知識是不行的,以下書籍是VC程序員必須翻的爛熟的:C++Primer,Effective C++,Thinking in C++,More Effective C++
深入淺出MFC。
11:深刻理解C++面向對象的思想!
12:編程的時候,出錯是難免的,所以,MSDN一定要熟練使用;好的代碼風格會使調試的時候,更加簡單的查錯,所以,一定要養成良好的編程風格!
13:如果你嚴格的走好了以上的每一步,你才踏上了編程的門檻,可以混口飯吃了!
至於在以後,編譯原理,操作系統,還有軟體工程等等基礎知識,是必不可少的!
14:如果現在再來學習JAVA,C#等別的語言的話,應該是觸類旁通,拿來就用了,
到此,你才可以稱得上是一個高手!
❾ keil怎樣把C語言轉換成單片機匯編語言
1、打開Keil,新建一個51工程,同時新建一個main.c文件,並加入到工程源代碼當中。
❿ c語言是用什麼語言編寫的匯編嗎
C語言源自Ken Thompson發明的B語言,而 B語言則源自BCPL語言。
1967年,劍橋大學的Martin Richards對CPL語言進行了簡化,於是產生了BCPL(Basic Combined Programming Language)語言。
1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
(10)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系列