Asembler - wyswietlanie zmiennej ze znakiem

0

Witam, jestem nowy zarówno na forum jak i w assemblerze. Mam mały problem, ponieważ nie wiem czemu nie mogę skopiować znaku ze zmiennej db do rejestru dl. Udało mi się zrobić taką samą rzecz ze stringiem, ale znak jest oporny... Zamiast zamierzonego wyniku programu cały czas otrzymuję 'krzaczasty' znak. Bez zmiennej program działa normalnie, help :(

mov ah, 2
mov dl, znak
int 21h

mov ax, 4C00h
int 21h

znak db "X"
 

:(assembler.png

2

Pisałeś wcześniej w innej składni ASM (masm/tasm chyba np)?

Jeśli tak, to NASM się trochę różni (jest logiczniejszy):

mov dl, znak

znak db "X"

Przenosi do dl /adres/ (ściśle to w tym przypadku offset) zmiennej znak.
Ty chcesz tam mieć /wartość/ spod zmiennej znak, więc powinno być

mov dl, [znak]

znak db "X"

Trochę więcej o tym:
http://www.nasm.us/doc/nasmdoc2.html#section-2.2.2

disclaimer: Nie mam NASM-a pod ręką więc nie testowałem czy po poprawie tego już wszystko działa, ale nie widzę powodu czemu nie miałoby

0

jak ma być już poprawnie wg. zasady to proponowałbym:
mov dl, byte [znak] ; załaduj jeden Bajt z komórki pamięci pod adresem etykiety "znak" do rejestru DL

1 użytkowników online, w tym zalogowanych: 0, gości: 1