2013-11-20 216 views
-1

我已經創建的變量:彙編語言 - 乘

Y sword 8 
Z sword 20 
T sword 68 
B sword ? 

而且我必須評估以下,B = 4T - (8 + Z)+ Y

我真的不熟悉如何做這個。有人能幫我理解嗎?

+6

你在寫什麼CPU代碼? –

+0

我不確定你的意思。我只是試圖在使用Visual Studio的32位計算機上執行此操作。 –

+2

然後你最有可能瞄準x86。 –

回答

1

假設劍簽署的16位數字:

movsx eax,sword ptr T 
movsx ebx,sword ptr Y 
shl eax,2   ; faster than imul 
movsx edx,sword Z 
add eax,ebx 
add edx,8 
sub eax,edx 
mov sword ptr B,ax 

然後優化了一點:

movsx eax,sword ptr T 
movsx ebx,sword ptr Y 
movsx edx,sword Z 
lea eax,[ebx+eax*4] ; less code than shr 
add edx,8 
sub eax,edx 
mov sword ptr B,ax  
+0

我真的不明白你做了什麼。我是彙編語言新手,剛開始學習它。我給了一個任務來做這些計算: A = Z-Y + T B = 4T-(8 + Z)+ Y C1 = 4(T-8)+ Z + Y D = mod(T ,8) E = Y^2 + Z –

+3

@SameerAnand:堆棧溢出不是開始學習的好地方。 – Artur

+0

我將您在問題中給出的表達式轉換成x86彙編指令,編譯器會在編譯時生成(差)編譯器。 Visual C++可以爲您生成彙編程序,但如果這是您的第一次嘗試,您應該先閱讀彙編語言。 –

-1

一個簡單的方法來做到這一點的同時仍然學習大會的重要概念是用C/C++編寫程序並讓你的編譯器輸出程序集。從那裏,研究語法,看看它是否有任何意義。這實際上是我學習x86彙編的方式...