Skocz do zawartości
kulkaaa

[8086] program

Rekomendowane odpowiedzi

Witam,

Mam ogromny problem, a mianowicie na zaliczenie musze napisac program ktory pobiera od uzera 5 liczby po kolei, po czym łączy je w całość pierwsza liczba x 10000, druga x1000 itd i wyświetla wynik w postaci binarnej. Tak jak kalkulator w 8080 nie stanowil wiekszego problemu, tak tutaj nie mam pojecia jak sie za to zabrać. Będe wdzięczna za jakakolwiek pomoc... :unsure:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Napisz w jakim języku ten program ma być napisany. IMHO łatwiej będzie go napisać niż kalkulator no chyba, że w asm. Podpowiedzi:

 

- w C do pobierania liczb użyj scanf a w C++ cin,

- mnożenie i dodawanie to banał więc nawet nie ma co podpowiadać,

- jeśli chodzi o konwersję do postaci binarnej - Dwójkowy system liczbowy – Wikipedia, wolna encyklopedia

Edytowane przez kfgz

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Sądzę że największym haczykiem jest to że masz 4 rejestry dostępne i 5 zmiennych do wprowadzanie i będzie ci brakowało rejestrów żeby na tym wszystkim działać. Skoro już napisałeś kalkulator to nie powinno być problemu z wprowadzaniem i wypisywaniem danych.

 

1. Wklep w MOV CX,5; - to będzie twój counter ile liczb do pobrania;

2. wpisz do MOV DX,10000 - to będzie liczba przez którą mnożysz

 

3. i teraz w pętli

 

4. pobierasz liczbę z klwiatury i zapisujesz ją do BX

5. mnożysz pobraną liczbę razy twój mnożnik i jeśli są to wartości jedno bajtowe to wynik powinien się znajdować w AX , najlepiej zrób PUSH teraz wyniku na stos - bo brakuje ci rejestrów żeby zapamiętać wynik

6. zmniejsz counter o 1 CX i podziel DX przez 10 i sprawdź czy już kończysz - jak nie to do punktu 3 (Jump If Equal; JIE albo coś takiego chyba było w komendzie).

 

7. Jak skończyłeś to zrób 5 razy POP ze stosu i weź pododawaj wartości ze sobą a potem wyrzuć to dla usera.

 

Nie wiem czy wartości rejestrów zgadzają się z tym co jest w specyfikacji 8086 - lepiej to posprawdzaj (chyba jak mnożysz duże liczby to wynik jest zapisywany z rozbiciem AX-DX - gdzie AX to wyższe bity a DX to niższe bity - musisz to rozgryźć)

 

może się przyda - Asembler - szybkie wprowadzenie

Edytowane przez Thomas

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...