ASK LAB5 Mnozenie

background image

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Laboratorium: Mnożenie win/MFC
Krok 1.

Uruchamiamy Microsoft Visual Studio 2005. Otwieramy nowy projekt

(menu-File-New-Project). Konfigurujemy jak na rys.1. Projekt umieszczamy w
katalogu C:\users\inazwisko, gdzie nazwisko to pierwsza litera własnego imienia i
nazwisko.

Rys.1. Ustawienia przy tworzeniu nowego projektu

Krok 2.

Konfigurujemy wzorzec projektu tak jak na rys.2. (typu Single Document)

Rys.2. Konfiguracja projektu

Kontakt:

mszaber@wi.ps.pl

,

mkapruziak@wi.ps.pl

1

background image

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Krok 3.

Struktury klas i przykłady. W oknie Class View znajdują się klasy m.in.

do tworzenia aplikacji (CMultiplicationApp), okienek, menu (CMainFrame) oraz
klasa do tworzenia widoku na którym można rysować (CMultiplcationView).
Wykonujemy kompilację programu wciskając przycisk F5 i otrzymujemy puste
okienko:

Rys.3. Okienko wynikowe otrzymane w wyniku kompilacji

Przykładowo, w celu maksymalizacji okienka w klasie CMultiplicationApp dla
metody InitInstance w m_pMainWnd

Window(SW_SHOW) zastępujemy

SW_SHOWMAXIMIZED jak na rys.4.; Ponownie wykonujemy kompilację.

Rys.4. Przykład maksymalizacji rozmiaru okienka

W celu wyrysowania linii oraz ciągu znaku w klasie CMulitiplicationView
wybieramy metodę OnDraw i wpisujemy następujące wywołania:

Kontakt:

mszaber@wi.ps.pl

,

mkapruziak@wi.ps.pl

2

background image

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Rys.4. Przykład maksymalizacji rozmiaru okienka

komentarz:
Typ CString pozwala na deklarację w zmiennych ciągów znaków. Program rysuje linie za przy
użyciu metod: MoveTo(x,y) i LineTo(x,y) – gdzie x i y to współrzędne linii. Metoda TextOutW() –
pojedynczą linię tekstu.

Krok 4.

Operacja dodawania dwóch wartości liczbowych przy zastosowaniu

wstawki asemblerowej.

Rys.5. Wstawka asemblerowa w Visual C++

Kontakt:

mszaber@wi.ps.pl

,

mkapruziak@wi.ps.pl

3

background image

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

komentarz: wstawkę asemblerową rozpoczynamy od słowa __asm, a ciąg instrukcji do
wykonania pomiędzy klamrowymi nawiasami {};

Krok 5.

Wykonanie operacji mnożenia stałej wartości liczbowej 10. Mnożenie

dowolnej wartości liczbowej przez wartość stałą 10 (a

10) rozpisujemy następująco:

a

10 = a

(8 + 2) = a

8 + a

2 = a

2

3

+ a

2

1

= a

<<

3 + a

<<

1

Rys.6. Operacja mnożenia

a

10

Krok 6.

Operacje logiczne: AND, OR i XOR.

Instrukcja AND jest stosowana do maskowania argumentów np. ”polecenie
wyzerować w ax bit numer n”. Stosuje się wówczas instrukcję AND z odpowiednią
maską, w której bit n jest wyzerowane, a pozostałe są równe 1. Instrukcja AND
wpływa na znaczniki np. ZF (znacznik zera) : 1 – gdy wynik operacji AND jest
zerem, 0 – jeśli wynik jest różny od zera.
Instrukcja OR jest wykorzystywana jest do ustawiania bitów w argumencie, np.
„polecenie ustawić w bx bity 2, 4, 6 nie zmieniając pozostałych”, to wykorzystujemy
w operacji OR maskę, w której bity 2, 4 i 6 będą równe 1, natomiast pozostałe będą
zerami.
Instrukcja XOR jest wygodna do odwracania bitów, np. „polecenie odwrócenia/
zanegowania bitów 1, 2, 7 w rejestrze bx, nie zmieniając pozostałych bitów ” , to
użyjemy w operacji XOR maski z ustawionymi (równymi 1) bitami 1, 2 i 7, a
pozostałymi równymi zero.
W kodzie ASCII litery małe od wielkich różnią się tylko tym, że mają ustawiony bit
numer 5. Tak więc po wykonaniu poniższego kodu w rejestrze al będzie kod dużej
litery ‘A’:

Kontakt:

mszaber@wi.ps.pl

,

mkapruziak@wi.ps.pl

4

background image

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Rys.7. Zamiana ‘a’ na ‘A’

Przykład zastosowania OR, do zamiany wielkiej litery ‘A’ na małą ‘a’ (rys.8).

Rys.8. Zamiana ‘A’ na ‘a’

Informacja dodatkowa:
Przykładowo, chcemy sprawdzić, czy bit numer 3 rejestru al jest równy 1 czy 0 ? Instrukcja AND
ustawia odpowiednio flagi procesora, więc rozwiązaniem będzie kod:

and al, 0x08
jz bit_3_byl_zerem
; jnz bit_3_nie_byl_zerem

Instrukcja AND niszczy zawartość rejestru, oprócz interesujących nas bitów. W celu zachowaniu
rejestru stosujemy instrukcję TEST. Działa ona identycznie jak AND, ale nie zapisuje wyniku
działania. Po co nam więc taka instrukcja? Otóż, wynik nie jest zapisywany, ale TEST ustawia dla
nas flagi identycznie jak AND.

test al, 0x08
jz bit_3_byl_zerem
;jnz bit_3_nie_byl_zerem

Kontakt:

mszaber@wi.ps.pl

,

mkapruziak@wi.ps.pl

5

background image

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Krok 7.

(praca samodzielna) Dany jest 8-bitowe ‘a’ i ‘b’, a wynik to 16 bitowy

zapis w zmiennej ‘wynik’ . Proszę wykonać operację mnożenia.

Kontakt:

mszaber@wi.ps.pl

,

mkapruziak@wi.ps.pl

6


Wyszukiwarka

Podobne podstrony:
ask lab5
WDA Lab5 Sprawko ask, WAT, semestr III, Wprowadzenie do automatyki
lab5 prezentacja
Tabliczka mnożenia
ASK w2 id 70602 Nieznany (2)
C lab5
li ask zz ge3 5E2JZTQ5PYH7Q3CI6HVII64U3BJBL6JHS7BPSTA
lab5 Proxy
ZG lab5 6 id 589867 Nieznany
ZwUE lab5
ASK w1
ASK m1
ASK 11 Autoryzacja
Lab5 Analiza sygnalu mowy Lab5 Nieznany
Podstawy Robotyki lab5
Architekrura SystemAlw Lab5 (1) Nieznany
Lab5
Lab5, poch1

więcej podobnych podstron