Hilfe benötigt

Gast #1309963
Lesenswert?

Georg Steiner schrieb:
>   start:   mov  R5, #10

Lade R5 (Schleifenzähler) mit dem Wert 10.

>       mov  A, #0

Lade Akkumulator mit dem Wert 0.

>       mov  R0, #10h

Lade Register R0 mit dem Wert 10.

> loop:     add  A, @R0

Addiere den Inhalt der Speicherzelle, auf die das Register R0 zeigt, zum 
Akkumulator.

>       inc   R0

Inkrementiere den Wert in R0 um 1 (Zeiger um 1 erhöhen)

>       djnz  R5, loop

Dekrementiere den Wert in R5 (Schleifenzähler um 1 erniedrigen) und 
springe zurück zum Label "loop" wenn nach der Denkrementierung der Wert 
in R5 größer als 0 ist.

> stop:     jmp   stop

Dies ist eine Endlosschleife.
#1309965
Lesenswert?

Georg Steiner schrieb:
> Kann mir jemand sagen was die genaue Funktion dieses Programmsist?

Ich versuch's mal, ohne den besagten Prozessor/Assembler zu kennen.
1
cseg at 0
Segement ab Adresse 0?

1
start:   mov  R5, #10
In das Register R5 wird der Wert 10 (hexadezimal wohl, also 16) 
geschrieben.
1
mov  A, #0
In den Akkumulator wird der Wert 0 geschrieben.
1
mov  R0, #10h
In das Register R0 wird #10 geschrieben.
1
loop:     add  A, @R0
Hier fängt die Schleife an. Es wird zum aktuellen Wert des Akkumulators 
jeweils der Wert des Registers R0 addiert.
1
inc   R0
Das Register R0 wird um 1 hochgezählt.
1
djnz  R5, loop
jnz ist sicher "jump if not zero"... das d sagt mir jetzt grad nichts. 
Es wird also der Wert in Register R5 geprüft. Wenn dieser nicht Null 
ist, wird an den Anfang der Schleife gesprungen.
1
stop:     jmp   stop
2
end
Und nu isses zu Ende. :-)
Gast #1309987
Lesenswert?

holger schrieb:
>>Die Mnemonics sehen übrigens stark nach MCS51 aus (8051-Serie)
>
> Ach was ;)

Ach ja.... ;o)

>>>       mov  R0, #10h
>>Lade Register R0 mit dem Wert 10.
>
> Darüber würde ich noch mal nachdenken.

Stimmt. Das "h" am Ende hatte ich offensichtlich übersehen. Dann wird 
das Register halt mit dem Wert 10(Hex) geladen, was dezimal 16 
entspricht.
#1310092
Lesenswert?

Das ist eindeutig eine Siemens UP. Ich gehe auch davon aus, dass es sich 
entweder um einen 8051, 8052, 80515 oder um einen 80C517 handelt.

Es gibt da übrigens einen sehr guten Simulator dafür, der heißt 
Simula5x, Simulator für die 8051-Familie. Damit kann man dann genau 
überprüfen, was das Progamm gerade macht. Läuft aber noch unter DOS - 
taugt aber was.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren