- •Машинное исполнение
- •1. Просмотр памяти.
- •2. Пример машинных кодов: непосредственные данные.
- •3. Пример машинных кодов: определение данных.
- •4. Пример машинных кодов: определение размера памяти.
- •5. Специальные средства отладчика.
- •6. Сохранение программы из отладчика.
- •Ассемблирование и выполнение программы
- •1. Ввод программы
- •2. Ассемблирование программы.
- •3. Компоновка программы.
- •4. Выполнение программы.
- •5. Ввод, ассемблирование, компоновка, выполнение и анализ листинга исходной программы.
- •Определение данных
- •1. Директивы определения данных.
- •2. Определение данных с числом повторений.
- •3. Директива определения байта (dв).
- •4. Директива определения слова (dw).
- •5. Директива определения двойного слова (dd).
- •6. Директива определения поля из четырех слов (dq).
- •7. Директива определения десяти байт (dt), директива equ.
- •Программы в com-файлах
- •1. Создание exe-файла.
- •2. Получение com-файла.
- •Логика и организация программы
- •1. Команда jmp.
- •2. Команда loop.
- •3. Сегмент стека.
- •4. Программа: расширение операции пересылки.
- •5. Программа: замена строчных букв на заглавные.
- •6. Команды сдвига и циклического сдвига.
- •7. Команды логических операций: and, or, xor, test, not.
- •Xor al,bl ;Логическое сравнение
- •Команды обработки строк
- •1. Rep: префикс повторения команды.
- •2. Программа: строковые операции.
- •3. Сканирование и замена.
- •4. Дублирование образца.
- •5. Программа: выравнивание справа при выводе на экран.
- •Арифметические операции 1: обработка двоичных данных
- •1. Сложение и вычитание.
- •2. Многословное сложение.
- •3. Умножение.
- •4. Повышение эффективности умножения.
- •5. Многословное умножение.
- •6. Сдвиг регистровой пары dx:ax.
- •7. Деление.
- •8. Деление вычитанием.
- •9. Преобразование знака.
- •Арифметические операции 2: обработка данных в форматах ascii и
- •1. Сложение в ascii-формате.
- •2. Вычитание в ascii-формате.
- •3. Умножение в ascii-формате.
- •4. Деление в ascii-формате.
- •5. Двоично-десятичный формат (bcd).
- •6. Преобразование ascii-формата в двоичный формат и наоборот.
- •Обработка таблиц
- •1. Прямой табличный доступ
- •2. Табличный поиск.
- •3. Табличный поиск с использованием сравнения строк.
- •4. Транслирующая команда xlat.
- •5. Программа: вывод шестнадцатиричных и ascii-кодов.
- •6. Программа: сортировка элементов таблицы.
- •Макрокоманды
- •If (условие)
- •If (условие)
- •1. Простое макроопределение.
- •2. Использование параметров в макрокомандах.
- •3. Комментарии в макрокомандах.
- •4. Использование макрокоманд внутри макроопределения.
- •5. Директива local.
- •6. Использование библиотек макроопределений.
- •7. Конкатенация (&).
- •8. Директивы повторения: rept, irp, irpc.
- •Inc ctr ;Увеличить счетчик
- •Inc dx ;Увеличить счетчик
- •Inc dx ;Увеличить счетчик
- •9. Макрокоманды, использующие директивы if и ifndef.
- •10. Макрокоманды, использующие директиву ifidn.
- •Связь между подпрограммами
- •1. Программа: использование директив extrn и public для меток.
- •2. Программа: использование директивы public в кодовом сегменте.
- •3. Программа: общие данные в подпрограмме.
- •4. Передача параметров.
8. Деление вычитанием.
8.1. Если частное слишком велико, то деление можно выполнить с помощью циклического вычитания. Метод заключается в том, что делитель вычитается из делимого и в том же цикле частное увеличивается на 1. Вычитание продолжается до тех пор, пока делимое остается больше делителя.
8.2. Составьте в текстовом редакторе NORTON программу exdsub.asm в СОМ-формате:
MAIN PROC NEAR
MOV AX,81H
MOV BX,30H
SUB CX,CX ;Очистка частного
C20: CMP AX,BX ;Если делимое < делителя
JB C30 ;то выйти
SUB AX,BX ;Вычит. делит. из делимого
INC CX ;Инкремент частного
JMP C20 ;Повторить цикл
C30: RET ;Частное в СХ, остаток в АХ
MAIN ENDP
Делитель находится в регистре АХ, а делимое - в ВХ, частное вырабатывается в СХ.
В конце программы регистр СХ будет содержать частное, в АХ - остаток.
8.3. Выполнить ассемблирование и компоновку программы. Записать листинг программы в отчет. Вызвать отладчик DEBUG на выполнение программы.
8.4. Выполнить трассировку программы внимательно отслеживая
содержимое регистров АХ, ВХ и СХ. Выводы о работе программы записать в отчет.
9. Преобразование знака.
9.1. Составьте в текстовом редакторе NORTON программу exnot.asm в СОМ-формате:
MAIN PROC NEAR
MOV AX,81H
MOV DX,30H
NEG AX
NEG DX
MOV AX,81H
MOV DX,30H
NOT DX ;Инвертирование битов
NOT AX ;Инвертирование битов
ADD AX,1 ;Прибавление 1 к АХ
ADC DX,0 ;Прибавление переноса к DX
RET
MAIN ENDP
Команда NEG обеспечивает преобразование знака двоичных чисел из положительного в отрицательное и наоборот. Команда NEG устанавливает противоположные значения битов и прибавляет 1.
Команда NOT применяется для преобразования знака регистровой пары DX:AX.
9.2. Выполнить ассемблирование и компоновку программы. Записать листинг программы в отчет. Вызвать отладчик DEBUG на выполнение программы.
9.3. Выполнить трассировку программы внимательно отслеживая содержимое регистров АХ и DХ. Выводы о работе программы записать в отчет.
СОДЕРЖАНИЕ ОТЧЕТА:
1. Листинги программ.
2. Выводы о работе программ.
КОНТРОЛЬНЫЕ ВОПРОСЫ:
Вопросы имеют отношение к следующим данным:
DATAX DW 0148H
DW 2316H
DATAY DW 0237H
DW 4052H
DATAZ DW 0 ;Для результата
DW 0 ;Для результата
DW 0 ;Для результата
1. Закодируйте команды для сложения: а) слова DATAX со словом DATAY; б) двойного слова, начинающегося по адресу DATAX, с двойным словом в DATAY.
2. Объясните действие следующих команд:
STC
MOV BX,DATAX
ADC BX,DATAY
3. Закодируйте команды для умножения (MUL): а) слова DATAX на слово DATAY: б) двойного слова, начинающегося по адресу DATAX на слово DATAY.
4. Закодируйте команды для деления (DIV): а) слова DATAX на 23; б) двойного слова, начинающегося по адресу DATAX, на слово DATAY.
ОТВЕТЫ:
1. а) MOV AX,DATAY
ADD AX,DATAX
MOV DATAZ,AX
б) MOV AX,DATAX+2
ADD AX,DATAY+2
MOV DATAZ+2,AX
MOV AX,DATAX
ADC AX,DATAY
MOV DATAZ,AX
2. Команда STC устанавливает флаг CF. Сумма равна 0148Н плюс 0237Н плюс 1.
3. а) MOV AX,DATAX
MUL DATAY
MOV DATAZ+2,AX
MOV DATAZ,DX
б) MOV AX,DATAX+2
MUL DATAY
MOV DATAZ+4,AX
MOV DATAZ+2,DX
MOV AX,DATAX
MUL DATAY
ADD DATAZ+2,AX
ADC DATAZ,DX
4. а) MOV AX,DATAX
MOV BL,23
DIV BL
MOV DATAZ,AX
б) MOV DX,DATAX
MOV AX,DATAX+2
DIV DATAY
MOV DATAZ+2,AX
MOV DATAZ,DX
Л а б о р а т о р н а я р а б о т а N 8