Zum Inhalt springen

assembler anfänger fragen


wanderameise

Empfohlene Beiträge

mahlzeit,

also wir haben gerade an der FH mit assembler programmierung angefangen und ich wollte vone uch einfach mal ein paar dinge wissen:

-besteht ein unterschied der zu benutzenden befehle (wie ZB mov eax, var1 etc) zwischen Intel und AMD chipsätzen? in der schule arbeiten wir mit INTEL PCs und heir daheim sitze ich an einem AMD und logische würde mir erscheinden wenn beide verschiedene befehlssätze benutzen würden!!

-was genau passiert bei:

lea ebx, b //b vorher deklariert als int=10

mov eax, [ebx]

für eine kurze erläuterung wäre ich dankbar!

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

mahlzeit,

lea ebx, b                                         //b vorher deklariert als int=10

mov eax, [ebx]
Assembler ist bei mir ne weile her, hab aber ne gute Adresse für dich und die andern, die die assemblerbefehle nachlesen wollen :)Assemblerbefehle wenn ich raten sollte, würd ich sagen ebx erhält den offset von der deklaration von b und der inhalt wird dann nach eax geschrieben. könnte mich natürlich auch irren

ebx = adresse von b

eax = 10

könnte das hinkommen?

-besteht ein unterschied der zu benutzenden befehle (wie ZB mov eax, var1 etc) zwischen Intel und AMD chipsätzen? in der schule arbeiten wir mit INTEL PCs und heir daheim sitze ich an einem AMD und logische würde mir erscheinden wenn beide verschiedene befehlssätze benutzen würden!!

nein benutzen den gleichen soweit ich weiss, da assembler maschinensprache ist...zu der zeit wo assembler entwickelt wurde gabs nur wenige prozessorenhersteller...motorola intel und paar unbedeutende Hersteller...Motorola und Intel hatten nicht den gleichen maschinencode...boah das so lange her, keine ahnung mehr^^ korrigiert mich wenn ich falsch liege =) oder löscht den teil einfach raus ggg^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

mahlzeit,

-besteht ein unterschied der zu benutzenden befehle (wie ZB mov eax, var1 etc) zwischen Intel und AMD chipsätzen? in der schule arbeiten wir mit INTEL PCs und heir daheim sitze ich an einem AMD und logische würde mir erscheinden wenn beide verschiedene befehlssätze benutzen würden!!

Es wurde sich hier auf den I386 Befehlssatz geeinigt.

(Siehe auch Wikipedia "IA-32")

Es könnte jedoch sein, dass die Befehle auf den verschiedenen CPU's anders gehandelt werden.

Die Funktionen der Grundbefehle mov etc. sind allerdings dieselben.

Es gibt allerdings dann noch Erweiterungen.

Bei AMD das "3DNOW" und bei INTEL das "MMX".

Dafür gibts dann wiederum prozessorspez. Befehle.

Link zu diesem Kommentar
Auf anderen Seiten teilen

-was genau passiert bei:

lea ebx, b //b vorher deklariert als int=10

mov eax, [ebx]

Wie Maddin schon sagte...

"lea" heißt ja "load effective address".

Also.

lea ebx, b

... lädt ins Register ebx, die (Speicher)Adresse von deiner variablen b.

mov eax, [ebx]

... schiebt (durch die eckige Klammer) den Wert von Adresse in ebx (also dein B) ins Register eax.

Würdest du die eckige Klammer weglassen, würdest du quasi nur die Speicheradresse in eax laden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke ihr habt mir auf keden fall schon mal weiter geholfen!

aber da gibts noch was:

-das register,zB eax, hat 32 BIT größe!richtig?

in visual c++ werden, wenn man sich die register anschaut, aber weniger stellen, glaube 8 oder so angezeigt!stimmt es wenn ich vermutet das eine stelle 4 Bit entspricht, damit mit hexwerten gearbeitet werden kann?

ist es im RAM also XX 00 00 00 00 genauso gehandthabt?

-nochmal oben das beispiel, wenn noch dazu kommen würde:

lea ebx, b                                         

mov eax, [ebx]

[B]mov eax,[ebx+2][/B]

was würde passieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen


  aehm wenn du [ebx+2] nachst, nimmt er halt den inhalt der speicheradresse die nach ebx kommt glaub ich... [ebx]+2 wäre dann 12 ...aber du addierst ja 2 zur speicheradresse dazu oO

neue prozessoren haben ein 32 bit

register, die alten ein 16bit akkumulator

8086

und ich gehe mal davon aus das ihr den 8086 verwendet, der meist für Berufsschulzwecke verwendet wird, manchmal aber auch der 8085, der hat nur 8 bit register,

8085

kann aber für 16bit genutzt werden in dem man 2 register immer zusammenzieht, in der REGEL

Akkumulator und FLAG

B - Register und C - Register

D - Register und E - Register

zusätzlich noch H - Register und L - Register über welche auch die Push und POP funktionen beim 8085 funktionieren...

mensch mensch...3 jahre DVT leistungskurs haben was gebracht und trotzdem ist Assembler nur zum debuggen gut^^ ggg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

und ich gehe mal davon aus das ihr den 8086 verwendet, der meist für Berufsschulzwecke verwendet wird, manchmal aber auch der 8085, der hat nur 8 bit register,

Anbetracht der Tatsache, dass von Visual C++ die Rede ist würde ich eher auf einen Standard 32 Bit PC mit entsprechender CPU tippen.

in visual c++ werden, wenn man sich die register anschaut, aber weniger stellen, glaube 8 oder so angezeigt!stimmt es wenn ich vermutet das eine stelle 4 Bit entspricht, damit mit hexwerten gearbeitet werden kann?

ist es im RAM also XX 00 00 00 00 genauso gehandthabt?

Bei der menschenlesbaren Form der Sedezimal-Darstellung wird eine Ziffer durch ein Nibble (vier Bit) repräsentiert. Ein Byte damit durch zwei Nibble/Ziffern.

Nic

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nochmal zu den Registern:

Meines Wissens war es so:

8bit-CPU:

Registername: A

16bit-CPU:

Registername: AX

32bit-CPU:

Registername: EAX

und ich gehe mal davon aus das ihr den 8086 verwendet, der meist für Berufsschulzwecke verwendet wird, manchmal aber auch der 8085, der hat nur 8 bit register,

Ebenso gibts das EBX-Register auf nem 8086 nicht :D

Das mit der Hexadezimaldarstellung find ich gar nicht so schlecht, da du hier bei der Umwandlung immer nur eine Hexadezimalstelle in Binärzahlen umrechnen musst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke soweit!

habe mir mal den RAM speicher angesehn mit den entsprechenden adressen.

weiss nicht ob ich es verstanden habe:

-die adressen können max 32 BIT lang sein?

-wie gr0ß kann der inhalt auf den die adressen zeigen sein?is dies abhängig von dem datentyp?also zB long int 4 byte?wäre logisch :upps

-meine cpu ist mit 2 ghz getaktet ,die register sind 32 bit breit.

kann also theoretisch die cpu jede millardste sekunde 2 32 bit zahlen miteinander addieren?oder wieviele bits schafft sie pro takt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

-die adressen können max 32 BIT lang sein?

Das hängt von der CPU ab. 32 bzw. 64 Bit sind gängige Größen, um Adressen darzustellen.

-wie gr0ß kann der inhalt auf den die adressen zeigen sein?is dies abhängig von dem datentyp?also zB long int 4 byte?wäre logisch

Ja. Wobei sich das eigentlich erst dann bemerkbar macht, wenn Du die Daten an dieser Adresse in ein Register liest (da in diesem Fall angegeben werden muss, um was für einen Datentyp es sich handelt).

-meine cpu ist mit 2 ghz getaktet ,die register sind 32 bit breit.

kann also theoretisch die cpu jede millardste sekunde 2 32 bit zahlen miteinander addieren?

Auch das hängt von der CPU ab. Moderne Prozessoren sind in der Lage, mehr als nur eine Operation pro Takt durchzuführen; auf der anderen Seite gibt es auch Operationen, die mehr als einen Takt benötigen.

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...