Ich kann dann zwar:
Code: Alles auswählen
MOV ecx, *Input ; Leseadresse
MOV edi, Result ; Schreibadresse
Code: Alles auswählen
MOV ecx, *Input ; Leseadresse
MOV edi, Result ; Schreibadresse
Ja, der Code geht ja noch nicht.Regenduft hat geschrieben:@ NicTheQuick: Erst gacken und dann nicht legen... Tse!
Code: Alles auswählen
!MOV ebx, 85 ; Divisor
!MOV rcx, [p.p_Input] ; Leseadresse
!MOV rdi, [p.v_Result] ; Schreibadresse
!SUB rcx, [p.v_Length]
!base85_loop:
!MOV eax, [rcx] ; Tiefer Dividend-Teil
!BSWAP eax
!MOV edx, 0 ; Hoher Dividend-Teil = 0
!DIV ebx ; Erste Division
!ADD [rdi+4], dl ; Rest (nur das tiefste Byte) kommt in den String, addiert auf das "!"
!MOV edx, 0
!DIV ebx ; Zweite Division
!ADD [rdi+3], dl
!MOV edx, 0
!DIV ebx ; Dritte Division
!ADD [rdi+2], dl
!MOV edx, 0
!DIV ebx ; Vierte Division
!ADD [rdi+1], dl
!MOV edx, 0
!DIV ebx ; Fünfte Division
!ADD [rdi+0], dl
!ADD rcx, 4 ; Leseadresse + 4
!ADD rdi, 5 ; Schreibadresse + 5
!CMP rcx, [p.p_Input] ; Fertig?
!JNZ base85_loop
Wo steht das denn in der PB-Hilfe?STARGÅTE hat geschrieben:Ja, offiziell frei zur benutzung sind nur eax, ecx und edx.
Damit ist gemeint, dass diese nie Inhalte haben, die "später" Wichtig sind, es sind halt die Arbeitsregister.- Die verwendbaren Register sind: eax, edx und ecx. Alle anderen müssen immer reserviert bleiben.
Hier auch noch der Hinweis wegen PUSH und POP- Lokale Variablen in PureBasic werden direkt durch den Stack-Pointer indexiert, was bedeutet: Wenn der Stack-Pointer durch eine ASM Anweisung (wie PUSH, POP etc.) verändert wird, dann wird der Variablen-Index fehlerhaft sein und ein direkter Verweis auf Variablen funktioniert nicht mehr.
OK, werde das jetzt nicht überprüfen. Ein Überfliegen dieser Seite zeigt schon etliche Fehler. Zum Beispiel derSTARGÅTE hat geschrieben:http://www.purebasic.com/german/documen ... edasm.html
Damit ist gemeint, dass diese nie Inhalte haben, die "später" Wichtig sind, es sind halt die Arbeitsregister.- Die verwendbaren Register sind: eax, edx und ecx. Alle anderen müssen immer reserviert bleiben.