Seite 1 von 2
ASM- Fehler?!?!
Verfasst: 13.08.2005 13:47
von AndyX
Hallo,
was stimmt an den Zeilen
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
könnte man
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

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
