Seite 1 von 2

ASM- Fehler?!?!

Verfasst: 13.08.2005 13:47
von AndyX
Hallo,
was stimmt an den Zeilen

Code: Alles auswählen

LEA dx,str_buffer

MOV si,dh

MOV si,dl
nicht?

NASM meldet: Invalid combination of opcode and operands. O_o

Vllt könnt ihr ja dem armen Dummkopf der grade verwirrt ist, helfen... :|

greetz,
AndyX

Verfasst: 13.08.2005 15:18
von remi_meier
Weiss nicht wies bei NASM ist, aber bei FASM müsste die Zeile
LEA dx,[str_buffer]
heissen. Und bei den anderen Zeilen versuchst du 8bit-Register in 16bit-
Register zu verschieben, was nicht erlaubt ist.

Verfasst: 13.08.2005 15:28
von AndyX
Achja, si ist ja 16-bittig :| wie könnte man das umgehen?

Das müsste man mit CBW auf Word erweitern, oder? :|

Verfasst: 13.08.2005 15:33
von remi_meier
Für was SI??

Verfasst: 13.08.2005 15:35
von AndyX
Ne ich bin grad durcheinander :? :|

Verfasst: 13.08.2005 17:58
von Laurin
Ich weiß nicht, wie dein Programm aussieht, aber aus

Code: Alles auswählen

MOV SI, DH
MOV SI, DL
könnte man

Code: Alles auswählen

MOV SI, DX
machen. Funktioniert das dann?

Verfasst: 13.08.2005 18:45
von AndyX
Ne in DL und DH liegen die Adressen zu 2 Strings. Das ganze (also das mit SI) gehört zu ner simplen CompareString Routine.

Code: Alles auswählen

MOV dh,str_end
MOV dl,str_buffer
CALL cst
OR ax,ax
JNZ rebootit

;------------------- CompareString
cst:
loopcst:
MOV si,dh
LODSB
INC dh
MOV bh,al

MOV si,dl
LODSB
INC dl
MOV bl,al

CMP bh,bl
JNE notEqual
OR bh,bl
JZ equal
JMP loopcst

notEqual:
MOV ax,0000h
RET
equal:
MOV ax,1111h
RET

Verfasst: 13.08.2005 18:50
von remi_meier
ähm lol, 8bit-Adressen?
Adressen werden unter Windows in 32bit Registern gespeichert (z.B. Esi),
wenn du unter DOS proggst, dann sinds trotzdem 16bit, also si aber sicher
nicht DH oder DL, höchstens DX...

Verfasst: 13.08.2005 18:52
von AndyX
Ähem, das gehört zu meinem Hobby-OS Projekt, also nix mit Windoof und DOS :allright: :mrgreen: Also sind die Adressen jetzt 16-Bit oder 32-Bit? O_o

Verfasst: 13.08.2005 19:01
von remi_meier
Das solltest du dann wohl selber wissen :shock: