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

Pytanie odnoścnie nawiasów kwadratowych w programie assembler

Object Storage Arubacloud
0 głosów
306 wizyt
pytanie zadane 8 stycznia 2017 w Assembler przez Klasyczny Użytkownik (610 p.)
Witam,

mam takie pytanie, w programie mam polecenie: mov al, [di+bx] - co tutaj się dzieje?

Można podać dla przykładu swoje wartości, tak żebym zrozumiał ...

W sieci jest mowa, ale tylko jeśli dodajemy jakaś cyfrę lub w nawiasach kwadratowych jest sam rejestr, a jak mamy dwa rejestry nie ma...

1 odpowiedź

0 głosów
odpowiedź 8 stycznia 2017 przez .kassad Gaduła (3,420 p.)
Z tego co pamiętam - do al zostanie wpisana zawartość pamięci znajdująca się pod adresem di+bx
komentarz 8 stycznia 2017 przez Klasyczny Użytkownik (610 p.)
ok, to ja wiem, ale co sie dzieje tutaj "[di+bx]" jak to wytłumaczyć?
komentarz 8 stycznia 2017 przez .kassad Gaduła (3,420 p.)
edycja 8 stycznia 2017 przez .kassad
http://www.imada.sdu.dk/Courses/DM18/Litteratur/IntelnATT.htm

 [base+index*scale+disp]

czyli di będzie adresem tablicy, a bx to indeks. scale wynosi u ciebie 1, zatem każdy element tablicy ma 1 bajt.

 

Czyli załóżmy, że pod adresem di masz adres tablicy charów, a tobie zależy na tym, żeby do rejestru al wpisać znak znajdujący się w piątej komórce. Czyli do bx wpisujesz 5, wykonujesz mov al, [di+bx] i gotowe.
komentarz 8 stycznia 2017 przez Klasyczny Użytkownik (610 p.)
edycja 8 stycznia 2017 przez Klasyczny
średnio to zrozumiałem, może ja zadam pytanie: wartość rejestru di bedzie dodawana do bx i przesyłana do al, czy wartosc bx bedzie dodawana do rejestru al ale tylko do indeksu na którym jest di np. jeśli na di jestem na indeksie 4 a na bx mam zmienna 'tresczmiennej' to do AL wyślę mi adres tylko adres zmiennej 'tresc'?

acha, ok a np. jeśli adres zmiennej "tresczmiennej" mam przesłany do di to wartosc wynosi 12(tak?), a w bx mam "scz" to wtedy w AL co bede miał? 0000 - bo na 12 znaku nic nie ma (są tylko 2 tzn. 3) tak?
komentarz 8 stycznia 2017 przez .kassad Gaduła (3,420 p.)
Niestety nie potrafię odpowiedzieć na twoje pytanie, nie do końca go rozumiem. Ale może tak, weźmy sobie takie zrzut pamięci

adres               zawartość komórki pamięci (w postaci ascii)

0xabc0               0
0xabc1               0
0xabc2               n
0xabc3               a
0xabc4               p
0xabc5               i
0xabc6               s
0xabc7               0
0xabc8               f
0xabc9               a
0xabca               j
0xabcb               n
0xabcc               y
0xabcd               0
0xabce               0
0xabcf               0

w rejestrze di masz adres tablicy - 0xabc2. Ty chciałbyś do rejestru al wpisać wartość znajdującą się w czwartej komórce tej tablicy. Czyli do restestru bx wpisujesz 4, a następnie wykonujesz mov al, [di+bx] i gotowe - w rejstrze al masz cyfrę odpowiadającą 's' w kodzie ascii.

 

Dzięki takiemu czemuś można łatwo przetwarzać tablice w pętli - zawartość bx inkremetujesz w pętli i możesz przejrzeć całą tablicę, jednocześnie zawartość di nie zmienia się, czyli nie tracimy wskaźnika na początek tablicy.
komentarz 8 stycznia 2017 przez Klasyczny Użytkownik (610 p.)
jeśli możesz wytłumacz na takiej zasadzie:

http://www.wklejto.pl/269014

Podobne pytania

0 głosów
0 odpowiedzi 255 wizyt
pytanie zadane 29 maja 2017 w Assembler przez PelikanFix16 Użytkownik (950 p.)
0 głosów
0 odpowiedzi 64 wizyt
pytanie zadane 24 stycznia w Assembler przez koro33 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 231 wizyt

92,539 zapytań

141,382 odpowiedzi

319,479 komentarzy

61,928 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!

...