我們在開始寫彙編**的時候,一般是先寫出c語言的實現,然後再翻譯成彙編的實現。
在這個過程中,我們還可以利用ide的反彙編功能檢視編譯器是如何幫我們生成彙編**的,以及思考編譯器為什麼這樣做,搞懂了這些,不論是對我們的c語言還是組合語言都有很大的提公升。
#include int array = ;
int main()
printf("the sum is : %d\n", sum);
return 0;
}
彙編中暫存器對應c中變數關係如下:
eax==sum
esi==p
ecx==陣列元素個數==迴圈次數
includelib kernel32.lib
includelib ucrt.lib
includelib legacy_stdio_definitions.lib
.386
.model flat,stdcall
exitprocess proto,
dwexitcode:dword
printf proto c : dword,:vararg
scanf proto c : dword,:vararg
.data
format byte 'the sum is : %d',10,0;這裡的10代表換行,0代表字串以0結尾
array dword 0h,1h,2h,3h,4h,5h,6h,7h,8h,9h;定義一維陣列,並初始化賦值
.code
main proc
mov ecx,lengthof array;將陣列中元素個數放入ecx暫存器中
xor eax,eax;將eax暫存器清零,相當於int sum = 0
mov esi,offset array;將陣列的位址存入esi暫存器中,相當於int* p = array
again:
add eax,[esi];相當於sum = sum + *p
add esi,4;esi = esi + 4,相當於p++
loop again;ecx = ecx - 1,用於迴圈計數
invoke printf,offset format,eax;輸出計算結果,相當於printf("%d\n",sum)
匯程式設計序 實現一維陣列求和(相對定址)
我們在開始寫彙編 的時候,一般是先寫出c語言的實現,然後再翻譯成彙編的實現。在這個過程中,我們還可以利用ide的反彙編功能檢視編譯器是如何幫我們生成彙編 的,以及思考編譯器為什麼這樣做,搞懂了這些,不論是對我們的c語言還是組合語言都有很大的提公升。include int array int main...
匯程式設計序 實現1 100偶數求和
我們在開始寫彙編 的時候,一般是先寫出c語言的實現,然後再翻譯成彙編的實現。在這個過程中,我們還可以利用ide的反彙編功能檢視編譯器是如何幫我們生成彙編 的,以及思考編譯器為什麼這樣做,搞懂了這些,不論是對我們的c語言還是組合語言都有很大的提公升。include int main printf th...
用匯程式設計序實現電子時鐘
基本思想 當需要編寫程式實現較複雜的功能時,整個程式就如同乙個裝配體 總成 而子程式就如同裝配體中的零件,子程式與主程式的介面就如同機械中的連線件將不同零件裝配起來。使用子程式能使程式結構更清晰,且邏輯不易發生錯誤。實現電子時鐘需要的子程式 1.顯示子程式disp 2.顯示延時子程式dey1 3.中...