W żadnym kodzie, który piszę, nie działają mi pętle, odpowiedniki if itp. (jcos). Próbowałam uruchamiać też kody z różnych kursów internetowych. Nie działało. Nwm czy kursy są przestarzałe, czy co, w każdym razie mi to nie działa. Używam Linuxa, 32bit, nasm.
Pokaż kod który ci nie działa i błąd kompilatora który dostajesz. Poza tym skoki to nie to samo ci pętle ;)
Chodziło mi o to, że nie działa mi jedno i drugie. Kompilator nie wywala błędów. Tylko podczas działania programu widać, że fragmenty typu
cmp eax, ebc
je costam
Są nie obsługiwane
Z tego co rozumiem to chcesz znaleźć największą liczbę z tych trzech zdefiniowanych w sekcji .data. Nie wiem czy zrobiłeś to świadomie, ale masz
dd '22'
dd '47'
dd '31'
tylko, że przez te '' nie będziesz miał w pamięci liczb 22, 47 i 31 tylko wartości ascii tych znaków czyli
dd '22' ; 0x32 0x32 0x0 0x0
dd '47' ; 0x34 0x37 0x0 0x0
dd '31' ; 0x33 0x31 0x0 0x0
i to chyba przez to Twoje skoki "nie są obsługiwane"
stryku napisał(a):
Z tego co rozumiem to chcesz znaleźć największą liczbę z tych trzech zdefiniowanych w sekcji .data. Nie wiem czy zrobiłeś to świadomie, ale masz
dd '22'
dd '47'
dd '31'
tylko, że przez te '' nie będziesz miał w pamięci liczb 22, 47 i 31 tylko wartości ascii tych znaków czyli
dd '22' ; 0x50 0x50 0x0 0x0
dd '47' ; 0x52 0x55 0x0 0x0
dd '31' ; 0x51 0x49 0x0 0x0
i to chyba przez to Twoje skoki "nie są obsługiwane"
Kody ASCII cyfr to:
0x30 > 0
0x31 > 1
0x32 > 2
itp.
Podałeś wartości decymalne, wzbogacone o znamiona heksadecymalne :D
Masz linka: http://www.asciitable.com/index/asciifull.gif
Ok, dziękuję za pomoc, instrukcje mi działają, po prostu ja popełniłam kilka błędów i to w kilku plikach, aczkolwiek pojedynczy przeskok w programie (używając tego nieszczęsnego cmp) działa, także zamykam temat.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.