Wszelkie prawa zastrze one. Nieautoryzowane rozpowszechnianie ca o ci lub
fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione.
Wykonywanie kopii metod kserograficzn , fotograficzn , a tak e
kopiowanie ksi ki na no niku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki wyst puj ce w tek cie s zastrze onymi znakami firmowymi
b d towarowymi ich w a cicieli.
Autor oraz Wydawnictwo HELION do o yli wszelkich stara , by zawarte
w tej ksi ce informacje by y kompletne i rzetelne. Nie bior jednak adnej
odpowiedzialno ci ani za ich wykorzystanie, ani za zwi zane z tym
ewentualne naruszenie praw patentowych lub autorskich. Autor oraz
Wydawnictwo HELION nie ponosz równie adnej odpowiedzialno ci za
ewentualne
szkody wynik e z wykorzystania informacji zawartych w ksi ce.
Redaktor prowadz cy: Micha Mrowiec
Projekt ok adki: Maciek Pasek
Wydawnictwo HELION
ul. Ko ciuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (ksi garnia internetowa, katalog ksi ek)
Drogi Czytelniku!
Je eli chcesz oceni t ksi k , zajrzyj pod adres
http://helion.pl/user/opinie?asemlk
Mo esz tam wpisa swoje uwagi, spostrze enia, recenzj .
Kody ród owe wybranych przyk adów dost pne s pod adresem:
ftp://ftp.helion.pl/przyklady/asemlk.zip
ISBN: 978-83-246-4347-9
Copyright © Helion 2012
Printed in Poland.
" Kup książkę " Księgarnia internetowa
" Poleć książkę " Lubię to! Nasza społeczność
" Oceń książkę
Spis tre ci
1. Podstawowe informacje 7
1.1. S owem wst pu 7
1.2. Architektura x86 podstawowe informacje 10
1.3. Budowa programu dla podsystemu DOS (16-bitowego) 13
1.4. Budowa programu dla systemu Windows (32-bitowego) 15
2. Podstawowe instrukcje procesora 18
2.1. Instrukcja kopiowania i instrukcje arytmetyczne 18
2.2. Instrukcje logiczne i przesuni bitowych 20
2.3. Instrukcje wywo ania procedury i powrotu 26
2.4. Instrukcja porównania i instrukcje skoku 29
2.5. Instrukcje do operacji na a cuchach znaków 30
3. Makroinstrukcje 35
3.1. Makroinstrukcje kontroli przep ywu 35
3.2. Makroinstrukcje do tworzenia p tli 36
4. Praca z danymi 39
4.1. Adresowanie i wska niki 39
4.2. Zmienne i sta e 41
4.3. Praca ze strukturami 42
5. Programowanie w systemie Windows 45
5.1. Konsola w systemie Windows 45
5.2. Proste okno dialogowe 47
5.3. Odczyt myszki i klawiatury 51
5.4. Operacje na plikach i alokacja bloków pami ci 52
5.5. Tworzenie menu 55
5.6. Kontrolka przycisku (Button) 56
5.7. Kontrolka pola tekstowego (Edit) 57
5.8. Kontrolka wielokrotnego wyboru (CheckBox) 60
3
Pole ksi k
Kup ksi k
5.9. Kontrolka pojedynczego wyboru (RadioButton) 62
5.10. Kontrolka listy rozwijanej (ComboBox) 62
5.11. Kontrolka listy (ListBox) 64
5.12. Kontrolka paska post pu (ProgressBar) 65
5.13. Kontrolka widoku drzewa (TreeView) 66
5.14. Kontrolka widoku listy (ListView) 68
5.15. Kontrolka suwaka (TrackBar) 70
5.16. Kontrolka podpowiedzi (Tooltip) 71
5.17. Kontrolka do wprowadzania adresu IP (IPAddress) 78
5.18. Kontrolka tekstu o bogatym formatowaniu (RichEdit) 83
5.19. Kontrolki w nowym stylu (pliki .manifest) 85
5.20. Podpi cia do systemu Windows (Hooks) 87
5.21. Ekran powitalny (Splashscreen) 89
5.22. Ikona w zasobniku systemowym (Tray) 91
5.23. Podmiana procedury obs ugi okna 93
5.24. Programowanie aplikacji wielow tkowych 95
5.25. Tworzenie bibliotek DLL 97
5.26. Pliki odwzorowane w pami ci 99
5.27. Pobieranie adresu IP lokalnego komputera 99
6. Dodatkowe zestawy instrukcji 102
6.1. Korzystanie z instrukcji koprocesora (FPU) 102
6.2. Korzystanie z rozszerze MMX i SSE 110
6.3. Nowe rozszerzenie Advanced Vector Extensions (AVX) 118
7. Asembler 64-bitowy (x86-64) 120
7.1. Wst p do Asemblera dla architektury 64-bitowej 120
8. Opis rozkazów procesorów z rodziny 80x86 125
8.1. Instrukcje na liter A 125
8.2. Instrukcje na liter B 128
8.3. Instrukcje na liter C 132
8.4. Instrukcje na liter D 137
8.5. Instrukcje na liter E 139
8.6. Instrukcje na liter H 139
8.7. Instrukcje na liter I 140
8.8. Instrukcje na liter J 143
8.9. Instrukcje na liter L 144
8.10. Instrukcje na liter M 148
8.11. Instrukcje na liter N 151
4 Asembler. Leksykon kieszonkowy
Pole ksi k
Kup ksi k
8.12. Instrukcje na liter O 152
8.13. Instrukcje na liter P 154
8.14. Instrukcje na liter R 156
8.15. Instrukcje na liter S 160
8.16. Instrukcje na liter T 168
8.17. Instrukcje na liter V 169
8.18. Instrukcje na liter W 169
8.19. Instrukcje na liter X 170
9. Dyrektywy asemblera MASM 172
9.1. Etykiety kodu 172
9.2. Warunkowa kontrola przep ywu 173
9.3. Alokacja danych 175
9.4. Przyrównania 177
9.5. Makra 177
9.6. Procedury 178
9.7. Rodzaj zestawu instrukcji procesora 179
9.8. Bloki powtórze 182
9.9. Zakres 183
9.10. Segmenty 184
9.11. Uproszczone segmenty 185
9.12. a cuchy znaków 187
9.13. Struktury i rekordy 188
9.14. Ró ne 189
Dodatki 192
A. Tablica kodów ASCII 192
B. Pot gi liczby dwa 193
C. Lista opkodów procesora 80x86 196
Skorowidz 202
Spis tre ci 5
Pole ksi k
Kup ksi k
6 Asembler. Leksykon kieszonkowy
Pole ksi k
Kup ksi k
Rozdzia 4. Praca z danymi
W tym rozdziale nauczysz si , jak pracowa z danymi, takimi jak na
przyk ad zmienne czy struktury. Dowiesz si te , czym jest adres
danych w pami ci i jak go pobiera .
4.1. Adresowanie i wska niki
W Asemblerze bardzo wa ne jest to, aby wiedzie , czym ró ni si
adres zmiennej (OFFSET) od jej warto ci. Adres to miejsce, gdzie znaj-
duje si zmienna, natomiast warto ci s dane umieszczone pod tym
adresem.
Operator OFFSET
Operator OFFSET s u y do pobierania adresu zmiennej.
Oto przyk ad jego u ycia:
.386
.model flat, stdcall
option casemap: none
include windows.inc
include kernel32.inc
include user32.inc
includelib user32.lib
includelib kernel32.lib
.data
zmienna db "Witaj!", 0
.code
start:
mov eax, offset zmienna ; do rejestru EAX skopiuj adres zmiennej
invoke MessageBox, NULL, eax, NULL, NULL ; wy wietl komunikat
invoke ExitProcess, NULL ; koniec programu
end start
Operatora OFFSET u ywamy równie , gdy pobieramy adres zmiennej,
odk adaj c j na stos przed wywo aniem procedury, na przyk ad:
push NULL
push NULL
push offset zmienna ; pobieramy adres zmiennej i odk adamy na stos
push NULL
call MessageBox
Rozdzia 4. Praca z danymi 39
Pole ksi k
Kup ksi k
Warto zaznaczy , e operator OFFSET nie dzia a na zmiennych lokalnych.
Zmienne lokalne
Zmienne lokalne mo emy zadeklarowa na przyk ad wewn trz ja-
kiej procedury. Aby to zrobi , podajemy najpierw s owo LOCAL, dalej
nazw zmiennej, a po dwukropku jej rodzaj.
Na przyk ad:
myProc proc
LOCAL zmienna1: DWORD ; deklaracja zmiennej lokalnej o rozmiarze podwójnego s owa
; jaki kod
Ret ; powrót
myProc EndP
Operator ADDR
Operatora ADDR u ywamy najcz ciej przy przekazywaniu argumen-
tów do funkcji wywo ywanej za pomoc sk adni INVOKE, na przyk ad:
invoke MessageBox, NULL, addr MsgText, addr MsgCaption, NULL
Dereferencja (operator [ ])
Pos u ymy si tutaj prostym przyk adem:
mov eax, lpvar ; skopiuj adres do EAX
mov eax, [eax] ; dereferencja
mov nuvar, eax ; skopiuj EAX do nowej zmiennej
Nawiasy kwadratowe s u do wydobycia warto ci spod adresu w EAX.
Operacja ta jest nazywana dereferencj .
Instrukcja LEA
Instrukcja ta jest skrótem angielskiego wyra enia: Load Effective Address.
S u y ona do pobierania adresu i kopiowania go do pierwszego ope-
randu, na przyk ad:
lea eax, zmienna
invoke MessageBox, NULL, eax, NULL, NULL
40 Asembler. Leksykon kieszonkowy
Pole ksi k
Kup ksi k
4.2. Zmienne i sta e
W j zyku Asembler prócz operacji na rejestrach mo emy definiowa
zmienne oraz sta e, by wykonywa na nich ró ne operacje.
Sta e
Sta e umieszczamy w sekcji .CONST.
Pos u si tutaj prostym przyk adem:
.const ; sta e
jeden equ 1 ; definicja sta ej
osiem equ 2*4 ; warto wyliczona
Zmienne
Zmienne mo emy podzieli na zainicjowane jak warto ci oraz
niezainicjowane. Zmienne zainicjowane deklarujemy z warto ci po-
cz tkow z prawej strony, niezainicjowane natomiast maj z prawej
strony znak zapytania. Zmienne zainicjowane deklarujemy w sekcji
.DATA, a niezainicjowane w .DATA?. Obie te sekcje wyst puj przed
sekcj kodu (.CODE).
Zmienne o rozmiarze jednego bajtu/ci gu bajtów
Zmienne te deklarujemy dyrektyw BYTE (lub krótko: DB; ang. Define Byte).
.data ; dane zainicjowane warto ci podan z prawej strony
b1 BYTE 0 ; jeden bajt
b2 db 0 ; równie jeden bajt
b3 db 100 dup(0) ; sto bajtów
b4 db "asd", 0 ; cztery bajty (ci g znaków ASCII zako czony zerem)
b5 SBYTE 0 ; jeden bajt ze znakiem
t1 dt 0 ; dziesi bajtów
Zmienne o rozmiarze jednego s owa
Zmienne te deklarujemy przy u yciu dyrektywy WORD (lub krótko: DW;
ang. Define Word).
w1 word 0 ; s owo
w2 dw 0 ; równie s owo
Zmienne o rozmiarze podwójnego s owa
Zmienne te deklarujemy za pomoc dyrektywy DWORD (lub krótko: DD;
ang. Define Double Word).
Rozdzia 4. Praca z danymi 41
Pole ksi k
Kup ksi k
d1 dword 0 ; podwójne s owo
d2 dd 0 ; równie podwójne s owo
d3 sdword 0 ; podwójne s owo ze znakiem
Zmienne o rozmiarze poczwórnego s owa
Zmienne te deklarujemy za pomoc dyrektywy QWORD (lub krótko: DQ;
ang. Define Quad Word).
q1 qword 0 ; poczwórne s owo
q2 dq 0 ; równie poczwórne s owo
q3 sqword 0 ; poczwórne s owo ze znakiem
Zmienne o rozmiarze 6 bajtów
Zmienne te deklarujemy przy u yciu dyrektywy FWORD (lub krótko:
DF; ang. Define Fword).
f1 fword 0 ; zmienna 6-bajtowa
f2 df 0 ; równie zmienna 6-bajtowa
Zmienne u ywane w instrukcjach MMX i SSE
Zmienne te deklarujemy za pomoc dyrektyw: MMWORD i XMMWORD. Pierwsza
ma 64 bity, a druga 128.
m1 mmword 0.0 ; 64-bitowa zmienna u ywana w instrukcjach MMX i SSE
x1 xmmword 0.0 ; 128-bitowa zmienna u ywana w instrukcjach MMX i SSE
Zmienne do przechowywania liczb rzeczywistych
Zmienne te deklarujemy przy u yciu dyrektyw: REAL4, REAL8 i REAL10.
n1 real4 0.0 ; liczba zmiennoprzecinkowa pojedynczej precyzji (4 bajty)
n2 real8 0.0 ; liczba zmiennoprzecinkowa podwójnej precyzji (8 bajtów)
n3 real10 0.0 ; liczba zmiennoprzecinkowa 10-bajtowa
4.3. Praca ze strukturami
W poprzednim rozdziale by a mowa o zmiennych i sta ych. Teraz
opisz typ danych, jakim jest struktura.
Deklaracja przyk adowej struktury dla asemblera MASM wygl da
nast puj co (deklaracj t umieszczamy PRZED SEKCJ .DATA):
Rect STRUCT
left dword ?
top dword ?
right dword ?
bottom dword ?
Rect ENDS
42 Asembler. Leksykon kieszonkowy
Pole ksi k
Kup ksi k
Najpierw pojawia si nazwa struktury (Rect), po niej s owo STRUCT, a ni-
ej s umieszczone pola struktury. Ka de z nich jest podwójnym s o-
wem (DWORD), niezainicjowanym adn warto ci (znak ?). Na ko cu
mamy znów nazw struktury i s owo ko cz ce deklaracj ENDS.
Teraz utwórzmy zmienn typu Rect. Robimy to w ten sposób:
.data
Rct Rect <>
Do pól struktury odwo ujemy si , pisz c nazw struktury i po kropce
jej pole, na przyk ad:
mov Rct.left, 12
mov Rct.top, 24
mov Rct.right, 31
mov Rct.bottom, 10
Je eli jaka funkcja wymaga od nas adresu struktury jako argumen-
tu, u ywamy operatora ADDR, na przyk ad:
invoke Func1, param1, param2, addr Rct
Mo emy równie tworzy struktury zawieraj ce w sobie inne struktury,
na przyk ad:
Rect STRUCT
left dword ?
top dword ?
right dword ?
bottom dword ?
Rect ENDS
Point STRUCT
x dword ?
y dword ?
Point ENDS
MyStruct STRUCT
item1 Rect <> ; struktura Rect
item2 Point <> ; struktura Point
MyStruct ENDS
.data
Struct1 MyStruct <>
Wtedy do pól odwo ujemy si w nast puj cy sposób:
mov Struct1.item1.left, 10
Do pól struktury mo emy si tak e odnosi poprzez adres w reje-
strze z dodanym przesuni ciem, na przyk ad:
Rozdzia 4. Praca z danymi 43
Pole ksi k
Kup ksi k
mov eax, lpRct ; adres struktury do EAX
mov [eax], DWORD PTR 10
mov [eax+4], DWORD PTR 12
mov [eax+8], DWORD PTR 14
mov [eax+12], DWORD PTR 16
Mo na to równie zrobi przy u yciu dyrektywy ASSUME:
ASSUME eax:PTR RECT
mov eax, lpRct
mov [eax].left, 10
mov [eax].top, 12
mov [eax].right, 14
mov [eax].bottom, 16
ASSUME eax: nothing
44 Asembler. Leksykon kieszonkowy
Pole ksi k
Kup ksi k
Skorowidz
386, 179 ASCII, 192 CallWindowProc, 76, 95
386P, 180 asembler, 7 Carry Flag, 11, 22
387, 180 Asembler, 7 CARRY?, 36
486, 180 64-bitowy, 120 CATSTR, 187
486P, 180 ASSUME, 44, 184 CB_ADDSTRING, 63
586, 180 Auxillary Flag, 11 CB_DELETESTRING, 63
586P, 181 AVX, 118
CB_GETCOUNT, 63
686, 181 instrukcje, 119
CB_GETCURSEL, 63
686P, 181 AX, 10
CB_SETCURSEL, 63
CBW, 133
CDQ, 133
A B
CF, 11, 22
AAA, 125 bajt, 9
CHARFORMAT, 84
AAD, 125 biblioteki DLL, 97
CHARRANGE, 83
AAM, 126 bit, 9
CheckBox, 60
AAS, 126 bloki
przyk adowy program,
AC, 12 pami ci, 52
61
ADC, 126 powtórze , 182
sprawdzanie stanu, 60
ADD, 19, 127 BOUND, 128
ustawianie stanu, 61
ADDR, 40 BREAK, 36, 173
CheckDlgButton, 61
adres IP, Patrz IPAddress BS_3STATE, 60
hDlg, 61
lokalnego komputera, 99 BS_AUTO3STATE, 60
nIDButton, 61
adres zmiennej, 39 BS_FLAT, 57
uCheck, 61
adresowanie x64, 124 BSF, 129
CLC, 134
Advanced Vector BSR, 129
CLD, 134
Extensions, Patrz AVX BST_CHECKED, 60, 61
CLI, 134
AF, 11 BST_INDETERMINATE, 60,
CloseHandle, 99
AH, 10 61
CLTS, 135
akumulator, 10 BST_UNCHECKED, 60, 61
CMC, 135
AL, 10 BSWAP, 130
CMP, 29, 135
ALIAS, 189 BT, 130
CMPS, 31, 136
ALIGN, 172 BTC, 130
CODE, 41, 50, 185
Alignment Check, 12 BTR, 131
Code Segment, 11
alokacja BTS, 131
ComboBox, 62
bloków pami ci, 52 budowa programu
komunikaty, 63
danych, 175 DOS, 13, 14
przyk adowy program,
ALPHA, 184 Windows, 15
63
alternatywa, 21 Button, 56
COMM, 183
alternatywa wykluczaj ca, BYTE, 41, 175
COMMENT, 189
21
CONST, 41, 186
AMD64 Assembly
CONTINUE, 173
C
Debugger, 124
CPL, 12
AND, 20, 127
CALL, 17, 26, 132
CreateFile, 99
aplikacje wielow tkowe, 95
CallNextHookEx, 88
CreateFileMapping, 99
architektura
hhk, 89
CreateThread, 95
64-bitowa, Patrz x64
lParam, 89
dwCreationFlags, 96
x86, 10
nCode, 89
dwStackSize, 96
ARPL, 128
wParam, 89
lpParameter, 96
202 Asembler. Leksykon kieszonkowy
Pole ksi k
Kup ksi k
lpStartAddress, 96 ECHO, 189 FloatToStr, 103
lpThreadAttributes, 95 ECX, 10 FloatToStr2, 103
lpThreadId, 96 EDI, 10 FOR, 182
CreateWindowEx, 72 Edit, 57 FORC, 182
CS, 11 pobieranie liczby, 58
FOURTH_IPADDRESS, 78
Current Priority Level, 12 pobieranie tekstu, 58
FPU, 102
CW_USEDEFAULT, 72 przyk adowy program,
FS, 11
CWD, 136 60
funkcje
CWDE, 137 ustawianie liczby, 59
powrót, 27
ustawianie tekstu, 59
tworzenie, 27
EDX, 10
wywo anie, 26
D
EFLAGS, 11, 13
FWORD, 42, 175
DAA, 137 EIP, 13
ekran powitalny,
DAS, 137
G
Patrz Splashscreen
DATA, 41, 186
ELSE, 35, 173
Data Segment, 11
GetDlgItem, 72
ELSEIF, 35, 173
DATA?, 41, 186
GetDlgItemInt, 58
EM_EXSETSEL, 83, 84
DB, 41, 175
bSigned, 58
DD, 41 EM_FINDTEXTEX, 83, 84
hDlg, 58
EM_SETCHARFORMAT, 84
debuggery, 7
lpTranslated, 58
aplikacji x64, 124 EM_SETSEL, 84
nIDDlgItem, 58
Debugging Tools for EM_SETTEXTEX, 84
GetDlgItemText, 58
END, 184
Windows 64-bit Version,
hDlg, 58
124 EndDialog, 50
lpString, 58
ENDIF, 35, 173
DEC, 20, 138
nIDDlgItem, 58
dekrementacja, 20 ENDM, 177
nMaxCount, 58
dereferencja, 40 ENDP, 27, 178
gethostbyname, 100
ENDS, 43, 185
DF, 12, 30, 42
gethostname, 100
ENDW, 36, 174
DI, 10
GetModuleHandle, 50
ENTER, 139
DialogBoxParam, 50
GetProcAddress, 98
EQU, 177
Direction Flag, 12, 30
hModule, 99
DIV, 19, 138 ES, 11
lpProcName, 99
ESI, 10
DLL, 97
GetStdHandle, 45
ESP, 10
dodawanie, 19
GoAsm, 124
DOS etykiety, 29
GOTO, 178
kodu, 172
budowa programu, 13,
GROUP, 185
14 EVEN, 172
GroupBox, 62
szablony aplikacji, 14 exe, 7
GS, 11
DOSSEG, 184 EXIT, 186
GWL_EXSTYLE, 94
double word, 9 EXITM, 177
GWL_HINSTANCE, 94
ExitProcess, 16, 50
DQ, 42
GWL_ID, 94
EXTERN, 183
DS, 11
GWL_STYLE, 94
EXTERNDEF, 183
DW, 41
GWL_USERDATA, 94
Extra Segment, 11
DWORD, 41, 175
GWL_WNDPROC, 94
dyrektywy asemblera
MASM, 172
F
dzielenie
H
bez znaku, 19 FARDATA, 186
HIGH-WORD, 10
ze znakiem, 20 FARDATA?, 186
HLT, 139
FASM, 124
Hooks, 87
FASTCALL, 123
E
instalowanie, 88
FDBG, 124
klawiatura, 89
FINDTEXTEX, 83
EAX, 10
rodzaje, 87
EBP, 10 FIRST_IPADDRESS, 78
hostent, 100
EBX, 10 flagi, 11
Skorowidz 203
Pole ksi k
Kup ksi k
IRET, 143 suwaka, Patrz TrackBar
I
IRETD, 143 tekstu sformatowanego,
I/O Privilege Level, 12
IsDlgButtonChecked, 60 Patrz RichEdit
ID, 12
hDlg, 60 widoku
Identification, 12
nIDButton, 60 drzewa,
IDIV, 20, 140
Patrz TreeView
IF, 12, 35, 174
listy, Patrz ListView
J
IMUL, 19, 140
wprowadzania adresu
IN, 141
JA, 30
IP, Patrz IPAddress
INC, 20, 141
JAE, 30
wyboru
INCLUDE, 189
JB, 30
pojedynczego,
INCLUDELIB, 183
JBE, 30
Patrz RadioButton
inet_ntoa, 100
Jcc, 143
wielokrotnego,
InitCommonControls, 50
JE, 30
Patrz CheckBox
inkrementacja, 20
JG, 30
konwencja wywo ania x64,
INS, 142
JGE, 29, 30
123
INSTR, 187
JL, 30
kopiowanie, 18
instrukcje
JLE, 30
koprocesor, 102
arytmetyczne, 18
JNE, 30
instrukcje, 105
AVX, 119
JNZ, 30
przyk adowy program,
kopiowania, 18
jWasm, 124
109
koprocesora, 105
JZ, 30
rejestry, 102
logiczne, 20
MMX, 110
K
L
operuj ce na
a cuchach, 30 K3D, 181
LABEL, 172
porównania, 29 kernel32.dll, 16
LAHF, 144
przesuni bitowych, 21 kilobajt, 10
LAR, 145
rodzaje zestawów, 179 klawiatura, 52
LB_ADDSTRING, 64
skoku, 29 kody ASCII, 192
LB_GETCOUNT, 64
SSE, 111 kompilatory Asemblera
LB_GETCURSEL, 64
SSE2, 113 x64, 124
LB_SETCURSEL, 64
SSE3, 115 komunikacja mi dzy
LEA, 40, 145
SSE4, 117 w tkami, 96
LEAVE, 145
SSSE3, 116 koniunkcja, 20
LGDT, 146
zmiany w x64, 122 konsola w Windows, 45
LGS, 146
zwi zane kolory, 46
liczby
z procedurami, 26 pobieranie danych, 45
zmiennoprzecinkowe, 103
INT, 14, 142 przyk adowy program,
licznik, 10
Interrupt Flag, 12 47
LIDT, 146
INVOKE, 17, 179 tworzenie aplikacji, 45
linker, 7
IOPL, 12 wy wietlanie danych, 45
lista, Patrz ListBox
IPAddress, 78 konsolidator, 7
lista rozwijana,
czyszczenie zawarto ci, kontrola przep ywu, 35, 173
Patrz ComboBox
81 kontrolki
ListBox, 64
pobieranie adresu, 78 listy, Patrz ListBox
komunikaty, 64
powiadomienia, 81 listy rozwijanej,
przyk adowy program,
przyk adowy program, Patrz ComboBox
64
82 nowoczesne, 85
ListView, 68
ustawianie adresu, 80 paska post pu,
elementy, 69
ustawianie focusu, 81 Patrz ProgressBar
kolumny, 68
IPM_CLEARADDRESS, 81 podpowiedzi,
przyk adowy program, 69
IPM_GETADDRESS, 78 Patrz Tooltip
LLDT, 147
IPM_SETADDRESS, 80, 81 pola tekstowego,
LMSW, 147
IPM_SETFOCUS, 81 Patrz Edit
LoadIcon, 50
IPN_FIELDCHANGED, 81 przycisku, Patrz Button
204 Asembler. Leksykon kieszonkowy
Pole ksi k
Kup ksi k
LoadLibrary, 98 MessageBox, 16 OF, 12
lpLibFileName, 98 MF_BITMAP, 56 OFFSET, 39
LOCAL, 40, 178 MF_CHECKED, 56 okno dialogowe, 47
LOCK, 147 MF_DISABLED, 56 w a ciwo ci, 48
LODS, 32, 148 MF_GRAYED, 56 Olly Debugger, 8
lokalny adres IP, 99 MF_MENUBREAK, 56
opcode, 196
LOOP, 148 MF_OWNERDRAW, 56
operacje na plikach, 52
LOW-WORD, 10 MF_STRING, 56
przyk adowy program,
LVCF_FMT, 68 m odsze s owo, 10
54
LVCF_SUBITEM, 68 MMWORD, 42, 190
operatory porównania, 36
LVCF_TEXT, 68 MMX, 13, 42, 110, 181
opkody procesora 80x86,
LVCF_WIDTH, 68 instrukcje, 110
196
LVCFMT_CENTER, 68 mno enie
OPTION, 190
LVCFMT_LEFT, 68 bez znaku, 19
OR, 21, 152
LVCFMT_RIGHT, 68 ze znakiem, 19
ORG, 172
LVCOLUMN, 68 MODEL, 187
OUT, 153
cchTextMax, 69 MOV, 18, 148
OUTS, 153
fmt, 68 MOVS, 30, 149
Overflow Flag, 12
imask, 68 MOVSX, 150
OVERFLOW?, 36
iSubItem, 69 MOVZX, 150
lx, 69 MSDN, 16
P
pszText, 69 MUL, 19, 151
LVIF_IMAGE, 69 mysz, 51
Parity Flag, 11
LVIF_PARAM, 69
PARITY?, 36
LVIF_STATE, 69
N
pasek post pu,
LVIF_TEXT, 69
Patrz ProgressBar
NASM, 124
LVITEM, 69
PBM_GETPOS, 65
NEG, 151
cchTextMax, 69
PBM_GETRANGE, 65
Nested Task, 12
iItem, 69
PBM_GETSTEP, 65
nibble, 9
imask, 69
PBM_SETPOS, 65
NIM_DELETE, 93
iSubItem, 69
PBM_SETRANGE, 65
NMHDR, 82
pszText, 69
PBM_SETSTEP, 66
code, 82
LVM_INSERTCOLUMN, 68
PBM_STEPIT, 66
hwndFrom, 82
LVM_INSERTITEM, 69
PBRANGE, 65
idFrom, 82
LVM_SETITEM, 69
NMIPADDRESS, 81 p tle, 36
LVS_REPORT, 68
hdr, 81 PF, 11
iField, 81 pliki
L
iValue, 81 .manifest, 86
a cuchy znaków, 30, 187 NOP, 152 odwzorowane
NOT, 21, 152
w pami ci, 99
NOTIFYICONDATA, 92
operacje, 52
M
nowoczesne kontrolki, 85
pobieranie lokalnego
M_LBUTTONDBCLK, 51
NT, 12
adresu IP, 99
MACRO, 178
poczwórne s owo, 10
makroinstrukcje, 35, 177
podmiana procedury
O
do tworzenia p tli, 36
obs ugi okna, 93
kontroli przep ywu, 35 obj, 7
przyk adowy program,
manifest, 85 obs uga okna, 93
95
MapViewOfFile, 99 odczyt
podpi cia do Windows,
MASM, 8 klawiatury, 52
Patrz Hooks
MASM64, 124 myszy, 51
podpowied , Patrz Tooltip
megabajt, 10 odejmowanie, 19
podwójne s owo, 9
menu, 55 odpluskwiacz, 7
pole tekstowe, Patrz Edit
przyk adowy program, odwzorowanie plików
POP, 13, 18, 154
56 w pami ci, 99
Skorowidz 205
Pole ksi k
Kup ksi k
POPA, 154 REAL10, 42, 176 SBB, 162
POPAD, 154 REAL4, 42, 176 SBYTE, 175
POPCONTEXT, 190 REAL8, 42, 176
SCAS, 33, 162
POPF, 155 RECORD, 188
SCF_ALL, 84
POPFD, 155 rejestry, 10
SDWORD, 175
porównanie, 29 bazowy, 10
SECOND_IPADDRESS, 78
operatory, 36 danych, 10
SEGMENT, 185
pot gi liczby dwa, 193 flag, 11
segmenty, 184
powrót indeksowe, 10
uproszczone, 185
z funkcji/procedury, 27 koprocesora, 13, 102
SendMessage, 62
powtórzenia, 182 MMX, 13
hWnd, 63
pó bajt, 9 ogólnego
lParam, 63
PROC, 27, 179 przeznaczenia, 10
Msg, 63
procedury, 178 procesora x64, 121
wParam, 63
powrót, 27 segmentowe, 11
SEQ, 185
tworzenie, 27 SSE, 13
SETcc, 163
wywo anie, 26 wska nikowe, 10
SetConsoleTextAttribute, 46
programowanie rekordy, 188
SetDlgItemInt, 59
w Windows, 45 REP, 157
bSigned, 59
ProgressBar, 65 REPE, 158
hDlg, 59
komunikaty, 65 REPEAT, 37, 174, 182
nIDDlgItem, 59
przyk adowy program, REPNE, 158
uValue, 59
66 REPNZ, 158
SetDlgItemText, 59
PROTO, 179 REPZ, 158
hDlg, 59
przerwania, 14 Resume Flag, 12
lpString, 59
przesuni cia RET, 27, 158
nIDDlgItem, 59
arytmetyczne, 21, 22 RF, 12
SetWindowLong, 93
bitowe, 21 RichEdit, 83
dwNewLong, 94
logiczne, 21, 22 formatowanie, 84
hWnd, 94
logiczne podwójnego przej cie do
nIndex, 94
rejestru, 24 okre lonego wiersza,
SetWindowsHookEx, 88, 89
przycisk, Patrz Button 84
dwThreadId, 88
przyrównania, 177 przyk adowy program,
hMod, 88
PUBLIC, 184 85
idHook, 88
PURGE, 178 wyszukiwanie tekstu, 83
lpfn, 88
PUSH, 13, 17, 18, 155 zamienianie wybranego
SF, 12
PUSHA, 155 tekstu, 84
SGDT, 164
PUSHAD, 155 zaznaczanie ca ego
Shell_NotifyIcon, 92
PUSHCONTEXT, 190 tekstu, 83
SHL, 21, 160
PUSHF, 156 rodzaje zestawów
SHLD, 24, 164
PUSHFD, 156 instrukcji, 179
SHR, 22, 161
ROL, 23, 159
SHRD, 24, 165
ROR, 24, 159
Q SI, 10
rotacja
SIDT, 164
quad word, 10 bez u ycia flagi CF, 23,
Sign Flag, 12
24
QWORD, 42, 175
SIGN?, 36
z u yciem flagi CF, 23,
SIZESTR, 188
24
R skok, 29
SLDT, 165
RadioButton, 62
S
s owo, 9
przyk adowy program, 62
m odsze, 10
SAFESEH, 191
RADIX, 190
poczwórne, 10
SAHF, 160
RCL, 23, 156
podwójne, 9
RCR, 24, 157 SAL, 21, 160
starsze, 10
SAR, 22, 161
ReadFile, 45
206 Asembler. Leksykon kieszonkowy
Pole ksi k
Kup ksi k
SMSW, 166 podmiana procedury
U
Splashscreen, 89 obs ugi okna, 74
przyk adowy program, przyk adowe UnhookWindowsHookEx,
91 programy, 77 89
wykonanie, 90 tworzenie, 72 UNION, 189
TrackBar, 70 UnmapViewOfFile, 99
SS, 11
pobieranie pozycji UNTIL, 37, 174
SSE, 13, 42, 110
suwaka, 71 UNTILCXZ, 174
instrukcje, 111
przyk adowy program, uproszczone segmenty, 185
SSE2, 113
71
SSE3, 115
ustawianie zakresu, 70
SSE4, 117
V
TranslateMessage, 52
SSSE3, 116
Trap Flag, 12 VERR, 169
STACK, 187
Tray, 91 VERW, 169
Stack Segment, 11
przyk adowy program, VIF, 12
sta e, 41
93 VIP, 12
starsze s owo, 10
TreeView, 66 Virtual 8086 Mode, 12
STARTUP, 187
dodawanie elementów, Virtual Interrupt Flag, 12
STC, 166
66 Virtual Interrupt Pending,
STD, 166
przyk adowy program, 12
STI, 167
67 VM, 12
stos, 13
sprawdzanie
STOS, 33, 167
klikni tego elementu,
STR, 167
W
67
StrToFloat, 104
TTF_PARSELINKS, 76
WAIT, 169
STRUCT, 43, 188
TTI_ERROR, 74
warto zmiennej, 39
struktury, 42, 188
TTI_INFO, 74
warunkowa kontrola
SUB, 19, 168
TTI_NONE, 74
przep ywu, 173
SUBSTR, 188
TTI_WARNING, 74
WH_CALLWNDPROC, 87
suwak, Patrz TrackBar
TTM_ADDTOOL, 73
WH_CALLWNDPROCRET,
SWORD, 176
TTM_POP, 76
87
systemy liczbowe, 9
TTM_SETMAXTIPWIDTH,
WH_CBT, 87
binarny, 9
74
WH_DEBUG, 87
heksadecymalny, 9
TTM_SETTITLE, 74
WH_FOREGROUNDIDLE,
szablony aplikacji DOS, 14
TTS_BALLOON, 74
87
TTS_CLOSE, 74
WH_GETMESSAGE, 87
TV_INSERTSTRUCT, 66
WH_JOURNALPLAYBACK,
T
hInsertAfter, 66
87
tablica kodów ASCII, 192
hParent, 66
WH_JOURNALRECORD,
TBM_GETPOS, 71
item, 67
87
TBM_SETRANGEMAX, 70
TVI_FIRST, 66
WH_KEYBOARD, 87
TBM_SETRANGEMIN, 70
TVI_LAST, 66
WH_KEYBOARD_LL, 87, 89
TBYTE, 176
TVI_ROOT, 67
WH_MOUSE, 87
tekst sformatowany,
TVI_SORT, 67
WH_MOUSE_LL, 88
Patrz RichEdit
TVITEM, 67
WH_MSGFILTER, 88
TEST, 168
TVM_INSERTITEM, 66
WH_SHELL, 88
TEXTEQU, 177 TVN_SELCHANGED, 67
WH_SYSMSGFILTER, 88
TF, 12 tworzenie WHILE, 36, 174, 183
THIRD_IPADDRESS, 78 bibliotek DLL, 97 widok
TOOLINFO, 73, 75, 76 funkcji, 27 drzewa, Patrz TreeView
Tooltip, 71 menu, 55 listy, Patrz ListView
dostosowywanie procedur, 27 wielow tkowo , 95
komunikacja, 96
wygl du, 73 TYPEDEF, 188
hiper cza, 76 przyk adowy program,
97
Skorowidz 207
Pole ksi k
Kup ksi k
Win32 Programmer s wielokrotny, wy wietlanie liczb
Reference, 16 zmiennoprzecinkowych,
Patrz CheckBox
WIN32.HLP, 16
zasobnik systemowy, 103
WinAPI, 15
Patrz Tray wywo anie
WinAsm, 8
Windows on Windows 64, funkcji, 26
cie ki do katalogów, 8
120 konwencja dla x64, 123
Windows
WM_CHAR, 52, 93 procedury, 26
adres IP, Patrz IPAddress
WM_CLOSE, 50
lokalnego komputera, 99
WM_COMMAND, 50, 57,
X
alokacja bloków pami ci, 52
92
aplikacje wielow tkowe,
WM_INITDIALOG, 50, 53, x64, 120
95
90 adresowanie, 124
biblioteki DLL, 97
WM_KEYDOWN, 52 debuggery, 124
budowa programu, 15
format plików
WM_KEYUP, 52
ekran powitalny,
wykonywalnych, 120
WM_LBUTTONDOWN,
Patrz Splashscreen
kompilatory
51, 76
konsola, 45
Asemblera, 124
WM_LBUTTONUP, 51
lista, Patrz ListBox
konwencja wywo ania,
WM_MBUTTONDOWN,
lista rozwijana,
123
51
Patrz ComboBox
rejestry procesora, 121
WM_MBUTTONUP, 51
nowoczesne kontrolki, 85
zmiany w instrukcjach,
WM_MOUSEMOVE, 51, 76
Windows
122
WM_NOTIFY, 67
odczyt
x86, 10
WM_RBUTTONDBCLK, 51
klawiatury, 52
XCHG, 170
WM_RBUTTONDOWN, 51,
myszy, 51
XLAT, 170
okno dialogowe, 47 76
XLATB, 170
operacje na plikach, 52 WM_RBUTTONUP, 51
XMM, 182
pasek post pu, WM_SHELLNOTIFY, 92
XMMWORD, 42, 191
Patrz ProgressBar
word, 9
XOR, 21, 171
pliki odwzorowane
double, 9
w pami ci, 99
high, 10
podmiana procedury
low, 10
Y
obs ugi okna, 93
quad, 10
podpi cia do systemu, YMMWORD, 191
WORD, 41, 176
Patrz Hooks
WOW64, 120
podpowied , Patrz Tooltip
WriteFile, 45
Z
pole tekstowe, Patrz Edit
WS_EX_CLIENTEDGE, 57
program Witaj, wiecie!,
zakres, 183
WS_EX_DLGMOD
16
zaokr glanie, 104
ALFRAME, 57
programowanie, 45
zaprzeczenie, 21
WS_EX_STATICEDGE, 57
przycisk, Patrz Button
zasobnik systemowy,
WS_GROUP, 62
suwak, Patrz TrackBar
Patrz Tray
WSAStartup, 100
tekst sformatowany,
Zero Flag, 12
wska nik
Patrz RichEdit
ZERO?, 36
bazowy, 10
tworzenie menu, 55
ZF, 12
stosu, 10
widok
zmienne, 41
wybór
drzewa, Patrz TreeView
adres, 39
pojedynczy,
listy, Patrz ListView
lokalne, 40
Patrz RadioButton
wybór
rozmiar, 41, 42
wielokrotny,
pojedynczy,
warto , 39
Patrz CheckBox
Patrz RadioButton
znaczniki, 11
208 Asembler. Leksykon kieszonkowy
Pole ksi k
Kup ksi k
Czytaj dalej...
Wyszukiwarka
Podobne podstrony:
informatyka ruby leksykon kieszonkowy michael fitzgerald ebookinformatyka elektronika leksykon kieszonkowy witold wrotek ebookinformatyka jquery leksykon kieszonkowy david flanagan ebookinformatyka php 5 leksykon kieszonkowy marcin lis ebookinformatyka mac os x leopard pl leksykon kieszonkowy chuck toporek ebookinformatyka windows powershell leksykon kieszonkowy lee holmes ebookinformatyka mysql leksykon kieszonkowy wydanie ii george reese ebookinformatyka windows 7 komendy i polecenia leksykon kieszonkowy witold wrotek ebookAsembler Leksykon kieszonkowy asemlkinformatyka excel 2007 pl leksykon kieszonkowy wydanie ii curt frye ebookDelphi Leksykon kieszonkowy?lplkinformatyka ajax wzorce projektowe michael mahemoff ebookinformatyka ajax on rails scott raymond ebookwięcej podobnych podstron