Operacje na tablicach - Assembler

0

Siema!

Muszę napisać program w asemblerze, który przetwarza tablicę max 20 bajtów. Program ma wyświetlać tablicę w takiej postaci, jak była wprowadzona wprost oraz w porządku przeciwnym (na odwrót). Czego tak naprawdę brakuje? Jakieś wskazówki.

np.: a b c d e f g h i j 0 1 2 3 4 5 6 7 8 9 ( wprost)
9 8 7 6 5 4 3 2 1 j i h g f e d c b a ( na odwrót)
program przyjmuje dane z konsoli i wyświetla je wprost ( bez odwracania) lub program nie przyjmuje danych z konsoli tylko wyświetla wprost oraz porządku odwrotnym tablicę zdefiniowaną w pamięci;

3

W petla.asm masz kod który wczytuje znaki do pamięci przy użyciu pętli a potem je wypisuje.
Jesteś w stanie zlokalizować te miejsca?

0

@jurek1980:

Ja rozumiem to tak, że masz na myśli o przedział - wyświetlanie znaków, czyli

;wyswietlenie znakow
       mov cx, 10h
       mov ah, 02h
2

Masz kod z pętlami. Plik petla.asm o ten pytałem.
Tam są dwie pętle jedna do wczytywania, druga do wypisywania.

0

@jurek1980:

       ;wczytanie znakow
       mov dx, offset bufor
       mov di, dx
       mov ah, 01h
wpisuj:
       int 21h
       mov ds:[di], al
       inc di
       cmp al, 13 ;czy enter?
jnz wpisuj

       mov ax,4c00h
       int 21h

0

Jeżeli zgadza się co miałem na myśli z wiadomością wyżej to co następnie trzeba zmienić, aby napisać wyświetlił się ponownie?

XYZ1.png

0

Ktoś ma pojęcie w jaki sposób mogę połączyć dwie funkcje w jedno ?? Mam na myśli, że chce jakoś połączyć zastąpić funkcje 10 i 9, aby prowadzony łańcuch znaków został ponownie wyświetlony po wprowadzeniu ????????????????????????????

1

w jaki sposób mogę połączyć dwie funkcje w jedno

Nie łącz tylko zawołaj jedną po drugiej albo zawołaj jedną z drugiej. Ale obawiam się że główny problem polega na tym ze to nie twój kod i nie masz pojęcia co się w tym kodzie dzieje...

0

**Zauważyłem (dopiero), że mój ciąg nie jest zdefiniowany, więc mogę w taki to sposób napisać ? **

mov dx offset Inscription 

**Plus muszę użyć bufored input aby wypełnić bufor klawiaturę. Następnie wyświetlić zawartość bufora mogę za pomocą ? **

int21 
mov ah, 9 

1

Sprawdź, najlepiej pod debugerem. Zapoznaj sie też z instrukcjami call i ret które pozwalają ci użyć kawałka kodu zdefiniowanego w innym miejscu...

0

oraz w porządku przeciwnym (na odwrót). Czego tak naprawdę brakuje? Jakieś wskazówki.

Do "na odwrót" możesz np. użyć stosu, to działa jak "bufor FILO".
https://pl.wikipedia.org/wiki/Stos_(informatyka)

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