32位陣列求和函式,esi 儲存陣列偏移,ecx 儲存陣列長度,同時用於 loop 計數, eax 返回和。
.386
.model flat, stdcall
.stack 4096
exitprocess proto, dwexitcode:dword
.data
array dword 10000h, 20000h, 30000h, 40000h, 50000h
thesum dword ?
.code
main proc
mov esi, offset array ;// esi 作為引數儲存陣列位址
mov ecx, lengthof array ;// ecx 是陣列長度引數
call arraysum
mov thesum, eax
invoke exitprocess, 0
main endp
arraysum proc
push esi ;// 如果不希望函式修改暫存器,則用棧儲存,返回時恢復
push ecx
mov eax, 0 ;// sum = 0
l1:add eax, [esi]
add esi, type dword
loop l1
pop ecx
pop esi
retarraysum endp
end main
函式中使用push pop 臨時儲存暫存器的值,並在ret前恢復。也可以用uses偽指令代替,讓彙編器自動新增push pop。
Win32彙編基礎
常用指令 mov 目標運算元,源運算元 mov eax,0x0 進行資料傳遞 movzx mov zero x 以0填充高位,用法同上,push poppushad 所有暫存器壓棧 8個 popad 所有暫存器出棧 8個 lea 取位址指令,類似c語言中的 call 呼叫函式指令 add 加 sub...
Win32彙編 實數
386 選擇的處理器 model flat,stdcall option casemap none 指明識別符號大小寫敏感 include kernel32.inc 要引用的標頭檔案 includelib kernel32.lib 要引用的庫檔案 includelib msvcrt.lib 引用c庫...
開始學習win32彙編
前段時間對於csdn的部落格系統徹底失望,在我現在寫的東西都還不知道能不能正常發出去,鬱悶,加上過年有這麼久沒有來了。這段時間開始學習彙編,說到彙編,大學開過兩門相關課程,微機原理和微控制器都是學這方面的,不過那都是8086,51級別的彙編,感覺根本跟不上時代,那時候學的還不錯 現在想學習學習win...