Skocz do zawartości
Pjetal

Asembler - Liczba Znaków W "stringu"

Rekomendowane odpowiedzi

Mam takie coś :

 

liczbastr db 9,?,10 dup('$') ; zmienna napisowa

 

.code

start:

 

mov ax,seg napis

mov ds,ax

lea dx,liczbastr ; ustaw liczbe na dx

mov ah,0Ah ;

int 21h ; wczytaj liczbe (napis) z klawiatury

 

 

.....i czy wiecie może jak z tego dostać wartość ukrytą pod "?" ??? bo chcę zrobić coś takiego że zależnie od tego ile znaków wpisze z klawiatury tyle razy sie wykona jakaś pętla czyli pod CX chcę wrzucić tą liczbę znaków ile ma napisana przeze mnie wartość. Kombinowałem na wszystkie spsosoby m.in. tak :

 

mov dx,offset liczbastr

inc dx

mov cx,dx

 

ale po tym mi wykonuje pętle ZAWSZE niezależie od tego ile znaków wpisze 63 razy ?? Pomóżcie mi PLEASE

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

najbardziej zakrecony opis prostej czynnosci jaki widzialem, moglbys wykladac u mnie na wydziale :P

 

jezeli dobrze zrozumialem chcesz policzyc dlugosc stringai zwrocic ja do CX

 

jedno rozwiazanie:

lea dx, liczbastrxor cx, cx ; cx = 0petla:cmp byte ptr [dx], '$'je okinc dxinc cxjmp petla

a jesli z gory znasz dlugosc to mozna tez tak kombinowac

liczbastr db '23847239', '$'liczba_len equ $ - liczbastr - 1mov cx, liczba_len

nie pamietam jak to tbylo w 16 bitowych, moze bedziesz musial zamiast [dx] uzyc jakiegos ds:[si] albo przynajmniej ds:[dx] do adresowania..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...