Konwersja hex na dec na procesorze Intel 8080

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

0

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

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