Fehler in dez2ascii konvertierung
-
Hi Leute
Ich weis jetzt nicht ob solche Fragen wie:
"In meinem code ist ein Fehler und ich kann in nicht finden, brauche Hilfe"
hier in solchem Forum nicht irgendwie unverschämt sind. Wenn ja, dann bitte ich den Moderator darum den thread zu löschen, denn hier kommt so eine Frage meinerseits:;nasm/linux global _start section .data msg: db "Dies ist nur ein kleiner Testtext",0 msg_l: equ $ - msg section .bss wert: resb 16 wert_l: equ $ - wert section .text _start: cld mov esi,msg mov ecx,msg_l naechste: lodsb test al,al jz gefunden loop naechste ende: mov eax,1 xor ebx,ebx int 80h gefunden: call dez_ascii mov eax,4 mov ebx,1 mov ecx,wert mov edx,wert_l int 80h jmp short ende dez_ascii: xor eax,eax xchg eax,ecx ; eax="nummer in bit" ecx=0 mov ebx,10 ; basis 10 stelle: div ebx push edx inc ecx test edx,edx jnz short stelle zeichen: pop eax add al,30h mov [esi],byte al inc esi loop zeichen ret
Dieses Programm soll einfach die position der binären NULL im string msg
ausgeben (das müsste so ungefähr um die 34 sein). Es gibt aber immer eine
0561 aus.
Kann mir jemand sagen wo der Fehler steckt?
Für eure Hilfe wäre ich Euch sehr dankbarGruss
-
Hi.
2 Fehler in deinem int2str-Algo, die mir gleich ins Auge gesprungen sind:
1.edx wird vor division nicht gesetzt.
Dividiert wird edx:eax / r/m32 => Rest:edx;Quot:eax
Na, daemmert's?
2.Weshalb brichst du die Konvertierung bei einem Rest von 0 ab?BTW:
Deine Frage ist vielleicht noch nicht mal sooo unverschaemt, der Thread-Titel aber irgendwo schon.
-
@Nabuo T
Vielen dank für Deine HilfeHab die funktion jetzt so geändert:
dez_ascii: xor eax,eax xchg eax,ecx ; eax="nummer in bit" ecx=0 mov ebx,10 ; basis 10 stelle: xor edx,edx div ebx push edx inc ecx test eax,eax jnz short stelle mov esi,wert zeichen: pop eax add al,30h mov [esi],byte al inc esi loop zeichen ret
Wenn man das prog hiermit laufen läst wird jetzt ne 1 ausgespukt
Irgendwo steckt da immer noch der Fehler
-
Ok, noch ein Tipp:
Schau dir doch mal an, von welcher Richtung des Strings aus gezaehlt ecx die Stelle der 0 enthaelt.BTW:
Mein letztes BTW sollte einen Wink mit dem Zaunpfahl sein, einen aussagekraeftigen Titel zu waehlen. AFAIR kann man hier als registrierter User auch seine Beitraege inkl. Titel editieren.
-
Nobuo T schrieb:
Schau dir doch mal an, von welcher Richtung des Strings aus gezaehlt ecx die Stelle der 0 enthaelt.
THX, bin jedoch etwas voreilig mit dem posten. Bin mitlerweile selbst drauf gekommen
Nobuo T schrieb:
BTW:
Mein letztes BTW sollte einen Wink mit dem Zaunpfahl sein, einen aussagekraeftigen Titel zu waehlen. AFAIR kann man hier als registrierter User auch seine Beitraege inkl. Titel editieren.LOL, verstehe. Gleich mal ausprobieren...