Assembly:Summering

Fra CodeWiki

Gå til: navigasjon, søk

Som nevnt varierer koden avhengig av hva du programmerer for, vi viser her to eksempler:

Visual C++ 2008

Vi har følgende C++ kode:

int t1 = 2;
int t2 = 3;
int t3 = 8;
 
int sum = t1 + t2 + t3;
 
return sum;

Tilsvarende Assemblykode blir dermed:

mov         dword ptr [ebp-8],2 
mov         dword ptr [ebp-14h],3 
mov         dword ptr [ebp-20h],8 
 
mov         eax,dword ptr [ebp-8] 
add         eax,dword ptr [ebp-14h] 
add         eax,dword ptr [ebp-20h]
mov         dword ptr [ebp-2Ch],eax

Registerne EBP og EAX kan du lese mer om Her

PIC18F4520

Vi har følgende C kode:

void main(){
 
int8 tall1, sum;
tall1=3;
sum = tall1 + 4;
}

Denne kode skal vi "konvertere" til assembly. Koden ovenfor definerer to variabler som tall, og setter et tall som 3, og setter det andre tallet som det første tallet + 4. I Assembly får vi følgende kode (kommentarene i koden forklarer hva som skjer)

processor PIC18F452 ;definerer hvilken mikroprosessor vi bruker
radix DEC ;Sier at det desimale tallsystemet skal benyttes ved mindre annet er oppgitt
 
tall1 EQU 0x00 ;Definerer tall1 som et tall, som skal lagres i "minneskuff" 0
sum EQU 0x01 ;Samme som ovenfor, bare at nå lagrer vi variabelen sum i lager plass 1
 
org 0x0
GOTO main 
main
 
MOVLW3 
MOVWF tall1,0
 
MOVLW 4
ADDWF tall1,W,0
MOVWF sum,0
 
m001 BRA m001
 
END
Personlige verktøy
dataprogrammering
generelt