• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Assembler - nie mogę zrozumieć :P

Object Storage Arubacloud
0 głosów
1,321 wizyt
pytanie zadane 17 listopada 2017 w Inne języki przez Cherry96 Nowicjusz (170 p.)
edycja 18 listopada 2017 przez Eryk Andrzejewski

Witam, mam problem ze zrozumieniem kodu (jestem początkujący). Czy ktoś mógłby mi wytłumaczyć, czy chociaż nakierować?
 

;Pobieram Znak
mov     ah, 1
int     21h

;Zwiekszam o 1
mov      dl, al   
inc     dl

; Wyświetlam znak powiększony o 1
mov     al, 2
int     21h



Chodzi mi głównie o wyświetlanie. Czegoś tutaj nie rozumiem:

jeśli znak jest w dl, to dlaczego wyświetlam go poprzez al ?

1 odpowiedź

+2 głosów
odpowiedź 18 listopada 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
wybrane 18 listopada 2017 przez Cherry96
 
Najlepsza

Jest coś takiego jak spis przerwań Ralpha Browna (RBIL). Jeżeli nie chce Ci się pobierać plików, które są czystym tekstem, możesz skorzystać np. z tej strony: http://www.ctyme.com/intr/int.htm

Masz tu po prostu listę przerwań i opisy ich działania, w którym rejestrze znajduje się który parametr i tak dalej.

Przerwania DOSa, których używasz, to przerwanie 0x21 (czyli inaczej 21h). Ale to, która procedura ma się wykonać (czy np. napisanie znaku, czy wczytanie znaku z klawiatury), zależy od zawartości rejestru AH.

Przeanalizujmy twój kod:

;Pobieram Znak
mov ah, 1
int 21h

Z tego spisu przerwań można wyczytać:

DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO

AH = 01h

Return:
AL = character read

A więc wczytujesz znak z klawiatury do rejestru AL.

Dalej:

;Zwiekszam o 1
mov dl, al   
inc dl

Czyli zawartość AL wrzucasz do rejestru DL, a następnie inkrementujesz zawartość rejestru DL - będziesz miał tam znak o kodzie o jeden większym.

I teraz dochodzimy do twojego problemu. Pytasz: czemu znak wyświetlany należy umieścić w rejestrze DL? A no trzeba zajrzeć do tego spisu przerwań. Dla przerwania 21h AH=2

DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT

AH = 02h
DL = character to write

Return:
AL = last character output (despite the official docs which state nothing is returned) (at least DOS 2.1-7.0)

Czyli po prostu tutaj znak wrzuca się do rejestru DL, tak jest skonstruowane to przerwanie, że przyjmuje parametr w postaci rejestru DL.

Tyle. wink

A podsumowując: zaglądaj do dokumentacji, tam jest wszystko napisane.

 

komentarz 18 listopada 2017 przez Cherry96 Nowicjusz (170 p.)
Wielkie dzięki. Sporo mi rozjaśniłeś :D
komentarz 18 listopada 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Chyba niepotrzebnie aż tak to analizowałem, ale zawsze jest jakiś przykład, jak powinno się (mam nadzieję) czytać jakąś dokumentację. smiley

komentarz 10 kwietnia przez sensor Użytkownik (680 p.)

@Eryk Andrzejewski, witaj a możesz podać jakiś link z dokładną, szczegółową polskojęzyczną dokumentacją

Podobne pytania

+1 głos
2 odpowiedzi 119 wizyt
0 głosów
1 odpowiedź 154 wizyt
0 głosów
1 odpowiedź 870 wizyt
pytanie zadane 14 grudnia 2017 w Inne języki przez Cherry96 Nowicjusz (170 p.)

92,555 zapytań

141,403 odpowiedzi

319,553 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...