compare Befehl assembler

OP #3180354
Lesenswert?

Hi

ich programmiere für den ATmega8 und bin auf ein Problem gestoßen, wenn 
ich eine Bedingung abfragen will, allerdings nicht mit Zahlen, sondern 
Buchstaben, wie muss ich da vorgehen? Also wenn ich R17 mit P 
vergleichen möchte.
P in eine Zahl umwandeln?

Danke für eure Hilfe
#3180384
Lesenswert?

Julia Schneider schrieb:

> P in eine Zahl umwandeln?

Brauchst du nicht.
Das macht schon der Assembler für dich. Du schreibst

  cpi  r17, 'P'

und der Assembler erstezt 'P' durch seinen ASCII Code.
Denn: in einem COmputer ist ausnahmslos ALLES lediglich eine Zahl. So 
etwas wie Buchstaben gibt es nicht. Damit ein Terminal einen Buchstaben 
anzeigt, schickt man ihm eine Zahl (den ASCII Code eines Zeichens) und 
da das Terminal ein Terminal ist, weiß es, dass es für dieses Zahl ein 
bestimmtes Pixelmuster anzeigen muss, welches du dann als 'P' liest.
Gast #3180395
Lesenswert?

'A'=0x41
'B'=0x42
...

Also
x=('A'-0x40)+('B'-0x40)+0x40
x='C' oder auch
x=0x43
x=0b01000011
x=67

Guck doch einfach mal in den Simulator, Debugger im Speicher Register 
Window und klick mal mit der Rechten Maustaste drauf. Da kann man 
meistens einstellen wie der Speicher angezeigt werden soll ob als 
Buchstabe(ASCII Zeichen), als Hexadezimale Zahlen usw.
Variablen und Register kann man sich zumeist auch im Dezimalformat oder 
als Binäre representation angucken.
Das sind jedoch nuranzeigeoptionen in der Realität stehen dort immer 
Nulllen und Einsen also Binärformat.
http://de.wikipedia.org/wiki/Dualsystem

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