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

Zadania z assemblera - początkujący

0 głosów
1,810 wizyt
pytanie zadane 27 listopada 2015 w Inne języki przez Kapi2222 Obywatel (1,220 p.)

Witam! Jako ,że jestem początkującym w tym języku mam problem z kilkoma zadaniami. Nie wiem do czego służą różne funkcje. Z racji tego ,że nie mam żadnego kompilatora do assemblera nie znam nawet poprawnego wyniku do tych zadań bo nie wiem jak je sprawdzić. Pomógłbym mi ktoś i powiedział mniej więcej w jaki sposób rozwiązuje sie takie zadania?

Zad. 1

mov ax,3 
mov bx,5 
add ax,bx 
neg bx 
add bx,ax 
sub ax,bx 
int 3  ;wszystkie komendy są dla mnie zrozumiałe oprocz tej, co ona robi w programie?

 

zad. 2 - Podać heksadecymalnie wynik:

mov ax, 3 
loop: cmp ax, 16 
      jge ok 
      add ax, ax 
      jmp loop 
  ok: int 3

I tyle. Chciałbym po prostu poznać schemat rozwiązywania tych zadań. Jak go poznam to myślę ,że z resztą zadań sobie poradzę :) Głównie chodzi mi o zad. 2 bo wiem np. że loop to pętla ale nie wiem jak ona ma tutaj konkretnie zadziałać i jak sie kończy.  Dziękuję i pozdrawiam :)

1 odpowiedź

0 głosów
odpowiedź 27 listopada 2015 przez Krawiec91 Pasjonat (19,600 p.)
1. Te zadania są tak "skomplikowane", że znając instrukcje procesora, można je na kartce albo w głowie "skompilować". Ciężko mi tu powiedzieć o schematyczności w tych zadaniach. Nie podałeś co te programy miałyby robić. Chyba, że tylko fragmenty zamieściłeś, z 6-7 linii w assembly za dużo się nie podziała.

2. "loop" z zadania nr 2. to jest tylko label, który wskazuje na dane miejsce w programie, do którego można się odwołać za pomocą skoków warunkowych (związanych z flagami procesora) lub  skoków bezwarunkowych (na przykład instrukcja JMP). Label może także wskazywać, na stworzoną funkcję, którą można wywołać (instrukcja CALL). W pewnych okolicznościach, label może ograniczać zbiór instrukcji, które będą wykonywane w pętli.
3. Instrukcja int 3 - to przerwanie (wyjątek) Breakpoint Exception.
4. W zadaniu 2 wykonywane jest dodawanie do siebie zawartości akumulatora, do momentu gdy jest mniejsza (zawartość AX) od liczby 16.

Podobne pytania

0 głosów
1 odpowiedź 326 wizyt
pytanie zadane 27 stycznia 2016 w Inne języki przez hubertgz Użytkownik (510 p.)
0 głosów
3 odpowiedzi 2,746 wizyt
pytanie zadane 14 listopada 2015 w Inne języki przez hubot Dyskutant (9,090 p.)
+2 głosów
2 odpowiedzi 3,484 wizyt
pytanie zadane 23 września 2015 w Inne języki przez Omega410 Nowicjusz (140 p.)

93,720 zapytań

142,635 odpowiedzi

323,264 komentarzy

63,267 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...