[asembler]Program konwertujacy liczby

0

Witam serdecznie,
mam napisać program w asemblerze, który zamienia podaną liczbę np z dziesiętnej na szesnastkową itp... z 10 na 9...
Proszę o wskazówki bo dopiero zaczynam i kompletnie nie wiem jak się do tego zabrać (Pod system Linux)
Z gory dziękuję i pozdrawiam

0

Było poszukaj

0
asembler napisał(a)

(Pod system Linux)

To ASM zależy od SO? :-O

0

właśnie, że szukałem tutaj i w google i nic chyba że nie umiem szukać :(
To moje początki na tym forum więc proszę o wsparcie...

0
somekind napisał(a)
asembler napisał(a)

(Pod system Linux)

To ASM zależy od SO? :-O
Tak. Inne funkcje systemowe (ba - inny sposób wołania!) ma przecież Linux (przerwanie 80h), Windows (funkcje importowane z dllek) czy inny OS...

0

Docelowy system operacyjny nie ma tu nic do gadania, przecież tak prosty algorytm nie potrzebuje zewnętrznych funkcji:

cyfry: db "0123456789ABCDEF"

dec2hex:
	mov  eax,[esp+4] ; liczba
	xchg esi,[esp+8] ; bufor
	mov  ecx,8
	sub  edx,edx
.go:
	rol  eax,4
	mov  dl,al
	and  dl,15
	mov  dl,[cyfry+edx]
	mov  [esi],dl
	add  esi,1
	loop .go
	xchg esi,[esp+8]
	ret  8

Przykład użycia:

main:
	%define liczba 3735943886
	%define wynik  0xDEADFACE
	; miejsce na wynik
	sub    esp, 12
	; wywołanie funkcji
	push esp
	push liczba
	call   dec2hex;, liczba, esp
	; zakończ wynik zerem
	mov    byte[esp+8],0
	; print
	cinvoke puts, esp
	add    esp,12
[cut]

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