FASM 16B string jako lokalna zmienna
Ostatnio zmodyfikowano 2016-12-15 20:47
Szustarol Temat założony przez niniejszego użytkownika |
FASM 16B string jako lokalna zmienna » 2016-12-14 19:00:48 Witam! Chcialem sobie wydrugowac stringa jako lokalna zmienna, cos jak w C: { string a = "test"; cout << a; }
zrobilem to tak: push bp mov bp, sp sub sp, 10 mov [bp-2], word 't' mov [bp-4], word 'e' mov [bp-6], word 's' mov [bp-8], word 't' mov [bp-10], word 0x00 lea si, [bp-2] call writestring mov sp, bp pop bp
niestety drukuje mi tylko pierwsza literke. Dlaczego tak? funkcja writestring tutaj: writestring: push ax ;saving register because it is used mov ah, 0x0E loopt: lodsb or al, al jz endedprint int 0x10 jmp loopt endedprint: pop ax ret
|
|
pekfos |
» 2016-12-14 20:03:23 Kopiujesz literę jako słowo (2 bajty), więc wstawiasz zero po każdym znaku. |
|
Rashmistrz |
» 2016-12-14 21:04:34 Dlaczego potrzebujesz 2-bajtowych znaków? Zauważ że używasz LODSB, a nie LODSW. To przerwanie wypisuje wyłącznie glify o kodach od 0 do 255. Sprawdź czy DF (direction flag) masz poprawnie ustawioną.
EDIT: Jest jakiś kontakt do Ciebie? Widzę, że zajmujesz się asemblerem. Moglibyśmy czasem porozmawiać. :D |
|
Szustarol Temat założony przez niniejszego użytkownika |
» 2016-12-15 19:34:33 @Rashmistrz zajmuję się od czasu do czasu kiedy znajdę chęci :D jak coś to możesz na miala napisać szustarol123@gmail.com |
|
Rashmistrz |
» 2016-12-15 20:28:10 @Szustarol: Panie! A facebooka pan nie masz? ( Marcin Tyn) Nie zapomnij znowu odpisać co było nie tak i jak sobie poradziłeś. :D |
|
Szustarol Temat założony przez niniejszego użytkownika |
» 2016-12-15 20:47:53 Dodałem na facebooku Karol Szustakowski. Już wszystko poprawiłem, moja ramka wygląda teraz tak: push bp mov bp, sp sub sp, 6 mov [bp-2], byte 0x00 mov [bp-3], byte 't' mov [bp-4], byte 's' mov [bp-5], byte 'e' mov [bp-6], byte 't' lea si, [bp-6] call writestring mov sp, bp pop bp
doszedlem do wniosku, że przeciez pointer jest inkrementowany a nie dekrementowany więc zacząłem "od tyłu". Zacząłem też przesuwać bajty zamiast słów. |
|
« 1 » |