Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

[FASM] Wypisywanie znaku w trybie tekstowym.



 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Inne jzyki
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
hit02



Doczy: 20 Sty 2014
Posty: 7
Skd: Gdask

PostWysany: Wto Lis 18, 2014 8:40 pm  OP    Temat postu: [FASM] Wypisywanie znaku w trybie tekstowym. Odpowiedz z cytatem Pisownia

Od niedawna ucz si asemblera x86 i mam problem. Gdy wpisuj taki kod, to zamiast litery "A" na ekranie pojawia si "S".
Kod:
literka db "A"

mov al, [literka]
mov ah, 0eh
int 0x10


Natomiast, gdy zrobi co takiego, to wszystko dziaa jak trzeba.
Kod:
mov byte [00h], "A"
mov al, [00h]
mov ah, 0eh
int 0x10


Wydawao mi si, e "literka", to tylko etykietka oznaczajca miejsce w pamici i oba kody powinny dziaa tak samo, ale widocznie jest inaczej.

Kod pisz w FASM-ie, potem konwertuj na bootowalne *.iso i uruchamiam w VirtualBox-ie.

Czy moe mi kto napisa, co robi le i jak to poprawi?
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
marcin_an



Doczy: 26 Maj 2005
Posty: 18822

PostWysany: Wto Lis 18, 2014 9:36 pm      Temat postu: Odpowiedz z cytatem Pisownia

Skadni FASMa nie pamitam, ale na oko dane umiecie w segmencie kodu (adresowanym rejestrem CS), a w lini 3 wczytujesz bajt z segmentu danych (adresowanego rejestrem DS). Albo adresuj jawnie, penym adresem, albo ustaw DS na CS:
Kod:
mov al, [cs:literka]

lub
Kod:
push cs
pop ds
mov al, [literka]

(lub podobnie, waciwie dla skadni uywanej przez FASMa)
Pamitasz o tym, e funkcja 10/0E ma jeszcze argumenty w rejestrze BX? Nie ustawie ich na adn konkretnwarto.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hit02



Doczy: 20 Sty 2014
Posty: 7
Skd: Gdask

PostWysany: Wto Lis 18, 2014 9:54 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

No wic zrobiem co takiego, ale wci tylko literka "S" pojawia si w lewym grnym rogu.
Kod:
literka db "A"

mov bx, 0
mov al, [cs:literka]
mov ah, 0eh
int 10h
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
marcin_an



Doczy: 26 Maj 2005
Posty: 18822

PostWysany: Wto Lis 18, 2014 10:17 pm      Temat postu: Odpowiedz z cytatem Pisownia

Sprawd w dokumentacji, czy skadnia odwoania sido pamici w formie segment:offset jest taka, jak podaem. Jak pisaem: skadni FASMa nie pamitam, wic mogem co poknoci - rne jzyki asemblerowe miay rne swoje wasne dziwactwa.

Nie widz te sprawdzenia, czy przypisanie wartoci CS do DS co naprawia.

Jeeli nie, to jedyne, co jeszcze mi przychodzi do gowy - oprcz oczywicie pokrcenia przeze mnie skadni - to fakt, e jeste w bootloaderze. Sprbuj ustawi DS na 0x07C0, czyli adres, pod ktrym zaczyna si twj kod:
Kod:
mov ax, 07C0h
mov ds, ax

Niemniej wydawao mi sizawsze, e CS wanie na to jest ustawione (w kocu wykonywany jest kod z tego segmentu), wic przepisanie CS do DS powinno to rozwiza.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hit02



Doczy: 20 Sty 2014
Posty: 7
Skd: Gdask

PostWysany: Wto Lis 18, 2014 10:42 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Chyba rzeczywicie byem w bootloaderze, ale teraz ju powinienem sobie poradzi.
To w sumie logiczne, ale nie musiaem wczeniej o tym myle, bo pisaem tylko w HLL-ach i tylko pod windowsa.
Dziki marcin_an, za odpowied.

Poniej kod, ktry dziaa. Moe komu si kiedy przyda jeli bdzie mia podobny problem.

Kod:
literka db "A"

mov ax, 07C0h
mov ds, ax
mov bx, 0
mov al, [literka]
mov ah, 0eh
int 10h


PS Tu si jako zamyka tematy? Jeli tak, to ja nie wiem jak.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Inne jzyki Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.17104 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |