nyac55 Posted October 28, 2013 Report Share Posted October 28, 2013 Witam. Mam prośbę ,aby ktoś zamieścił jakieś materiały wraz z komentarzami odnośnie pisania pierwszych programów ,a między innymi:1. Pobieranie klawiszy z klawiatury2. Sprawdzanie ,blokowanie znaków ,wyświetlanie tekstów i znaków ,wprowadzanie ich do zmiennych ,czyszczenie ekranu.__________3.Program ,który realizuje : Wprowadź 10 cyfr ,nie działa na inne znaki. Przycisk q(zakończy wprowadzanie znaków) i zlicza.Jeśli ,ktoś dałby radę to chętnie skorzystam. [Pilnie potrzebuję tych materiałów] ,ponieważ mam jutro kartkówkę... Link to comment Share on other sites More sharing options...
[Ekspert] Mormegil Posted October 28, 2013 Report Share Posted October 28, 2013 Chodzi Ci o obsługe konsoli? Tu masz link do funkcji z WinAPI.Blokowanie znaków, nic mi nie mówi. Wczytywanie wartości i wyświetlanie najprościej chyba zrobić scanf'em i printf'em.Sprawdzanie czy znak jest cyfrą? Trzeba zwyczajnie porównać z '0', '1', itd. Znaki od 0 do 9, powinny być ułożone kolejno w tablicy znaków, co pozwala ograniczyć się do warunku '0' <= znak <= '9'. Link to comment Share on other sites More sharing options...
nyac55 Posted November 4, 2013 Author Report Share Posted November 4, 2013 Obecnie muszę wykonać program ,który wyświetla na ekranie: Dana1 = - Dana2 = Wynik =Obok danej 1 ma się pojawić: liczba w szesnastkowym i w nawiasie kwadratowym [liczba w ósemkowym]. My dane te musimy wprowadzić z klawiatury w systemie U2 i od danej 1 odejmuje daną 2. Wynik zwraca w binarnym.Program ma reagować na następujące klawisze:- <L> - wybór dane1- <P> - wybór dane2- <W> - wykonanie operacji- <1>, <0> - wprowadzenie wartości danej- <Enter> - akceptacja danej- <BS> - korekta- <Esc> - wyjście z programu(Z chwilą wprowadzenia danej z linii wyświetlamy ją w stałym miejscu ekranu wkodzie szesnastkowym, a w nawiasach [] w kodzie ósemkowym. Na ekraniezmieniamy tylko te pola które uległy zmianie. W środku między danymi naekranie umieszczamy znak operacji.Na początku programu daną1 oraz daną2 zerujemy i wyświetlamy je na ekranie apolu wyniku spacje. Zmiana dowolnej danej ?kasuje? na ekranie poprzedni wynik.Dla operacji arytmetycznych wynik operacji wyświetlamy w stałym miejscu ekranuw kodzie szesnastkowym, a w nawiasach [] w kodzie ósemkowym. Dla wynikuoperacji z błędem (np. dzielenie przez 0) lub przekroczymy zakres liczbywyświetlamy w polu wyniku ?***?.)>... ? Ktoś pomoże?? Mam też problem natury takiej ,że nie wiem jak zacząć. Zainstalowałem Virtual Box'a by uruchomić FASM'a ,początkowy fragment się kompiluje ,ale jak chcę go uruchomić to nic z tego. Może trzeba jakoś zatrzymać ekran? Zmienne ,należy tworzyć w dyrektywach?? Można prosić o jakiś przykład tego zabiegu... i tego jak rozpocząć program w FASM'ie?? Link to comment Share on other sites More sharing options...
[Ekspert] Mormegil Posted November 5, 2013 Report Share Posted November 5, 2013 Zmienną typ unsigned int tworzy się tak: add 4, %spZmienną unsigned int na stosie zeruje się tak:xor %eax, %eaxmov %eax, [%sp - 4]Parametr funkcji przekazuje się tak: push %eaxOczywiście zapis należy traktować jak pseudokod. Każdy asembler ma własną formę zapisu.Po co Ci virtualbox? Nie łatwiej użyć asemblerów działających pod windowsem? Z mingw albo microsoftowego? Link to comment Share on other sites More sharing options...
nyac55 Posted November 5, 2013 Author Report Share Posted November 5, 2013 Po co Ci virtualbox? Nie łatwiej użyć asemblerów działających pod windowsem? Z mingw albo microsoftowego?Czy takie coś zadziała pod 64-bitowym Windows 8? Link to comment Share on other sites More sharing options...
[Ekspert] Mormegil Posted November 6, 2013 Report Share Posted November 6, 2013 http://msdn.microsoft.com/en-us/library/vstudio/afzk3475.aspx Link to comment Share on other sites More sharing options...
nyac55 Posted November 11, 2013 Author Report Share Posted November 11, 2013 O co chodzi z tym linkiem? Z tej strony nie udało mi się pobrać MASM'a jednak pobrałem z innej ,podczas instalacji były 2 błędy ,lecz je zignorowałem. Program uruchamia się ,lecz nie da się uruchomić napisanego kodu (skompilować też). Link to comment Share on other sites More sharing options...
Shaker Posted November 11, 2013 Report Share Posted November 11, 2013 Od siebie mogę zaoferować te materiały(link będzie aktywny do piątku lub dopóki nie pobierzesz): https://www.dropbox.com/sh/7myvp5h7l1bqllf/Oxc4OwrNTRZnajduje się tam też obraz wirtualnej maszyny DOSa(pobierz vMware Player, a no i jak wczytasz to wybierz opcję 'i copied it') dzięki której można uruchomić podane dalej przeze mnie programy do Assemblera(które już są tam wgrane). Programy takie, jak AFD 1 i 2, czy też NASM(nie działają pod x64, więc maszyna wirtualna XP, by się przydała, jeśli nie wystarczy ten obraz DOS-a), które będą pewnie przydatne.Wszystkie materiały można kopiować, jednak proszę zbytnio nie rozpowszechniać.BTW. Na zajęciach nie masz czasem możliwości zaopatrzenia się w podobne programy itd.? Link to comment Share on other sites More sharing options...
nyac55 Posted November 11, 2013 Author Report Share Posted November 11, 2013 Dzięki. Ostatecznie dzisiaj udało mi się uruchomić FASM'a na 2 sposoby. Lecz nie na laptopie studenckim tylko komputerze stacjonarnym ,który jest w domu. 1 sposób to metoda działania FASM'a pod windows ->działa pod każdym nawet 64-bitowym. 2 metoda to z użyciem VirtualBOx'a i emulowanie XP. Lecz chyba będę musiał się przerzucić na tą 1 metodę. Dzięki za materiały ,przydadzą się do nauki języka.______________Odnośnie zajęć to: dostaliśmy jakieś materiały ,przykładowe pliki z programami i obecną opisaną tu metodę 1 pod Windows'a. Zanim poznałem tą metodę miałem liczne problemy na laptopie związane z próbą uruchomienia jakiegokolwiek programu. Dopiero dzisiaj się udało._+_+_+_+_+_+_+_+_Może mi ktoś jeszcze podać skuteczną metodę uruchamiania FASM'a na DosBox'ie lub wersję FASM'a do ściągnięcia od razu z skonfigurowanym DOSBOX'em tak ,żeby od razu po uruchomieniu działało. Chodzi mi o to ,żeby programy dało się łatwo pisać:segment entry:startmov ah,9int 21hPonieważ w wersji pod Windows jest to trudniejsze ,bardziej skomplikowane i mniej zrozumiałe. Link to comment Share on other sites More sharing options...
nyac55 Posted November 14, 2013 Author Report Share Posted November 14, 2013 Obecnie udało mi się osowoić z FASM'em pod emulatorem+windows XP (działa ,kompiluje się itd.)Mam małe pytanie ,pokażę na kodzie:format MZentry main:startstack 100hsegment mainstart: mov ax,dane ;ustalnie segmentu danych mov ds,ax <- czym w tym wypadku jest ds??;wyswietlenie 1 tekstu (przerwanie 21h,funkcja 09h, w dx offset tekstu) mov dx,dana1 mov ah,09h int 21h;wyswietlenie 1 znaku (przerwanie 21h,funkcja 09h, w dx offset tekstu) mov dx,znak1 mov ah,09h int 21h;wyswietlenie 2 tekstu (przerwanie 21h,funkcja 09h, w dx offset tekstu) mov dx,dana2 mov ah,09h int 21h;wyswietlenie 2 znaku (przerwanie 21h,funkcja 09h, w dx offset tekstu) mov dx,znak2 mov ah,09h int 21h;wyswietlenie 3 tekstu (przerwanie 21h,funkcja 09h, w dx offset tekstu) mov dx,wynik mov ah,09h int 21h;czekanie na wcisniecie klawisza (przerwanie 21h, funkcja 01h, kod ASCII wcisnietego klawisza zwrócony zostaje w rejestrze AL) mov ah,01h int 21h;zakonczenie programu (przerwanie 21h, funkcja 4ch) mov ah,01h int 21hsegment dane dana1 db 'Dana 1 =',10,13,'$' znak1 db ' -',10,13,'$' dana2 db 'Dana 2 =',10,13,'$' znak2 db ' =',10,13,'$' wynik db 'Wynik =',10,13,'$' Link to comment Share on other sites More sharing options...