• Инициализаторы
– Константное выражение, в т.ч. (символическая) константа,
– Повтор: DUP , неинициализатор: ?
• Порядок следования байтов – сначала младшие
разрядный операнд, кодирующий 8-, 16-, 32-
разрядный РОН или адрес 8-, 16-, 32-разрядного
операнда в памяти
• mem- адрес 8-, 16-, 32-разрядного операнда в памяти
данных
• TYPE, LENGTHOF, SIZEOF – вычислить
размер данных
• LABEL – задать имя и тип адреса, без
выделения памяти,
LOOPD всегда ECX
LOOPW всегда CX
Загрузить 10000h
добавить 40000h
вычесть 20000h
записать результат (30000h)
отобразить регистры
• ОС+аппаратура
⇒Результат
Предписания исполнения
⇐Внешние события
⇐Внешние данные и код
• Загрузчик Предписания загрузки
link32 AddSub.obj irvine32.lib kernel32.lib
⇒Исполняемый код
PUSHAD/POPAD – регистры по 32 бита
EAX,ECX,EBX,ESP,EBP,ESI,EDI
• PUHSA/POPA - регистры по 16 бит
AX, CX, BX, SP, BP, SI, DI
в стек
Загрузим символ строки
Поместим его в стек
в обратном порядке.
Загрузим символ из стека
Сохраним в массиве
; Отобразим строку
mov edx,OFFSET aName
call WriteString
call CrLf
exit
main ENDP
Пример работы со стеком
• Функциональная декомпозиция
Разбиение сложного действия на простые
Автономная проверка простых действий
Обнаружение связей и оценка их «силы»
Разделение «структурирования» и кодирования
pushad ; Сохраним все регистры
mov edx,OFFSET promptl ; Адрес приглашения
L1:
call WriteString ; Выведем приглашение
call Readlnt ; Прочитаем число (оно в ЕАХ)
mov [esi],eax ; Запишем число в массив
add esi,4 ; Скорректируем указатель
; на следующий элемент массива
call CrLf ; Перейдем на новую строку' на экране
loop L1
popad ; Восстановим все регистры
ret
PromptForlntegers ENDP
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть