2013-08-04 34 views
-1

Solved.Thanks的幫助,在網上看到一個很好的例子......但在谷歌搜索引擎~~後面幾頁程序集指令和C++相當於?

我被谷歌搜索,但我似乎無法閱讀組裝一些在線教程找出它們在顯示AND指令時的含義。

有人可以向我解釋它的用法嗎? 什麼是它的等價的C++操作符?

另外我不明白什麼是運算符「!」在C++中用於。

在此先感謝。

+1

邏輯或按位? – Borgleader

+0

事情是我不明白的技術術語,因爲我發現他們比我想要了解的例子更困惑 – Imaginarys

+0

如果它比我的答案更清晰,請張貼它。 –

回答

4

按位和,意味着您將一個操作數的每個位與另一個操作數的相應位進行比較,如果結果都爲1,則將結果設置爲1,否則將結果設置爲1。因此,考慮這兩個字節AND關係結合在一起:

00000011 
& 00000101 
---------- 
    00000001 

只有最低級位在結果集中,因爲只有該位位置是操作數都爲1

在英特爾x86彙編語言你使用 「與」 運算符來實現這一點:

mov eax, [op1] ; eax is a register 
and eax, [op2] ; now eax is the bitwise 'and' of the two. 
mov [result], eax 

在C++

unsigned result = op1 & op2; 

邏輯和工作方式不同。我們不使用每一位,而是使用一個約定,如果值爲零,則值爲「假」,如果不是,則爲「真」。這是高級語言的慣例,它不是彙編語言的概念。所以在x86中我們有:

mov eax, [op1] 
    test eax, eax ; Test if eax is zero by anding it with itself. 
    jz  isfalse ; just to isfalse if the first operand is false 

    mov eax, [op2] 
    test eax, eax 
    jnz istrue 

isfalse: 
    mov [result], 0 
    jmp done 
istrue: 
    mov [result], 1 

done: 
    ... 

這裏這段代碼使用約定,0是假的,1是真的。

的C++當量是:

boolean result = op1 && op2;