- •Структура платформы .NET
- •Схема выполнения программы в .NET
- •Схема работы компиляторов .NET
- •Достоинства языка С++
- •Структура программы
- •Модификаторы памяти
- •Пространство имен
- •Константы
- •Описание идентификаторов
- •Операции С++
- •Правила преобразования типов
- •Функции
- •ПЕРЕГРУЗКА ФУНКЦИЙ
- •Неоднозначность перегрузки
- •Шаблоны функций
- •Явная спецификация типов
- •Оперативная память
- •В адресном пространстве каждого процесса содержится:
- •Виртуальная память может находиться в трех состояниях
- •Средства защиты памяти
- •Страничное преобразование
- •ПРИМЕР РАБОТЫ С УКАЗАТЕЛЯМИ
- •Еще один пример с указателями
- •Утечки памяти
- •Процесс сборки мусора
- •Сборка мусора. Поколения объектов
- •Особенности ОС Windows
- •Процесс и поток
- •Очереди сообщений
- •Структура сообщения
- •Cпособы создания интерактивных Win приложений в VS C++
- •Функция WinMain
- •Создание окна
- •Функция окна
- •Цикл обработки сообщения
- •Определение запущенной копии приложения
- •Пример приложения
- •Команды передачи данных
- •Арифметические команды:
- •Каркас программы
- •Стековый фрейм
- •Парадигмы программирования
- •Элементы объектной модели
- •Преимущества объектной модели
- •Ограничения доступа
- •Спецификатор памяти static
- •Спецификатор const
- •Указатель this
- •Дружественные функции
- •Основные свойства и правила использования спецификатора friend:
- •Наследование
- •Основные правила использования базовых и производных классов:
- •Наследование атрибутов компонентов базового класса:
- •Множественное наследование
- •Использование виртуального класса
- •Полиморфизм
- •ПРОЦЕСС
- •Структура процесса
- •Поток (thread)
- •Создание и работа с потоками
- •Создание потока
- •Завершение потока
- •Совместимость потоков и стандартной библиотеки
- •Синхронизация потоков ПРИМЕР1
- •Как можно приостановить работу потока?
- •ПРИМЕР 2
- •Объекты синхронизации
- •Мьютекс. ПРИМЕР3
- •Критические секции ПРИМЕР4
- •События. ПРИМЕР5
- •Семафоры. ПРИМЕР6
- •Структура описания технологической операции
- •Типы программ
- •Жизненный цикл программного обеспечения
- •Структура процессов ЖЦПО
- •Стратегии конструирования ПО
- •Водопадная модель ЖЦПО
- •Макетирование
- •Спиральная модель БОЭМА
- •Инкрементальная модель
- •Модель быстрой разработки приложений (RAD)
- •Схема процесса XP.
- •Эксплуатационные требования к программным продуктам
Команды передачи данных
MOV des,sour |
In reg, port |
Примеры: |
OUT port, reg |
Mov ax,[numb] |
Примеры: |
Mov [numb],bx |
|
Mov ax,bx |
In ax,dx |
Mov ax, word ptr[bp+4] |
In ax,0x60 |
Mov word ptr [bp],14h |
|
ОШИБКA!! |
|
Mov [num_two],[num_one] |
|
Правильно: |
|
Mov ax,[num_one] |
|
Mov [num_two],ax |
|
ОШИБКA!! |
|
Mov ax,ebx |
|
Правильно: |
|
Mov ax,0 |
|
Mov ax,bx |
|
Арифметические команды:
ADD o1,o2 |
INC o1 |
MUL sour |
IMUL sour |
Sub o1,o2 |
DEC o1 |
DIV sour |
IDIV sour |
Примеры: |
Примеры: |
Пример: |
Пример: |
Add eax,8 |
|
Mov ax,bx |
Imul ecx |
Sub ecx, ebp |
Inc ax |
Mul cx ;ax=bx*cl |
;edx:eax=eax*ecx |
Add byte [numb],4 |
Dec dword |
|
Imul edx,6 |
|
[numb] |
Mov ax,13 |
;edx=edx*6 |
|
|
Mov cx,3 |
Imul ecx,edx,11 |
|
|
Div cx ; ax=4 |
;ecx=edx*11 |
|
|
dx=1 |
|
|
|
|
|
Логические команды:
AND o1,o2
Or o1,o2
XOR o1,o2 NOT o1
Пример маскирования: OR al, 10101010b
КОМАНДЫ ПЕРЕДАЧИУПРАВЛЕНИЯ
Безусловный переход:
Jmp adr
…
L1: mov bx,ax Jmp L1
Условные переходы:
Jx adr переход по равенству флага JNx adrпереход по неравенству флага
Jz adr;переход если флаг ZF=1
Jс adr;переход если флагCF=1
Js adr;переход если флагSF=1
Jo adr;переход если флаг OF=1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
o1==o2 |
|
o1!=o2 |
|
|
o1>o2 |
|
|
o1<o2 |
|
o1<=o2 |
|
o1>=o2 |
|
||||||||||
|
|
|
o1<>o2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
JE(JZ) |
|
JNE(JNZ) |
JA(JNBE) |
|
JB(JNAE) |
JNA(JBE) |
JNB(JAE) |
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Переход |
|
Переход |
|
|
Переход |
|
Переход |
Переход |
|
Переход |
|||||||||||||
|
если |
|
если |
|
|
если |
|
если |
если |
|
если |
|
||||||||||||
|
равно |
|
неравно |
|
|
больше |
|
меньше |
небольше |
|
неменьше |
|
||||||||||||
Mov bl,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bl=1 |
|
|
|
|
|
|
|
|
Переход по счетчику |
|||||||||
Cmp al,cl |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Je end_if |
|
|
|
|
|
|
al=cl |
|
|
|
|
|
|
|
|
LOOP metka |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
Mov bl,2 |
bl=1 |
|
|
|
|
|
|
|
al>cl |
|
|
|
start: mov cx,10 |
|||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
Cmp al,cl |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
bl=2 |
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
bl-=3 |
|
||||||||||||
Ja end_if |
|
|
|
|
|
|
|
|
|
|
|
|
for_loop: |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
Mov bl,3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… |
||
End_if: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final: |
Loop for_loop |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Команды обработки стека:
PUSH o1 POP o1
Пример:
Mov ax, 0x1234 Mov bx, 0x5678 Push ax
Push bx
…
Pop bx Pop ax
Команды вызова процедуры и возврата:
CALL adr RET
Команда загрузки эффективного адреса
LEA o1,[o2]
|
Команды сдвига: |
|
|
SHR o1 {,size} |
|
0 |
CF |
SHL o1 {,size} |
логическийсдвигчисла |
|
|
|
|
SAR o1 {,size}
SAL o1 {,size} арифметический сдвигчисла CF
RCR o1 {,size}
RCL o1 {,size} циклический сдвигчерез флаг переноса
CF
ROR o1 {,size} ROL o1 {,size} циклический сдвиг с выносомвофлаг переноса
CF
ПРИМЕР: Подсчетколичествадвоичныхединиц вчисле
Xor bx,bx Mov cx,16
Repeat:
Shr ax,1 Jnc not_one Inc bx
Not_one: Loop Repeat
Команды сравнения:
CMP o1,o2
Cmpdl,ah
Cmpax,4
TEST о1,о2
Test ax,00000100b
Временное изменение типа переменной:
type Ptr выражение
Mov ax,word ptr [bp+4]
Псевдокоманды определения констант DB,DW,DD
s db 0X55
s1 db 0x55,0x56,’a’,’hello’ ; байтовая последовательность
55 |
56 |
61 |
48 |
65 |
6c |
6c |
6f |
|
|
|
|
|
|
|
|
s3 dw 0x1234 |
; |
|
|
|
|
|
|
|
34 |
12 |
|
|
|
||||
s4 dd 0x12345678 |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
78 |
|
56 |
|
34 |
12 |
||
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|