Einfaches Problem von Assembler anfänger

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

Einfaches Problem von Assembler anfänger

Beitragvon AlexN » Dienstag 19. April 2005, 19:00

denke mal ihr könnt mir schnell weiterhelfen:

ich habe ein macro was folgend aussieht:
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º Funktion : Tastatureingabe, Zeichen in Reg8 (8-Bit Register) º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

TAST_EING MACRO Reg8
IF Reg8 EQ AL OR Reg8 EQ AH
PUSH DX
PUSH AX
MOV AH,08H
INT 21H
MOV DL,AL
POP AX
MOV Reg8,DL
POP DX
ELSE
PUSH AX
MOV AH,08H
INT 21H
MOV Reg8,AL
POP AX
ENDIF
ENDM

und mein programm ganz einfach:

include macro.bib
.model small

.code
TAST_EING AL ; zeile 5 ...
ANZEIGE AL
MSDOS
end

(ANZEIGE und MSDOS sind auch macros die gehen aber ...)

es kommt folgende fehlermeldung:

Microsoft (R) Macro Assembler Version 6.11d
Copyright (C) Microsoft Corp 1981-1995. All rights reserved.

Assembling: test.asm
test.asm(5) : error A2095: constant or relocatable label expected
TAST_EING(1): Macro Called From
test.asm(5): Main Line Code
AlexN
Newbie
 
Beiträge: 4
Registriert: Dienstag 19. April 2005, 18:55

Beitragvon crack » Donnerstag 28. April 2005, 19:42

Soll in dem Macro geprüft werden ob Du AL oder AH verwenden möchtest?
Ich kenne die Syntax regeln deines Compilers nicht, aber Ich schätze wenn Du reg8 al oder ah zuweist will der Compiler den aktuellen Inhalt von al oder ah, in reg8 speichern, aber ein macro wird ja beim compilieren expandiert, und da kann der Compiler mit einem Registerinhalt nix anfangen, wenn Du ASCII Zeichen als Variable oder 'Konstante' (gibt es im RAM Konstanten? :roll: ) übergeben willst musst Du die mit Anführungszeichen "zeichen" oder 'zeichen' als Text- oder Stringvariable deklarieren.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon AlexN » Sonntag 1. Mai 2005, 21:53

ich hab das aaus nem buch .. ich hab mir da nix ausgedacht .. ich habs nur mal ausprobieren wollen, weil das ganze ziemlich komisch aussah !!
AlexN
Newbie
 
Beiträge: 4
Registriert: Dienstag 19. April 2005, 18:55

Beitragvon crack » Dienstag 3. Mai 2005, 22:33

Hi AlexN,

ich hab das aaus nem buch .. ich hab mir da nix ausgedacht .. ich habs nur mal ausprobieren wollen, weil das ganze ziemlich komisch aussah !!


Stimmt! Das sieht auch ziemlich komisch aus, ein Zeichen von der Tastatur holen und auf dem Bildschirm ausgeben sollte einfacher sein.... Nun Ja, wenn's ein ausgesprochenes Lehrbuch ist, dann sollte darin auch erleutert sein wie die Programmbeispiele funktionieren. Wenn Sie nicht funktionieren obwohl Du alles richtig gemacht hast, dann solltest Du einmal beim Autor nachfragen, der wird dann auch dankbar sein, dass Du ihn auf die Fehler hingewiesen hast. Andernfalls wird er möglicherweise dir die Sache erklären. Ok, es gibt unter Dos mehrere Arten ein Zeichen von der Tastatur zu holen, aber Funktion 08h von Dos Interupt 021h dient zum Auslesen des COM1 Port. Um Zeichen von der Tastatur zu holen benutz man idR die Funktion 01h des Interupt 021h oder direkt den TastaturInterupt 016h. Hm, aber das alles ist ja nicht dein Problem, es ging ja um die Frage warum das Macro beim Compilieren einen Fehler verursacht, Ich denke es ist eben so wie der Compiler meldet: Du brauchst eine 'Konstante' oder den Pointer zu einer Speichervariablen. Im Zweifel solltest Du in dem Buch einmal nachlesen, wie das Macro aufgerufen wird bzw. wie die 'Werteübergabe' vonstatten geht. Ist das denn genau der Compiler der in den Buch Beispielen verwendet wird? sonst könnte da das Problem sein....
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon AlexN » Freitag 6. Mai 2005, 12:03

ich habe genau den compiler der auf der cd mit dem buch dabei ist.

desweiteren habe ich aber in dem buch noch weitere fehler gefunden

das war das buch:
Assembler Programmierung, Studienausgabe m. CD-ROM
http://www.amazon.de/exec/obidos/ASIN/3 ... 20-6592817

obwohls eigentlich sonst ok war. es gibt ja in jedem buch fehler also...
AlexN
Newbie
 
Beiträge: 4
Registriert: Dienstag 19. April 2005, 18:55

Beitragvon crack » Freitag 6. Mai 2005, 16:47

Ja, für 16bit ASM hab Ich mir die infos noch überall zusammengesucht, für MASM32 hab Ich mir folgendes Buch angeschaft:http://www.amazon.de/exec/obidos/ASIN/382660671X/ref=pd_sim_dp_2/302-6803577-7793616
Das ist sehr gut, es hebt einen auf die Stufe wo man selber weitermachen kann, zusätzlich braucht man eine gute ASM Befehlsreferenz. Das erleichtert die Sache sehr... :wink:
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon AlexN » Freitag 13. Mai 2005, 14:50

ich muss mal schauen. ich werde jetzt informartik studieren und hab sozusagen das alles mir nur vorher schon mal angeschaut. kann java c++ und jetzt ein witziges bißchen assembler. werde jetz damit aber mal pausieren bis es im studium auf mich zukommt vielelciht komme ich da dann mal wieder hier ins forum zurück!!
AlexN
Newbie
 
Beiträge: 4
Registriert: Dienstag 19. April 2005, 18:55

Beitragvon Marwin » Samstag 14. Mai 2005, 00:59

Viel Spaß und Erfolg im Studium!
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon crack » Sonntag 15. Mai 2005, 15:11

Ja, viel Erfolg :wink:

He, Marwin, was ist mit dem Board los? in den Signaturen wird der HTML Code gar nicht umgewandelt... :(
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Marwin » Montag 16. Mai 2005, 23:51

HTML-Code wird aus Sicherheitsgründen nirgendwo umgewandelt. Wenn du ein ENTER haben möchtest, dann gebe einfach eines ein :wink: , ist also ein ganz normales Textzeichen, welches nicht extra codiert werden muss.
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon crack » Donnerstag 19. Mai 2005, 16:52

:D :D :D

Das ist des Löselts Rätsung!!!
Klar, über HTML könnten sich scheinheilige Java Apletts Einlass verschaffen...
... Safty First!!! :wink:
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon Marwin » Donnerstag 19. Mai 2005, 20:20

was? sehe ich richtig? immer noch das <br> da!

jetzt aber schnell ändern! :D
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Tim » Freitag 20. Mai 2005, 10:09

Hab mir auch das Buch, was crack hat gekauft. Dort steht echt viel drin und man braucht eigentlich keine Vorkenntnisse.

Fazit: echt toll, kann ich nur empfehlen.
Tim
Newbie
 
Beiträge: 7
Registriert: Mittwoch 6. April 2005, 19:22


Zurück zu Assembler

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron