Public feed
#380813
konwertuj_znaki_cyfr_na_liczbe:
;wejscie: ax: wkaznik do tekstu
;wyjscie: ax: przerobiona liczba
push bx ;zachowanie bx
push si ;zachowanie si
push cx ;zachowanie cx
mov si, ax ;utworzenie wskaznika
xor bx, bx ;zeruj bx
xor ax, ax ;zeruj ax
mov cx, 10
.next_konwertuj_znaki_cyfr_na_liczbe:
mov bx, [si] ;przeniesienie znaku do al
cmp bx, 0 ;jesli bx to 0
je end_konwertuj_znaki_cyfr_na_liczbe ; koncz
mul cx
add ax, bx
sub ax, 30h
inc si;
jmp .next_konwertuj_znaki_cyfr_na_liczbe
end_konwertuj_znaki_cyfr_na_liczbe:
pop si ;przywroc si
pop bx ;przywroc bx
ret
konwertuj_liczbe_na_znaki:
;wejscie ax=liczba do zamiany
;wyjscie ax=adres do napisu cx=jego dlugosc
push si ;odlozenie si
push bx ;odlozenie bx
push dx ;odlozenie dx
xor cx, cx ;zerowanie cx ktore bedzie licznikiem
mov bx, 10 ;dzielnik do bx
.next_konwertuj_liczbe_na_znaki:
cmp ax, 10 ;porownujemy cx z 10d
jb end_konwertuj_liczbe_na_znaki ;jesli nizsze konczymy
div bx ; oddzielamy liczbe jednosci
add dx, 30h ;zmieniamy oddzielona liczbe na kod ASCII tej liczby
mov si, dx ; przenosimy znak do bufora
inc cx ;zwiekszamy licznik o 1
inc si ;nastepny znak
xor dx, dx ;zerujemy dx
jmp .next_konwertuj_liczbe_na_znaki ;powtorz
end_konwertuj_liczbe_na_znaki:
add ax, 30h ;zmiana ostatniej cyfry
mov si, ax ;zapisanie ostatniego znaku
inc cx ;ustawienie wskaznika na nastepne miejsce
inc si ;nastepny znak
pop dx ;zwracanie dx
pop bx ;i bx
pop si ;oraz si
ret ;koniec