Konwersja hex na dec na procesorze Intel 8080

Odpowiedz Nowy wątek
2019-11-02 19:50
0

Cześć.
Mam do zrobienia program wykonujący mnożenie na intelu 8080.

  • użytkownik wprowadza z klawiatury liczbę w systemie dziesiętnym
  • program sobie mnoży
  • wynik ma być również wyświetlony w systemie dziesiętnym

Jak z pierwszymi dwoma punktami nie miałem problemów tak problem pojawia się przy trzecim. Kompletnie nie wiem jak się za to zabrać.
Intel 8080 ma 6 rejestrów 8 bitowych, które łącza się w pary 16bitowe: BC, DE, HL
Próbowałem liczbę hex np. ABCD showaną w jednym 16bit rejestrze rozbić na 4 rejestry i wtedy je konwertować dla 16^3 itp. ale nic mi z tego nie wyszło.
Tak szczerze to błądzę po omacku próbując różnych dziwnych rzeczy i nic mi z tego nie wychodzi.
Pozwolę sobie zawołać @Gynvael Coldwind, może on jest w stanie mi pomóc. :D

To jest kod który udało mi się wyprodukwoać do tej pory. (input od usera i mnożenie działa, program aktualnie wypisuje wynik w hex).
RST są z emulatora którego używamy na uczelni.

    ORG 800H

    LXI H,TXT_START      
    RST 3
    LXI H,TXT_LICZBA1    
    RST 3
    CALL WPISZ_LICZBE

    LXI H,TXT_LICZBA2    
    RST 3
    MOV L,A

    CALL WPISZ_LICZBE
    MOV H,A

    LXI B,0
    LXI D,0
    MOV E,L
    MOV C,H
    lxi h,0

MNOZENIE
     DAD D                  
     DCX B                    
     MOV A,B                 
     CPI 0                     
     JNZ MNOZENIE         
     MOV A,C              
     CPI 0               
     JNZ MNOZENIE         

      JMP WYPISZ

WPISZ_LICZBE
    RST 2
    SUI 48
    MOV B,A
    JM HALT
    RST 2
    SUI 48
    JM JEDNOCYFROWA
    MOV C,A
    RST 2
    SUI 48
    JM DWUCYFROWA
    MOV D,A
    JP TRZYCYFROWA

JEDNOCYFROWA
    MOV A,B
    RET

DWUCYFROWA
     MOV A,B
     MVI E,9
PETLA_DZ
    ADD B
    DCR E
    JNZ PETLA_DZ
    ADD C
    RET

TRZYCYFROWA
     MOV A,B
     MVI E,99
     MVI H,9
PETLA_SETKI
        ADD B
     DCR E
     JNZ PETLA_SETKI
     MOV B,A
     MOV A,C
PETLA_DZIESIETNE
        ADD C
     DCR H
     JNZ PETLA_DZIESIETNE
     ADD B
     ADD D
     RET
HALT
     HLT

WYPISZ
     XCHG                
     LXI H,ENTER
     RST 3
     LXI H,TXT_WYNIK
     DAA                        
     RST 3               
     MOV A,D             
     RST 4                
     MOV A,E            
     RST 4               
     HLT                 

ENTER    DB 10,13,'@'
TXT_START    DB 'MNOZENIE ASEMBLER',10,13,'@'
TXT_LICZBA1      DB 10,13,'PODAJ PIERWSZA LICZBE: @'
TXT_LICZBA2  DB 10,13,'PODAJ DRUGA LICZBE: @'
TXT_WYNIK    DB 'WYNIK: @'

RST 0 - start systemu
RST 1 - wydruk znaku z akumulatora
RST 2 - wczytanie znaku z klaw do akumulatora
RST 3 - wydruk łancucha z HL do '@'
RST 4 - wydruk dwoch znakow hex z akumulatora

Pozostało 580 znaków

2019-11-07 01:41
0

Gdzie takie procesory jeszcze są używane? W satelitach?


Na uczelniach, bo 8080 jest całkiem prosty do nauki assemblera. - hauleth 2019-11-07 10:52
To nie lepiej ARM @hauleth? - stivens 2019-11-07 18:01
@stivens: no nie do końca, RISC mają zredukowaną ilość instrukcji, ale to wcale nie oznacza, że są prostszą architekturą. Dodatkowo na procesorach z małą szyną danych zdecydowanie łatwiej się pracuje - https://www.youtube.com/watch?v=yl8vPW5hydQ, masz mało pinów i można wszystkiego nauczyć się na pamięć, przy ARMach tak nie ma. - hauleth 2019-11-08 00:02

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0