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

Assembler 80x86- konwersja liczb na system szesnastkowy

Object Storage Arubacloud
0 głosów
414 wizyt
pytanie zadane 30 października 2018 w Assembler przez annonymouzinho Nowicjusz (140 p.)

Witam. Dostałem za zadanie napisać program w assemblerze, który zamienia podane przez użytkownika liczby w linii poleceń na 16-bitowy system szesnastkowy (U2). Miałem dopiero 3 zajęcia z assemblera i tak średnio to ogarniam... Oczywiście dostałem jakieś tam przykładowy program, który zamienia podaną już z góry liczbę w systemie dziesiętnym na 8-bitowy system szesnastkowy.
I właśnie chciałem od tego przykładu sobie powoli zacząć projekt, który muszę zrobić. Jednak już na samym początku pojawił się problem, z którym nie potrafię sobie poradzić...
Otóż na samym początku chciałem ten przykładowy program przerobić tak, aby zamiast przeliczać podaną już wcześniej w zmiennej stałą liczbę, program pobierał ją od użytkownika, a następnie zamieniał.
Tak też zrobiłem, pobrałem znak, który zapisał się w rejestrze al, potem przerzuciłem tą liczbę to rejestru bl, ale niestety wyniki nie są poprawne...
Poniżej znajduje się cały kod z programu. Póki co jest możliwość wprowadzenia tylko liczby jednocyfrowej i nie ma sprawdzenia czy mieści się w przedziale itd..
Jeśli zamiast mov bl, al pojawi się tam mov bl, [zmienna] to oczywiście wszystko działa jak należy. Jeśli ktoś potrafi mi pomóc to bardzo bym prosił i odpowiedź.

 

sts segment stack 'stack'
        db 512 dup(0)
sts ends         
                      
dane segment          
	tekst db 'Wartosc szesnastkowa: $'
	;zmienna db 30
dane ends                    

include macros.asm
                 
main segment   
  assume cs:main,ds:dane,ss:sts
start:  
P486N   
	mov ax,seg dane  
	mov ds,ax    

	
	wyswietl tekst
	
wysw_hex:

		pob_znak
		
		mov bl, al                                         ;tak nie działa
		;mov bl,[zmienna]                            tak działa
		shr bl,4						;podział zmiennej na 4 pola bitowe
		cmp bl,10
		jb ety1
		add bl,55					;kody ascii liter
		jmp ety2
		

ety1:
		add bl, 30h
		
		
ety2:
		mov dl,bl					;wysw_znak
		mov ah,2
		int 21h 
		
		mov bl, al
		;mov al, [zmienna]		;druga cyfra hex
		and bl, 0Fh
		cmp bl, 10
		jb ety3
		add bl, 55					;kody ascii liter
		jmp ety4
		
		
ety3:
		add bl, 30h
		
		
ety4:
		mov dl,bl					;wysw_znak
		mov ah,2
		int 21h 
		

;proc funkcja

	;ret
;endp

main ends        
end start

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 1,638 wizyt
pytanie zadane 27 października 2017 w Assembler przez Bish0p Obywatel (1,940 p.)
0 głosów
0 odpowiedzi 118 wizyt
pytanie zadane 17 marca 2019 w Assembler przez kamyk2 Początkujący (420 p.)
0 głosów
0 odpowiedzi 952 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...