Skip to content

Programista.NET

praktyk
WebDeveloper ASP.NET | ASP.NET MVC | PHP, SEO, AJAX
Ten blog ma służyć jako mój podręczny notatnik, a także narzędzie dzięki któremu usystematyzuje zbieraną na co dzień wiedzę.

Archive

Category: MASM

Zadania z terminu zerowego

1. Napisać funkcję asemblerową:
int asm_main(int pierwszy, int drugi)
która sprawdzi, czy oba parametry funkcji są tego samego znaku. Jeżeli pierwszy i drugi są jednocześnie dodatnie lub jednocześnie ujemne funkcja powinna zwrócić wartość 1. Jeżeli pierwszy i drugi mają przeciwne znaki (na przykład pierwszy jest dodatni a drugi ujemny) to funkcja powinna zwrócić 0. Dla ułatwienia zakładamy, że pierwszy i drugi nie będą przyjmowały wartości 0.

2. Napisać funkcję asemblerową:
unsigned int asm_main()
która zwróci liczbę, odpowiadającą tablicy znaków cyfry. Zakładamy – do wyboru – że w tablicy tej znajduje się ile znaków, lub że ciąg cyfr kończy się bajtem o wartości 0. Jeżeli przykładowo cyfry[] = „901” to tablica ta zawiera w praktyce bajty o wartościach 57, 48, 49, 0. Tym samym aby obliczyć liczbę odpowiadającą tej tablicy należy systematycznie pobierać bajty z tablicy, odejmować od nich 48 i tę różnicę dodawać do uprzedniego pośredniego wyniku pomnożonego przez 10, tak aby ostatecznie otrzymać wynik o wartości 901.
(rozwiązanie by R.Radzisz)

3. Napisać funkcję asemblerową:
int asm_main()
która sprawdzi, ile zer kończy binarną reprezentację zmiennej liczba. Jeżeli przykładowo liczba = 96 to jej binarna reprezentacja ma postać:
0000000001100000
Ponieważ liczba ta ma na końcu 5 zer, funkcja powinna zwrócić wartość 5.

continue reading…

Kilka algorytmów które mogą przydać się na przyszłość
continue reading…

W poniższym tutorialu utworzymy przykładowy projekt C/ASM za pomocą Visual Studio 2008.

Nasza aplikacja będzie mnożyła dwie liczby i zwracała wynik na ekranie.

W pierwszym kroku dodajemy nowy projekt Visual C++/Win32/Win32 Console Application

continue reading…

Autor: Dawid Farbaniec.

Jeżeli poniższy artykuł jest dla Ciebie pomocny, możesz docenić pracę autora kupując jedną z jego książek tutaj

Co będzie potrzebne do programowania w assemblerze?

Potrzebny nam kompilator np MASM od Microsoftu, edytor tekstu i debugger. Jednak wygodnie jest korzystać z rozbudowanego środowiska VisualStudio 2008 które zawiera wszystko a nawet więcej niż potrzebujemy na nasze skromne potrzeby.

Teraz wypada napisać dlaczego Assembler? Wiele osób pewnie już słyszało, że programy pisane w języku Assembler słyną z tego, ze są małe i szybkie. Są takie, gdyż mają one taki kod, jaki stworzymy, a nie taki jak kompilator „przetłumaczy”, nie posiadają również zbędnych bibliotek.
Programując w Assemblerze pozna się jak działa procesor, jak program jest zbudowany i inne rzeczy o których nie ma pojęcia programista np. takiej Javy. Dlatego każdy szanujący się programista powinien poznać przynajmniej podstawy Assemblera.

I. Systemy liczbowe

Do programowania w Assemblerze przydatna będzie na pewno wiedza o dwóch dodatkowych systemach liczbowych (prócz dziesiętnego) takich jak: dwójkowy (binarny), szesnastkowy (heksadecymalny). Opiszę krótko te dwa systemy:

  • binarny – podstawą systemu jest są dwie cyfry: 0 i 1. W tym systemie działa komputer, w tym systemie jest zapisywany kod programu. Liczby w tym systemie przyjęło się zapisywać z literą b na końcu (np. 10001011b).
  • heksadecymalny – podstawą systemu są cyfry od 0 do 9 i litery od A do F (w sumie szesnaście znaków). Dla człowieka o wiele bardziej wygodny od systemu binarnego. Liczby w tym systemie przyjęło zapisywać się z literą h na końcu (np. 23E0B3h).

To wszystko na temat systemów, jak ktoś chce może doczytać coś więcej o nich, a także nauczyć się je ręcznie przeliczać. Jednak programując szybciej i wygodniej jest przeliczać te systemy za pomocą kalkulatora.
continue reading…