kulkaaa Opublikowano 16 Stycznia 2011 Zgłoś Opublikowano 16 Stycznia 2011 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: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kfgz Opublikowano 16 Stycznia 2011 Zgłoś Opublikowano 16 Stycznia 2011 (edytowane) 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 16 Stycznia 2011 przez kfgz Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kulkaaa Opublikowano 17 Stycznia 2011 Zgłoś Opublikowano 17 Stycznia 2011 niestety nie ma łatwo, bo musze to napisać w Asemblerze.... to jest najwiekszy ból :( Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Thomas Opublikowano 18 Stycznia 2011 Zgłoś Opublikowano 18 Stycznia 2011 (edytowane) 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 18 Stycznia 2011 przez Thomas Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...