Wczytywanie czterocyfrowej liczby (asm)

0

Mam pytanie takie:

Jak powinna wyglądać procedurka wczytująca z klawiatury liczbę cztero- lub mniej cyfrową. Klopot w tym ze nie wiem za bardzo jak to przelozyc assemblerowi zeby nie pobieral wiecej niz czterech cyfr.

Dziękuje za wszelką pomoc.
Pozdrawiam

0

No powiedz tylko jeszcze w jakim asmie. Asm16? czy win32asm?

0

Chodzi o Asm16

0

[źle]
@1:
mov cx, 4
mov ah, 01h ;pobiera 1 znak do al
int 21h
mov dx, al
dec cx
jnz @1

Od razu mówię, że nie sprawdzałem :)
[/źle]

[dopisane]
Oczywiście, że to co napisałem to bzdury :) Tak to jest jak człowiek się spieszy. Niżej jest prawidłowe rozwiązanie

0

@1:
mov cx, 4
mov ah, 01h obiera 1 znak do al
int 21h
mov dx, al
dec cx
jnz @1

otóż Dryobates sie pomylił. Etykieta @1 powinna się znaleźć po instrukcji mov CX, 4:

mov CX, 4
mov DX, OFFSET zmienna
@1:
mov AH, 01h
int 21h
add DX, 4-CX
mov [DX], AL
dec cx
jnz @1

teraz pod adresem [DS:zmienna] masz 4-bajtowy ciąg ASCII, który musisz zamieniać na liczbę, ale o tym w następnym odcinku... :-)

0

Tak się zastanowiłem nad tym kodem, i doszedłem do wniosku, że nie o to chodziło. Wczytanie 4-cyfrowej liczby, a nie ciągu znaków. Dziś już na to troszkę za późno, ale jutro napiszę jak od razu dodawać cyfry...

[dopisane]

Optymalne to to nie jest, ale działa :)

[b]mov[/b] cx, 4
[b]xor[/b] ax, ax
@1:
[b]mov[/b] dx, 0Ah
[b]mul[/b] dx
[b]mov[/b] bx, ax
[b]mov[/b] ah, 01h
[b]int[/b] 21h
[b]and[/b] ax, 000Fh
[b]add[/b] bx, ax
[b]mov[/b] ax, bx
[b]dec[/b] cx
[b]jnz[/b] @1

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