C語言之 判斷語句基礎與if語句反彙編

2022-01-10 02:52:44 字數 3455 閱讀 1137

判斷語句有哪些?

1、if

用法1:

if (條件)

當條件成立,也就是為true時,執行{}中的**

用法2:

if(條件)

else

如上,當條件不成立的時候執行else語句裡面的**

用法3:

if(條件)

else if

else

例如

2、switch

switch (表示式)

switch要求:

1、case後面必須是常量表示式

2、case後常量表示式的值不能一樣

3、switch後面表示式必須為整數

3、?:運算子

到此,條件判斷語句就差不多了

1、案例一

mov eax, dword ptr[ebp + 8] 分析:cmp指令 影響標誌位

cmp eax, dword ptr[ebp + 0ch] jle :小於或者等於就跳轉到00401059

jle 00401059

2、案例二

mov eax, dword ptr[ebp + 8] 分析:cmp指令 影響標誌位

cmp eax, dword ptr[ebp + 0ch] jl :小於則跳轉

jl 00401059

3、案例三

mov eax, dword ptr[ebp + 8] jge :大於或者等於則跳轉

cmp eax, dword ptr[ebp + 0ch]

jge 00401059

4、案例四

mov eax, dword ptr[ebp + 8] jg :大於則跳轉

cmp eax, dword ptr[ebp + 0ch]

jg 00401059

整體分析:

函式呼叫處**:

push 5 分析:

push 4 兩個引數

call 0040100f

add esp, 8

接下來就可以做個小練習了:

呼叫處**:

push 5

push 4

call 0040100f

add esp, 8

函式內部:

函式內部功能分析:

00401030 push ebp

00401031 mov ebp, esp 1、分析引數:

00401033 sub esp, 44h

00401036 push ebx

00401037 push esi

00401038 push edi 2、分析區域性變數

00401039 lea edi, [ebp - 44h]

0040103c mov ecx, 11h

00401041 mov eax, 0cccccccch

00401046 rep stos dword ptr[edi]

00401048 mov eax, [004225c4] 3、分析全域性變數

0040104d mov dword ptr[ebp - 4], eax

00401050 mov ecx, dword ptr[ebp + 8]

00401053 cmp ecx, dword ptr[ebp + 0ch]

00401056 jg 00401064

00401058 mov edx, dword ptr[ebp + 0ch] 4、功能分析

0040105b add edx, dword ptr[ebp - 4]

0040105e mov dword ptr[004225c4], edx

00401064 pop edi

00401065 pop esi 5、返回值分析

00401066 pop ebx

00401067 mov esp, ebp

00401069 pop ebp

0040106a ret 6、還原成c函式

00401048 mov eax, [004225c4] 把004225c4的值給eax

0040104d mov dword ptr[ebp - 4], eax 把eax的值給棧低-4的地方

00401050 mov ecx, dword ptr[ebp + 8] 把4給ecx

00401053 cmp ecx, dword ptr[ebp + 0ch] if(ecx>5)

00401058 mov edx, dword ptr[ebp + 0ch] 把5給edx

0040105b add edx, dword ptr[ebp - 4] 把edx加上eax全域性變數的值

0040105e mov dword ptr[004225c4], edx 再把eax的值給 004225c4位址上

C 判斷語句

區域性變數定義 int x 100 檢查布林條件 if x 20 else console.writeline x 的值是 x console.readline 當上面的 被編譯和執行時,它會產生下列結果 x 大於 20 x 的值是 100 3.巢狀 if else 語句 巢狀 if else 語句...

php判斷語句 PHP基礎條件判斷語句詳解

在php開發中條件判斷語句是非常常見的,條件判斷語句這也是php中特別基礎的東西,php日常開發中運用十分廣泛,那麼我們就必須得牢牢掌握了!今天我們就一起來講講php基礎條件判斷吧!很多php程式都是由一系列語句構成的。一條語句可以是乙個賦值語句,乙個函式呼叫,乙個迴圈,甚至乙個什麼也不做的 空語句...

python基礎 判斷語句 if

在程式中判斷乙個語句是否滿足規定的條件,如果滿足就執行.不滿足就執行.用if判斷 格式一 if 判斷條件 不可省略 滿足條件執行的語句 pycharm中嚴格區分空格,注意格式,四個空格,用tab eg1 a 0if a 1 判斷等於的時候用 print a 1 格式二 標準 if 判斷條件 滿足條件...