Приложение С. bat файл для компиляции и выполнения программ
Приложение С. .bat файл для компиляции и выполнения программ
@echo off
cls
rem удаление результатов предыдущей компиляции, если таковы были
if exist "%1.obj" del "%1.obj"
if exist "%1.exe" del "%1.exe"
rem компиляция (ассемблирование) исходного кода с получением листинга
c:\ASSEMBLER\masm %1.asm,%1.obj,%1.lst
if errorlevel 1 goto ErrAsm
rem редактирование объектного кода, получение исполняемой программы
if %2.==. goto TheLink
c:\ASSEMBLER\link %1.obj,,,%2.lib;
goto IfLinkError
:TheLink
c:\ASSEMBLER\link %1.obj;
:IfLinkError
if errorlevel 1 goto ErrLink
dir "%1.*"
echo Press Enter to continue Нажми Ввод для продолжения
Pause
goto TheExe
:ErrLink
echo _
echo Link error – Ошибка редактирования
goto TheEnd
:ErrAsm
echo _
echo Assembly Error – Ошибка ассемблирования
goto TheEnd
:TheExe
%1
:TheEnd
Pause
Замечание. Курсивом отмечен путь к компилятору и редактору связей. Предполагается, что .bat файл находится в том же каталоге, что и файл с исходной программой. Результаты попадут в тот же каталог. Пример запуска на компиляцию и выполнение программы в файле progr.asm: <имя_bat_файла>.bat progr (имя файла задано без расширения). В случае создания программы с использованием библиотеки bib.lib запуск может выглядеть следующим образом: <имя_bat_файла>.bat progr, bib.
Работа с отладчиком Turbo Debugger (TD)
Приложение B. Работа с отладчиком Turbo Debugger (TD)
Для запуска программы под управлением отладчика необходимо с клавиатуры ввести команду TD prog.exe. На экране появится окно отладчика:
Горячие клавиши отладчика:
Alt+F2 – Установка точки останова.
F2 – Снятие точки останова.
Alt + F3 – Закрыть окно.
F4 – Выполнить программу до заданной точки.
Alt + F4 – Back Trace.
F5 – ZOOM окна.
Alt + F5 – Просмотр окна выполнения программы.
F7 – Trace Into, шаг отладки с углублением в подпрограммы.
F8 – Step Over, полный шаг отладки без углубления в подпрограммы.
F9 – Run, запуск тестируемой программы на выполнение;
. запуск после точки останова.
Ctrl + NumLock – Прервать выполнение тестируемой программы,
. запущенной по команде RUN.
F10 – Главное меню.
Tab, Shift + Tab – Переход к следующему/предыдущему окну.
A..Z – Ввод команд Ассемблера в тело тестируемой
. программы по адресу в позиции курсора.
Ctrl + G – Задать начальный адрес интересуемой области памяти
Ctrl+C – Изменение данных в регистре или ячейке памяти
Ctrl+D – При редактировании ячейки памяти можно установить
. тип: byte, word и т.д.
Ctrl+S – Поиск необходимой инструкции или содержимого
. ячейки памяти
Alt + X – Выход из отладчика в DOS.
Комментарии к рисунку:
Все числа в команде представлены в шестнадцатеричном виде. Все метки и переменные представлены своими смещениями
Картина окна кода состоит из трех столбцов:
- Адрес. Смещения команд относительно начала сегмента.
- Машинный код команд.
- Исходный текст программы на языке Ассемблера.
Картина содержимого памяти (зона данных) состоит из двух частей:
- Шестнадцатеричная часть. Каждый байт выводится в виде шестнадцатеричного числа.
- Часть ASCII. Байты выводятся в виде символов ASCII.
- При размещении данных в памяти младшие байты располагаются по младшим адресам, а старшие по старшим. Отладчик показывает память от младших адресов к старшим, поэтому данные, определенные, например, как
dw 1234h, 5678h, dd 9ABCDEF1h
dt 10201234567890ABCDEFh
пользователь увидит, как это показано на нижеследующей схеме.
Вопросы по курсу Архитектура ПЭВМ и Ассемблер. Часть 2.
Вопросы по курсу Архитектура ПЭВМ и Ассемблер. Часть 2.
- Режимы адресации. Понятие относительного адреса (символические адреса). Примеры использования различных способов адресации.
- Классификация команд. команды пересылки данных: общего назначения, ввода-вывода, пересылки адреса, пересылка флагов.
- Арифметические команды: сложения, вычитания, сравнения, умножения, деления, расширения знака.
- Команды манипулирования битами логические команды (AND, OR, XOR, NOT, TEST), сдвига (SAL, SAR, SHL, SHR, ), циклического сдвига (ROL, ROR, RCL, RCR).
- Команды обработки строк: пересылка (MOVS), сравнение (CMPS), сканирование (SCAS), загрузка (LODS), сохранение(STOS), префиксы повторения (REP, REPE/REPZ, REPNE/REPNZ).
- Команды безусловного перехода JMP. Команды условной передачи управления. Команды управления циклами (LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ).
- Процедуры в языке ассемблера. Описание процедур. Команды вызова процедур. Команда возврата из процедуры. Косвенные вызовы процедур. Вложенные процедуры.
- Передача аргументов через регистры. Передача аргументов через общую область памяти. Передача аргументов через стек. Использование директив extrn и public. Возврат результата из процедуры.
- Макросредства языка Ассемблера. Псевдооператоры equ и =. Макрокоманды. Макрорасширения.Библиотеки макроопределений. Задание макроопределений в исходных программах.
- Макродирективы: WHILE, REPT, IRP и IRPC, IRP и IRPC, EXITM и GOTO.
- Директивы условной компиляции. Директивы IF и IFE — условная трансляция по результату вычисления логического выражения. Директивы IFDEF и IFNDEF — условная трансляция по факту определения символического имени.
- Директивы условной компиляции. Директивы IFB и IFNB — условная трансляция по факту определения фактического аргумента при вызове макрокоманды.
- Директивы условной компиляции. Директивы IFIDN, IFIDNI, IFDIF и IFDIFI — условная трансляция по результату сравнения строк символов.
- Константные выражения в условных директивах. Директивы генерации ошибок: .ERR. Условная генерация пользовательской ошибки: .ERRB (.ERRIFB) и .ERRNB
(.ERRIFNB), ERRDEF (.ERRIFDEF) и .ERRNDEF (.ERRIFNDEF),.ERRDIF (.ERRIFDIF) и .ERRIDN (.ERRIFIDN), ERRE (.ERRIFE) и .ERRNZ (.ERRIF). - Дополнительное управление трансляцией. Директивы DISPLAY, %OUT и LOCAL.
- Сложные структуры данных. Структуры. Описание шаблона структуры. Объединения. Записи. Определение экземпляра записи. Работа с записями.
- Команды управления микропроцессором. Команды управления флагами. Команды внешней синхронизации. Команда холостого хода.
- Прерывания работы микропроцессора. Внешние прерывания. Векторы прерывания. Маскируемые и немаскируемые прерывания. Внутренние прерывания. Команды прерывания.
Связь разноязыковых модулей Интерфейс между языком C и Ассемблером. Ассемблер, встроенный в C. Передача параметров между модулями. Вызов исполняемых модулей.Программирование в защищенном режиме. Системные регистры микропроцессора. Структуры данных защищенного режима. Пример программы защищенного режима.
Вопросы по курсу Архитектура ПЭВМ и Ассемблер. Часть 1.
Вопросы по курсу Архитектура ПЭВМ и Ассемблер. Часть 1.
- Понятие о микрокомпьютерах. Отличительные особенности этого класса компьютеров. Тенденции развития микро-ЭВМ. Понятие об архитектуре персональных ЭВМ.
- Устройство персональных ЭВМ (ПЭВМ). Устройство микропроцессора, крупноблочная схема. Основной цикл работы микропроцессора. Схема структурной организации микро-ЭВМ. Организация памяти. Сегментация. Физические и логические адреса. Регистры микропроцессора, системные регистры, регистр флагов.
- Введение в Ассемблер. Схема ассемблирования.
- Внутреннее представление данных. Константы с плавающей и фиксированной точкой. Десятичные константы. Строковые константы. Псевдооператоры представления данных (DB, DW, DD, DQ, DF, DP, DT).
- Модель программы. Сегментация программы. Псевдооператоры SEGMENT, ASSUME, PROC, END. Псевдооператоры управления листингом.