Seite 1 von 1

5.1 Assembler Prozedur will nicht mehr

Verfasst: 11.01.2013 22:35
von hjbremer
Hallo Assembler Kundige,
leider habe ich null Ahnung von ASM

folgende Prozedur funktioniert in 4.6 x86 32 Bit Windows

in 5.1 leider nicht
Fehlermeldung: undefiniertes Symbol l_notfound13

weiss jemand was ich ändern muß

Code: Alles auswählen

Procedure.i FindChar13asm(z, laenge) 
   
  ;z = startposition im memory
  
  CLD  
  MOV edi,z           
  MOV eax,13          ;gesuchtes Zeichen
  MOV ecx,laenge      
  REPNZ SCASB 
  JNZ l_notfound13 
  SUB edi,z 
  MOV eax,edi         ;Rückgabewert 
  ProcedureReturn 
  
  notfound13:         ;wenn nicht gefunden 
  ProcedureReturn 0 
  
EndProcedure

Re: 5.1 Assembler Prozedur will nicht mehr

Verfasst: 11.01.2013 22:41
von edel
Labels in Funktionen sind nun lokal. Das heisst sie sind, oder sollten, von aussen nicht mehr erreichbar sein.
In Funktionen musst du jetzt l_funcname_ benutzen.

Code: Alles auswählen

Procedure.i FindChar13asm(z, laenge) 
   
  ;z = startposition im memory
  
  CLD  
  MOV edi,z           
  MOV eax,13          ;gesuchtes Zeichen
  MOV ecx,laenge      
  REPNZ SCASB 
  JNZ l_findchar13asm_notfound13 
  SUB edi,z 
  MOV eax,edi         ;Rückgabewert 
  ProcedureReturn 
  
  notfound13:         ;wenn nicht gefunden 
  ProcedureReturn 0 
  
EndProcedure

Re: 5.1 Assembler Prozedur will nicht mehr

Verfasst: 11.01.2013 23:05
von STARGÅTE
Oder du kannst ja auch "echte" ASM-Labels nutzen, dann schreibst du:

Code: Alles auswählen

JNZ notfound13
; [...]
!notfound13:

Re: 5.1 Assembler Prozedur will nicht mehr

Verfasst: 11.01.2013 23:08
von hjbremer
Wow, was du alles weißt :allright:

Herzlichen Dank !

dein Chef sollte dein Gehalt verdoppeln

Re: 5.1 Assembler Prozedur will nicht mehr

Verfasst: 11.01.2013 23:12
von hjbremer
PS: es funktioniert nun in 5.1

Nur schade das es nun in 4.6 mit dem neuen Bezeichner nicht mehr geht

Kann man das was machen oder muß ich jetzt mit 2 Procs arbeiten ?

Re: 5.1 Assembler Prozedur will nicht mehr

Verfasst: 11.01.2013 23:17
von STARGÅTE
mein Post überlesen?
Du kannst auch in ASM Labels definieren, die sind dann Versionsunabhängig, und vermutlich einfacher als jetzt noch n CompilerSelect für beide PB-Versionen.

Re: 5.1 Assembler Prozedur will nicht mehr

Verfasst: 12.01.2013 00:08
von hjbremer
STARGÅTE hat geschrieben:mein Post überlesen?
Uups, habe ich nicht gesehen, in der Zeit hatte ich meine Antwort für edel geschrieben.

Und Herzlichen Dank auch Dir, das mit dem Ausrufezeichen funktioniert ebenfalls.