當前位置:首頁 » 編程語言 » c語言與匯編語言的轉換

c語言與匯編語言的轉換

發布時間: 2024-12-16 09:44:23

⑴ keil怎樣把c語言轉換成單片機匯編語言

首先在keil里,設置選項時,在列表選項中的匯編代碼一項打勾。見下圖

然後編譯,編譯後,在工程的同一個文件夾下有一個.LST文件,打開就看到了匯編代碼,不過,需要自己進行整理,否則,是不能直接作為匯編程序的。
下面是一個例子:這是一個主程序的匯編代碼,格式就是這樣的。
; FUNCTION main (BEGIN)
; SOURCE LINE # 16
;---- Variable 'k' assigned to Register 'R4' ----
; SOURCE LINE # 17
; SOURCE LINE # 19
0000 D2B2 SETB light
0002 ?C0007:
; SOURCE LINE # 20
; SOURCE LINE # 21
; SOURCE LINE # 23
0002 7F05 MOV R7,#05H
0004 120000 R LCALL _delayms
; SOURCE LINE # 25
0007 300008 R JNB blink,?C0009
; SOURCE LINE # 26
; SOURCE LINE # 27
000A 0C INC R4
; SOURCE LINE # 28
000B BC2804 CJNE R4,#028H,?C0009
; SOURCE LINE # 29
; SOURCE LINE # 30
000E B2B2 CPL light
; SOURCE LINE # 31
0010 E4 CLR A
0011 FC MOV R4,A
; SOURCE LINE # 32
; SOURCE LINE # 33
0012 ?C0009:
; SOURCE LINE # 34
0012 20B7ED JB k0,?C0007
; SOURCE LINE # 35
C51 COMPILER V7.00 LIGHT1 09/14/2015 12:54:15 PAGE 3

; SOURCE LINE # 36
0015 B200 R CPL blink
; SOURCE LINE # 37
0017 200004 R JB blink,?C0012
001A D2B2 SETB light
001C 8002 SJMP ?C0014
001E ?C0012:
; SOURCE LINE # 38
001E E4 CLR A
001F FC MOV R4,A
0020 ?C0014:
; SOURCE LINE # 39
0020 20B7DF JB k0,?C0007
0023 80FB SJMP ?C0014
; FUNCTION main (END)

⑵ 51單片機,有了c語言的程序,如何把它變換成匯編語言

可以實現,但轉換的結果不是太理想,跟反匯編差不多,需要自己去整理,其轉移的標號需要自己重新定義,轉換結果里是用行地址替代的

⑶ 實踐,C語言是怎麼變成匯編的

c語言未必會經歷匯編語言這一環節,准確的說,c語言經歷編譯器(必須),鏈接器(某種程度上非必須)的處理,成為可執行代碼(一般是二進制代碼)。
而匯編也許是目前多數編譯器提供的中間環節(vc,vs都提供在調試運行下使用反匯編的功能),因為對於匯編語言來說,進一步編譯成機器語言的難度很低,只需查找有限的匯編指令對應的編碼,如MOV,ADD等,具體編碼與機器有關。
而你說的c語言變成匯編這一過程,正是編譯器的核心工作,也是最為困難的。需要對你的程序(本質上是一個超長的字元串)做分割,詞法分析,語法分析,最後翻譯成匯編。

⑷ 如何將c語言程序轉成匯編語言程序。

如果是VC則在編譯器命令行參數再加 /FA 則會生成匯編代碼。如果參數是 /FAs 則會同時將源碼和匯編代碼。
/FA 程序集代碼;.asm
/FAc 機器碼和程序集代碼;.cod
/FAs 源代碼和程序集代碼;.asm
/FAcs 機器碼、源代碼和程序集碼;.cod

/Fa的用法

/Fa 為編譯中的每個源代碼文件創建一個源文件.asm。
/Fa文件名 將文件名.asm 放到當前目錄中。僅在編譯單個源代碼文件時有效。
/Fa文件名.擴展名 將文件名.擴展名放到當前目錄中。僅在編譯單個源代碼文件時有效。
/Fa目錄\ 為編譯中的每個源代碼文件創建一個源文件.asm,並將其放到指定目錄中。請注意必須有後綴反斜杠。只允許使用當前磁碟上的路徑。
/Fa目錄\文件名 將文件名.asm 放到指定目錄中。僅在編譯單個源代碼文件時有效。
/Fa目錄\文件名.擴展名 將文件名.擴展名放到指定目錄中。僅在編譯單個源代碼文件時有效。

如果你是用gcc 或 g++編譯器,如dev c++則加入命令行參數 -S 即可

⑸ 怎樣將匯編語言轉換為C語言

目前的反編譯軟體,只存在將機器指令碼反匯編成匯編代碼,不存在將匯編代碼反編譯成C語言的,因為匯編代碼是低級語言,最接近於機器碼(具體可查看不同硬體平台的技術資料),每條匯編指令都對應一個固定的機器碼,這樣進行反匯編是可行的,而C語言屬於高級語言,編譯器沒有能力將匯編語言翻譯成C或更高級的語言。

熱點內容
如何查找安卓文件 發布:2024-12-16 12:15:23 瀏覽:562
突破畫線源碼 發布:2024-12-16 12:09:55 瀏覽:845
無線wifi如何加密 發布:2024-12-16 12:09:13 瀏覽:610
優惠網源碼 發布:2024-12-16 11:48:19 瀏覽:538
壓縮黑火葯 發布:2024-12-16 11:43:13 瀏覽:903
小學編程班 發布:2024-12-16 11:38:18 瀏覽:458
全新交換機不會配置怎麼辦 發布:2024-12-16 11:15:45 瀏覽:707
流浪俠客腳本 發布:2024-12-16 10:44:03 瀏覽:140
ie存儲密碼 發布:2024-12-16 10:43:13 瀏覽:116
國內伺服器可以廣播ip嗎 發布:2024-12-16 10:38:14 瀏覽:351