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