Содержание
- 2. Пример TITLE Сложение и вычитание (AddSub.asm) ; числа 32-разрядные .386 .MODEL flat, sdtcall .STACK 4096 ExitProcess
- 3. – – – – Директивы определения данных • Структура [имя] код инициализатор[,инициализаторы] • Имя идентификатор –
- 4. Типы операндов (команд) • r8, r16,r32 – 8-, 16-, 32-разрядный РОН • reg – произвольный РОН
- 5. - - - - Пересылки простые и неочевидные MOV получатель, источник Длина одинаковая Один операнд –
- 6. Директива ASSUME-специфицирует ‘сегментный регист’ как регистр, принимаемый по умолчанию для всех меток и переменных. assume CS:code,DS:data
- 7. Построить листинг, запустить отладчик (debug , –t, -r, u) Microsoft (R) Macro Assembler Version 4.00 3/4/13
- 8. Директива ORG Директива ORG устанавливает счетчик адресов в соответствии со значением заданного ей ‘выражения’. Последующие адреса
- 9. Директива EVEN Директива EVEN выравнивает последующий байт данных или инструкции по границе некоторого слова. Если текущее
- 10. Сложение и вычитание • Команды INC reg/mem DEC reg/mem NEG reg/mem ADD получатель, источник SUB получатель,
- 11. Работа с данными и адресами: операторы и директивы • OFFSET – вычислить смещение от начала сегмента
- 12. Адресация в Ассемблере 1. Регистровая адресация - операнды располагаются в любых регистрах общего назначения или сегментных
- 13. Адресация в Ассемблере 4. Косвенная адресация - адрес операнда в памяти можно не указывать непосредственно, а
- 14. Адресация в Ассемблере 6. Косвенная адресация с масштабированием mov ax,[esi*2]+2 - этот метод адресации полностью идентичен
- 15. Адресация в Ассемблере 7. Адресация по базе с индексированием - в этом методе адресации смещение операнда
- 16. Адресация • Прямая (адрес задан непосредственно) MOV MOV MOV MOV al,var1 al,[var1] al,[arrayB+1] al,[arrayD+4] • Косвенная
- 17. Безусловный переход и цикл JMP метка_перехода – безусловный переход LOOP метка_перехода – ECX/CX уменьшается на единицу
- 18. ; ; ; ; ; TITLE Add and Subtract, Version 2 (AddSub2.asm) ; Сложение и вычитание
- 19. Способы адресации Построить сегменты и создать exe файлы
- 20. ⇐Решения ОС Процесс создания программы • Редактор ⇒Ваш исходный текст • Ассемблер ⇒Объектный код • Компоновщик
- 21. Учебная библиотека ClrScr CrLf Delay DumpMem DumpRegs GetCommandTail GetMseconds GotoXY Random32 RandomiZe ReadChar ReadHex ReadInt ReadString
- 22. • • • • Стек • Понятие стека – LIFO (Last-In, FIst-Out) • Стековая адресация памяти
- 23. ● ● Стек, использование. PUSHF POPF ; SP ; Flags • Полезно: Сохранение регистров ● Пересылка
- 24. END main TITLE Программа реверсирования строк INCLUDE Irvine32.inc (RevString.asm) .data aName BYTE "abcdefghijklmnopqrstuvwxyz0123456789",0 nameSiZe = ($
- 25. – – – – Определение процедур • PROC и ENDP PROC ENDP • Документирование Целевые действия
- 26. – – – – Использование процедур • Вложенные вызовы • Локальные L1: и глобальные L2:: метки
- 27. Директивы PROC и ENDP Push ax;ввод в стек 3-го параметра Push bx;ввод в стек 2-го параметра
- 28. Пример с процедурами TITLE Программа суммирования целых чисел (Sum2.asm) ; Запрашивает несколько целых чисел, сохраняет их
- 29. Пример с процедурами (продолжение) ArraySum PROC Вычисляет сумму элементов массива 32-разрядных целых чисел Передается: ESI =
- 30. org 100h start: mov ax,13h; устанавливаем режим 320х240х256 цветов int 10h push 0A000h; ES=0A000h начало видеопамяти
- 31. Директивы MACRO,ENDM Макрокоманда представляет собой строку, содержащую некоторое символическое имя — имя макрокоманды, предназначенную для того,
- 32. Синтаксис макроопределения следующий: имя_макрокоманды macro список_формальных_аргументов тело макроопределения endm
- 34. Скачать презентацию