05_assembler_slides_Z Flashcards

1
Q

Was sind die zwei Bedeutungen des Begriffs “Assembler”?

A
  • Maschinensprache (Assemblersprache): Dies ist die niedrigste Programmiersprache, die direkt von der CPU ausgeführt werden kann. - Vom Menschen lesbare Version der Maschinensprache: Eine symbolische Darstellung der Maschinensprache, die für Menschen verständlicher ist.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist ein Opcode in der Assemblerprogrammierung?

A
  • Opcode: Eine Bitfolge, die eine bestimmte Maschineoperation darstellt, wie z.B. 0000 1100 0001 0010. Opcodes sind die elementaren Befehle, die von der CPU verstanden und ausgeführt werden.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Warum wird Assemblercode in hochoptimiertem Code verwendet?

A
  • Hochoptimierter Code: Assembler wird auf Plattformen mit begrenzten Ressourcen verwendet, um maximale Effizienz und Leistung zu erreichen, z.B. in Verschlüsselungsroutinen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie kann man Assemblercode erhalten?

A
  • Kompilieren mit -S: Erzeugt eine .s Datei, die den Assemblercode enthält. - Disassembler (z.B. objdump): Wandelt Opcodes in menschenlesbaren Assemblercode um. - Decompiler: Erzeugt Quelltext aus Assemblercode, besonders effektiv bei Bytecode-Sprachen wie Java.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was sind Compiler-Optimierungen und wie beeinflussen sie den Assemblercode?

A
  • Compiler-Optimierungen: Techniken, die der Compiler verwendet, um den Code effizienter zu machen, wie z.B. die Verwendung von xor %Register, %Register anstelle von mov %Register, 0, um Register zu löschen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist die Harvard-Architektur und wie wird sie in AVR Mikrocontrollern verwendet?

A
  • Harvard-Architektur: Ein Speichermodell, bei dem Befehls- und Datenspeicher getrennt sind, was parallelen Zugriff ermöglicht und damit die Effizienz erhöht. AVR Mikrocontroller nutzen diese Architektur.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was zeigt das Zero Flag (Z) im Status Register (SREG) eines AVR Mikrocontrollers an?

A
  • Zero Flag (Z): Zeigt an, dass das Ergebnis der letzten Operation 0 war. Dies ist nützlich für bedingte Anweisungen und Schleifenbedingungen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Welche Funktionen haben bedingte und unbedingte Sprunganweisungen in der Assemblerprogrammierung?

A
  • Bedingte Sprunganweisungen: Diese Anweisungen ändern den Programmzähler basierend auf einer Bedingung (z.B. brcs k). - Unbedingte Sprunganweisungen: Diese Anweisungen ändern den Programmzähler ohne Rücksicht auf Bedingungen (z.B. jmp label).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was ist Little Endian und wie beeinflusst es die Arbeit mit mehreren Byte großen Datentypen?

A
  • Little Endian: Ein Speicherformat, bei dem die niedrigwertigsten Bytes an den niedrigsten Speicheradressen gespeichert werden. Bei Operationen auf mehrbytegroßen Datentypen muss dies berücksichtigt werden, insbesondere bei Overflow-Berechnungen wie adc (Addition mit Carry).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie funktionieren Subroutinen in Assembler?

A
  • Subroutinen: Werden mit call aufgerufen, was den alten Programmzählerwert auf den Stack sichert. Mit ret wird die Sprungadresse vom Stack gelesen, um zur aufrufenden Stelle zurückzukehren.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wie kann man Verzweigungen in Assembler implementieren?

A
  • Verzweigungen: Werden durch bedingte und unbedingte Sprünge realisiert. Beispiel:
    assembly cp . . .         ; Überprüfe Bedingung1 brxx label1      ; Springe, wenn Bedingung1 nicht erfüllt Befehl1 jmp end          ; Unbedingter Sprung zum Ende der Verzweigung label1:          ; Sprunglabel für else-if-Zweig cp . . .         ; Überprüfe Bedingung2 brxx label2      ; Springe, wenn Bedingung2 nicht erfüllt Befehl2 jmp end          ; Unbedingter Sprung zum Ende der Verzweigung label2:          ; Sprunglabel für else-Zweig Befehl3 end:             ; Sprunglabel am Ende der Verzweigung
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wie kann eine While-Schleife in Assembler implementiert werden?

A
  • While-Schleife: Wird durch bedingte Sprünge umsetzbar. Beispiel:
    assembly loop:            ; Sprunglabel am Beginn der Schleife cp . . .         ; Überprüfe Bedingung1 brxx end         ; Springe, wenn Bedingung1 nicht erfüllt Befehl1 jmp loop         ; Unbedingter Sprung zum Kopf der Schleife end:             ; Sprunglabel am Ende der Schleife
How well did you know this?
1
Not at all
2
3
4
5
Perfectly