logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Asembler - tablica. Wypisanie parzystych indeksów.

kcah 27 Cze 2009 16:20 5541 6
REKLAMA
  • #1 6710349
    kcah
    Poziom 10  
    Posty: 6
    Witam,

    Jestem początkującym programistą, a moja wiedza o programowaniu w asemblerze jest raczej znikoma. Dlatego zwracam się z gorącą prośbą o pomoc w poniższym zadaniu:

    "Napisz program, który wypisuje parzyste indeksy wprowadzonej tablicy na ekran"

    Bardzo proszę o pomoc
  • REKLAMA
  • #2 6710409
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    1. Jak wprowadzasz tablicę?
    2. Wypisanie indeksów trochę mało ma się do samej tablicy, gdyż jest to wyłącznie matematyka (i={2,4,..,n}, dla n<=rozmiar(tablica))
  • REKLAMA
  • #3 6710610
    kcah
    Poziom 10  
    Posty: 6
    Wprowadzanie danych:
    mov dx,offset bufor
    mov ah,0ch
    mov al,0ah
    int 21h
    jmp main

    gdzie bufor:
    bufor db 40,80 dup (?)

    a main:
    mov dx,offset menu
    mov ah,09h
    int 21h

    gdzie menu:
    menu1 db '1. Wprowadzanie tekstu do bufora',13,10
    menu2 db '2. Wyswietlanie tekstu bufora',13,10
    menu3 db '3. Czyszczenie bufora',13,10
    menu4 db '4.Wypisanie parzystych indeksow wprowadzonej tablicy na ekran',13,10
    menu5 db '<ESC> Wyjscie',13,10,'$'

    Chodzi o wypisywanie parzystych wartości wpisanej tablicy, czyli np. po wpisaniu jakisciagznakow, program wyświetli
    jksignkw
  • REKLAMA
  • #4 6710687
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    rejestr indeksowy zwiększasz o 2 w pętli. Do tablicy odwołujesz się poprzez ten rejestr indeksowy. Przenosisz znak do właściwego rejestru i wyświetlasz. Licznik pętli najlepiej ustawić na liczbę wprowadzonych znaków div 2 lub licznik również zwiększać o dodatkowy 1 przy każdym przebiegu pętli.
  • #5 6711433
    kcah
    Poziom 10  
    Posty: 6
    A jak mogę wyświetlić zawartość rejestru w konsoli, żeby nie wyświetlały się krzaki?
  • REKLAMA
  • #6 6711600
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Np binarnie - dzieląc dany rejestr przez dwa i wyświetlanie 0 lub 1 w zależności od stanu rejestru, który przechowuje resztę z dzielenia.
  • #7 6742059
    Remeknapr
    Poziom 33  
    Posty: 3799
    Pomógł: 138
    Ocena: 184
    kcah napisał:
    A jak mogę wyświetlić zawartość rejestru w konsoli, żeby nie wyświetlały się krzaki?


    Musisz zrobić konwersję znaków z rejestru na ASCII. Do znaków 0-9 dodajesz '0' (30h), a do znaków A-F dodajesz '7' (37h).

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy napisania programu w asemblerze, który wypisuje na ekran znaki znajdujące się pod parzystymi indeksami wprowadzonej tablicy znaków. Użytkownik wprowadza dane do bufora za pomocą przerwania 21h (funkcja 0Ch), a następnie program ma wyświetlić znaki z parzystych pozycji tablicy. Wskazano, że w pętli należy zwiększać rejestr indeksowy o 2, aby odwoływać się do parzystych indeksów tablicy, a następnie przenosić odpowiednie znaki do rejestru i wyświetlać je. Poruszono również problem konwersji wartości rejestru na czytelne znaki ASCII, aby uniknąć wyświetlania nieczytelnych symboli, sugerując dodanie wartości 30h dla cyfr 0-9 lub 37h dla liter A-F. Zaproponowano także podejście do wyświetlania zawartości rejestru w formie binarnej poprzez dzielenie i wyświetlanie reszty z dzielenia. Całość opiera się na podstawowych operacjach na rejestrach, adresowaniu tablic i obsłudze przerwań DOS w asemblerze.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA