當前位置:首頁 » 編程語言 » C語言轉匯編代碼

C語言轉匯編代碼

發布時間: 2022-12-13 23:57:25

c語言轉換成匯編語言

如下即可:

ORG 0000H
LJMP START
ORG 0003H
LJMP X0_INT
ORG 0013H
LJMP X1_INT
ORG 0030H
START:
SETB IT0
SETB IT1
SETB EX0
SETB EX1
SETB EA
;----------------------
MOV A, #0FEH
LOOP:
MOV P1, A
CALL DELAY
RL A
SJMP LOOP
;----------------------
X0_INT:
PUSH ACC
PUSH PSW
SETB RS0
MOV A, #0F0H
MOV R2, #6
X0_1:
MOV P1, A
CALL DELAY
CPL A
DJNZ R2, X0_1
POP PSW
POP ACC
RETI
;----------------------
X1_INT:
PUSH ACC
PUSH PSW
SETB RS1
MOV A, #0AAH
MOV R2, #6
X1_1:
MOV P1, A
CALL DELAY
CPL A
DJNZ R2, X1_1
POP PSW
POP ACC
RETI
;----------------------
DELAY:
MOV R5, #3
DJNZ R7, $
DJNZ R6, $ - 2
DJNZ R5, $ - 4
RET
;----------------------
END

㈡ 如何將C語言代碼轉換為對應的匯編代碼

VC6.0下有兩種方法:
(1)增加參數/FA:Project->Setting...,C/C++選項卡中的Project Options中增加參數/FA,編譯後debug目錄中將會增加對應源文件的匯編文件(*.asm)。
(2)如果想查看C語句對應的匯編代碼的話,可以這樣:F11單步調試,在debug工具欄中選擇「disassembly」即可。每行C代碼下面就是對應的匯編代碼。
如果debug工具欄不見了,可在VC上方空白菜單處右鍵,選擇「debug」即可彈出debug工具欄。

例如:
C代碼程序:
int main()
{
int a = 3;
int b = 4;
int c = a + b;
printf("c=%d/n", c);

return 0;
}

對應的匯編代碼程序(部分)如下:
5: int a = 3;
00401028 mov dword ptr [ebp-4],3
6: int b = 4;
0040102F mov dword ptr [ebp-8],4
7: int c = a + b;
00401036 mov eax,dword ptr [ebp-4]
00401039 add eax,dword ptr [ebp-8]
0040103C mov dword ptr [ebp-0Ch],eax

gcc下編譯加參數-S,如gcc a.c -S,編譯後會自動生成匯編文件a.asm。

㈢ 如何把一段C語言轉換成匯編語言

1: #define N 30
2: #include<stdio.h>
3: void main()
4: {
00401010 push ebp
00401011 mov ebp,esp
00401013 sub esp,6Ch
00401016 push ebx
00401017 push esi
00401018 push edi
00401019 lea edi,[ebp-6Ch]
0040101C mov ecx,1Bh
00401021 mov eax,0CCCCCCCCh
00401026 rep stos dword ptr [edi]
5: struct student
6: {
7: int xuehao;
8: char name[10];
9: int age;
10: int score[3];
11:
12: }stu;
13: int i, j, temp=0;
00401028 mov dword ptr [ebp-2Ch],0
14: for(i=0; i<N; i++)
0040102F mov dword ptr [ebp-24h],0
00401036 jmp main+31h (00401041)
00401038 mov eax,dword ptr [ebp-24h]
0040103B add eax,1
0040103E mov dword ptr [ebp-24h],eax
00401041 cmp dword ptr [ebp-24h],1Eh
00401045 jge main+0D4h (004010e4)
15: {
16: scanf("%d %s %d", &stu.xuehao, &stu.name, &stu.age);
0040104B lea ecx,[ebp-10h]
0040104E push ecx
0040104F lea edx,[ebp-1Ch]
00401052 push edx
00401053 lea eax,[ebp-20h]
00401056 push eax
00401057 push offset string "%d %s %d" (00420f94)
0040105C call scanf (0040d9e0)
00401061 add esp,10h
17: printf("%d %s %d\n", stu.xuehao, stu.name, stu.age);
00401064 mov ecx,dword ptr [ebp-10h]
00401067 push ecx
00401068 lea edx,[ebp-1Ch]
0040106B push edx
0040106C mov eax,dword ptr [ebp-20h]
0040106F push eax
00401070 push offset string "%d %s %d\n" (00420f88)
00401075 call printf (00401190)
0040107A add esp,10h
18: for(j =0; j<3; j++)
0040107D mov dword ptr [ebp-28h],0
00401084 jmp main+7Fh (0040108f)
00401086 mov ecx,dword ptr [ebp-28h]
00401089 add ecx,1
0040108C mov dword ptr [ebp-28h],ecx
0040108F cmp dword ptr [ebp-28h],3
00401093 jge main+0BEh (004010ce)
19: {
20:
21: scanf("%d", &stu.score[j]);
00401095 mov edx,dword ptr [ebp-28h]
00401098 lea eax,[ebp+edx*4-0Ch]
0040109C push eax
0040109D push offset string "%d" (0042001c)
004010A2 call scanf (0040d9e0)
004010A7 add esp,8
22: printf("%d",stu.score[j]);
004010AA mov ecx,dword ptr [ebp-28h]
004010AD mov edx,dword ptr [ebp+ecx*4-0Ch]
004010B1 push edx
004010B2 push offset string "%d" (0042001c)
004010B7 call printf (00401190)
004010BC add esp,8
23: temp = temp + stu.score[j];
004010BF mov eax,dword ptr [ebp-28h]
004010C2 mov ecx,dword ptr [ebp-2Ch]
004010C5 add ecx,dword ptr [ebp+eax*4-0Ch]
004010C9 mov dword ptr [ebp-2Ch],ecx
24: }
004010CC jmp main+76h (00401086)
25: printf("total score = %d\n", temp);
004010CE mov edx,dword ptr [ebp-2Ch]
004010D1 push edx
004010D2 push offset string "total score = %d\n" (00420f74)
004010D7 call printf (00401190)
004010DC add esp,8
26: }
004010DF jmp main+28h (00401038)
27: }
004010E4 pop edi
004010E5 pop esi
004010E6 pop ebx
004010E7 add esp,6Ch
004010EA cmp ebp,esp
004010EC call __chkesp (00401210)
004010F1 mov esp,ebp
004010F3 pop ebp
004010F4 ret

我不曉得是不是這樣,我不懂匯編....

㈣ C語言轉匯編

1、完全手工根據C語言的流程和目的,改編成匯編語言,這樣做工作量很大
2、利用模擬軟體,在模擬環境下,是有相應的匯編代碼的,這樣做工作量相對較小,但可讀性較差。

㈤ 如何將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 即可

㈥ keil怎樣把C語言轉換成單片機匯編語言

1、打開Keil,新建一個51工程,同時新建一個main.c文件,並加入到工程源代碼當中。

㈦ C語言怎樣轉換成匯編語言

keilc裡面,如果單片機c語言編譯完成後,可以進入debug模擬模式,那麼打開disassembly
windows窗口,就可以看到c及對應的匯編。

㈧ 怎麼將C語言轉成匯編代碼51單片機的

keil有這個功能,你單擊模擬運行,然後應該會彈出一個匯編語言的窗口,那裡面就是你這個程序的匯編版本。

㈨ C語言轉換成匯編語言

win-tc
可以將C代碼編譯為匯編代碼。
在「運行」,「編譯配置」里選取中編譯目標為匯編文件。
另外,將其它語言編譯為匯編代碼不叫「
反匯編
」。

㈩ keil C51怎麼把C語言轉成匯編

C文件上點右鍵,點「Option
for
...」,然後勾選右側的「Generate
Assembler
SRC
File」,就會生成對應文件名擴展名為.SRC的匯編文件了。
在調試界面點那個放大鏡圖標,或者菜單中點「View」然後點「Disassembly
Windows」,就可用看到匯編代碼了,這時按F10/F11單步執行的是每一句對應的匯編語句,而不是C語句。
點擊工具欄上一個紅色的"D",進入調試狀態,再把滑鼠點到c代碼處,右鍵查看匯編代碼,就可以看到所以c編譯後的匯編代碼了。

熱點內容
如何申請i7伺服器地址 發布:2025-01-23 04:42:15 瀏覽:845
瀏覽器內核源碼 發布:2025-01-23 04:41:34 瀏覽:659
精英版繽智少了些什麼配置 發布:2025-01-23 04:41:30 瀏覽:356
編寫c編譯器 發布:2025-01-23 04:41:30 瀏覽:968
可以解壓war包的編譯軟體 發布:2025-01-23 04:38:28 瀏覽:986
vivo手機有編譯功能嗎 發布:2025-01-23 04:31:57 瀏覽:568
自己架設雲手機伺服器 發布:2025-01-23 04:31:17 瀏覽:949
gcc命令行編譯的方法 發布:2025-01-23 04:30:31 瀏覽:397
我的雲伺服器地址近期價格 發布:2025-01-23 04:29:05 瀏覽:625
js預覽上傳圖片 發布:2025-01-23 04:28:54 瀏覽:407