Public feed #380813

Unnamed

public text v1 · immutable
Raw Edit
·published 2007-03-04 11:59 UTC
rendered paste body
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