Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Assembler - Wczytanie liczby od 0 do 255

TheSevcio 07 Cze 2016 12:40 2163 8
  • #1 07 Cze 2016 12:40
    TheSevcio
    Poziom 8  

    Witam. Piszę program, który ma sprawdzać podzielność liczby od 0 do 255, przez 7. Działa, ale pozwala wczytać jedynie liczbę jednocyfrową. Jak to powiększyć?

    Kod: x86asm
    Zaloguj się, aby zobaczyć kod

    0 8
  • Pomocny post
    #2 07 Cze 2016 22:09
    JacekCz
    Poziom 36  

    Generalny schemat w pseudokodzie

    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    Przypilnuj nazw zmiennych. Wydaje mi się że piszesz 'liczba' a myślisz 'cyfra' i źle się potem myśli.

    0
  • #3 27 Lip 2016 11:54
    sakuwbarakushow
    Warunkowo odblokowany

    Może tak:

    W c++ wyglądałoby to np. tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    A w Assembler:

    Kod: x86asm
    Zaloguj się, aby zobaczyć kod


    Pewnie mało efektywnie ale tak by kompilator przetłumaczył ten konkretny kod, te konkretne rozwiazanie

    0
  • #4 27 Lip 2016 14:40
    JacekCz
    Poziom 36  

    sakuwbarakushow napisał:
    Może tak:

    W c++ wyglądałoby to np. tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod

    (C++ na nieszczęście akceptuje mieszani typów)

    sakuwbarakushow napisał:

    A w Assembler:
    ...
    Pewnie mało efektywnie ale tak by kompilator przetłumaczył ten konkretny kod, te konkretne rozwiazanie


    Nie rozumiem, co kombinujesz z tym asemblerem. Tu taki, tam, zupełnie inny (korzystając z b. standardowej C++ - jaki to assembler). Bez sensu.
    Masz się "wykazać"?

    0
  • #5 23 Sie 2016 12:19
    lukasz20cm
    Poziom 5  

    Poniższy listing kodu jest na pewno działający. Kompilujesz to za pomocą terminala Ubuntu 14.04 lub jakiejkolwiek innej dystrybucji, w skutek wywołania w nim polecenia gcc plik.c -save-temps -o program , gdzie plik.c to twój plik.c. W folderze, w którym znajduje się plik.c znajdzie się plik.s, który jest assemblerową wersją programu. Elo.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #6 23 Sie 2016 19:26
    JacekCz
    Poziom 36  

    lukasz20cm napisał:
    Poniższy listing kodu jest na pewno działający.


    Jest przypadkowo chodzący lub wcale, zależy.

    Niby piszesz getch() ale nigdy nie jest osiągane. Domyślam się, że program się kończy przez zabicie.
    Warunek logiczny na zakres jest obsłużony nieoptymalnie.
    getch() jest nieprzenośną funkcją, i nieprawda, że to się kompiluje w jakimkolwiek środowisku

    I ortograf.

    0
  • #7 24 Sie 2016 08:35
    sakuwbarakushow
    Warunkowo odblokowany

    @
    JacekCz

    Jak tak się mądrzysz i peszysz to wstaw lepszą wersję CPP i Assembler ;]

    0
  • #8 24 Sie 2016 09:04
    JacekCz
    Poziom 36  

    sakuwbarakushow napisał:
    @
    JacekCz

    Jak tak się mądrzysz i peszysz to wstaw lepszą wersję CPP i Assembler ;]


    Ja się nie peszę (bo tak słowa użyłeś).
    Kryształowa kula i Pierwotny Pytający milczy, jaki assembler jest oczekiwany w szkole Pytającego. Cros kompilacja z C/CPP -> ASM jest totalnie bez sensu ze wszystkich względów (dydaktycznych, technicznych itd). Ostatni prawdziwy asembler w tym wątku to pierwsze pytanie (na DOS 16 bit)

    Zadań szkolnych nie robię. Załączony kod C tez nie jest gotowcem go wklejenia, ryb nie daję, tylko wędki. Jest do wykorzystania przez kogoś, kto sobie generalnie radzi.

    PS. skłoniłeś mnie do skopiowania odp jakiej udzieliłem na priv. W sumie żałuję, mam generalną pomagania zasadę tylko na forum.

    lukasz20cm napisał:
    Jak można by było optymalnie sprawdzić zakres wg. Ciebie? Przepraszam za wiele wiadomości.


    Tylko wyjątkowo udzielam na priv.

    Nie obraź się, początkujący programiści łatwo widzą bezbłędność swojego kodu. A C nie jest bezpiecznym językiem, jest pełen m.in Undefined Behaviours czy konieczności 'ręcznego' pilnowania wielu spraw.

    Takie coś sobie wyobraziłem. Nie było kompilowane. Nawet nie chodzi na większości architektur o oszczędność kilku bajtów, ale jak są "dwie sztuki" podobnego kodu, z czasem przez korektę jednej wkradnie się błąd.

    Kod: c
    Zaloguj się, aby zobaczyć kod



    PS. sporo razy byłem w roli wspól-zatrudniającego programistów. osobiście nie wierzę w mit "dobry programista ale robi ortografy", czy "dobry programista dyslektyk/dysgrafik" (totalna bzdura) dla mnie to świadczy o jakimś braku, skutkującym na kodzie niższej jakości. Takie CV leciały w kosz.
    To taka rada jakbyś budował ścieżkę kariery.

    0
  • #9 25 Sie 2016 10:31
    arnoldziq
    Moderator Programowanie

    Temat wyczerpany.
    Zamykam.

    0