- •Е.Ю. Колотовкина программирование микропроцессоров фирмы intel
- •Глава 1. Основы программирования микропроцессоров фирмы Intel
- •1.6 Команды обработки строк
- •Глава 2. Варианты самостоятельных и контрольных работ
- •2.1 Самостоятельная работа по теме «Архитектура пк»
- •2.2 Самостоятельная работа по теме «Подготовка ассемблерной программы к выполнению»
- •2.3 Самостоятельная работа по теме «Логика и организация программы»
- •2.4 Самостоятельная работа по теме «Экранные операции»
- •2.5 Самостоятельная работа по теме «Команды обработки строк»
- •2.6 Самостоятельная работа по теме «Арифметические операции»
- •2.7 Итоговая контрольная работа
- •Глава 3. Варианты заданий для практических занятий
- •3.1 Практическая работа №1. Создание программы на ассемблере
- •3.2 Практическая работа №2. Вывод символов на экран
- •3.3 Практическая работа №3. Ввод символов c клавиатуры
- •3.4 Практическая работа №4. Арифметические команды
- •3.5 Практическая работа №5. Организация цикла
- •3.7 Практическая работа №7. Условные переходы
- •3.8 Практическая работа №8. Команды сдвига
- •3.9 Практическая работа №9. Цепочечные команды
- •Литература
- •Глава 1. Основы программирования микропроцессоров фирмы Intel . . . . 5
- •Глава 2. Варианты самостоятельных и контрольных работ . . . . . . . . . . . .38
- •Глава 3. Варианты заданий для практических занятий . . . . . . . . . . . . . .43
2.6 Самостоятельная работа по теме «Арифметические операции»
1. Для чего используется флаг переноса при выполнении сложения и вычитания двоичных кодов?
2. Почему у команд умножения и деления только один операнд?
3. Составьте программный код для вычисления периметра прямоугольника.
4. Что произойдет в результате выполнения следующих команд?
Mov ax,09
Inc ax
Mov bx, 12
Add bx,ax
Dec bx
5. Найти ошибку
Mov cl,08
Mov dx,34
Sub dx,cl
2.7 Итоговая контрольная работа
Указать значения байтов с адресами A+1, B+2, A+2, B+1, если
А db 0,1,2
B db 3,4,5,6.
3. Что получится в результате выполнения следующих команд?
mov ax,01
mov bx,01
a1: add ax,01
shl bx,1
jmp a1
4.Составьте фрагмент программы для ввода с клавиатуры слова «ассемблер».
5. Исправьте ошибки во фрагменте программы для пересылки десяти байт из одной области памяти в другую:
str1 dt ‘&&&&&&&&&&’
str2 db 10 dup(?)
……
mov cx,10
lea di,str1
lea si,str2
rep movsw
6. Составьте программу для нахождения площади квадрата, сторона которого находится в регистре al.
Глава 3. Варианты заданий для практических занятий
3.1 Практическая работа №1. Создание программы на ассемблере
Цель: научиться формировать исполнительный модуль по исходному тексту ассемблерной программы.
Вариант 1
Программа на языке программирования Ассемблер для exe-файла состоит не менее, чем из двух частей – сегментов: сегмента стека и сегмента кода. Каждый сегмент имеет уникальное имя, для открытия сегмента используется директива segment. Закрывается сегмент директивой ends.
Сегмент стека представляет собой область памяти для записи адресов возврата в DOS, из процедур в основную программу и при использовании прерываний. Обычным размером стека являются 32 слова неопределенного содержания, которые определяются в программе как dw 32 dup (?).
Сегмент кода содержит команды, которые необходимо выполнить в программе.
Если для работы программы необходимы переменные, то их задание осуществляется в отдельном сегменте – сегменте данных.
Пример ассемблерной программы:
stecsg segment; открытие сегмента стека с именем stecsg
dw 32 dup (?); размер стека – 32 слова неопределенного содержания
stecsg ends; закрытие сегмента стека
datasg segment; открытие сегмента данных с именем datasg
a db 5; переменная а размером байт, в котором содержится 5
b dw 1, 2, 3, 4; переменная b из четырех слов, в которых записаны соответствующие ;значения
s db ‘assemblers’; строковая переменная s
datasg ends; закрытие сегмента данных
codesg segment; открытие сегмента кода
begin proc far; открытие основной процедуры
assume ss: stecsg, ds:datasg, cs:codesg; соответствие между сегментными регистрами ;и именами сегментов
push ds; помещение в стек содержимого ds
sub ax,ax; обнуление регистра ах
push ax; помещение в стек нулевого адреса
мov ax, datasg; использование ах в качестве промежуточного буфера для пересылки
mov ds, ax; между областью памяти и сегментным регистром
mov bx,b; пересылка
add ax,bx; сложение
sub a,bx; вычитание
shl al,1; сдвиг влево на 1 бит
ret; возврат в DOS
begin endp; закрытие процедуры
codesg ends; закрытие сегмента кода
end begin; закрытие программы
Задание: Составить программу, в которой задаются переменные z1, равная двоичному эквиваленту числа 34, z2, равная шестнадцатиричному значению числа 25, z3, содержащая символьное значение ‘информатика’; выполняются следующие команды: пересылка из z1 в регистр al, увеличение его на 1, пересылка в регистр сх значение z2, сдвиг его влево на 1 бит и умножение его на al.Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.
Вариант 2
Задание: Составить программу, в которой задаются переменные f1, равная двоичному эквиваленту числа 38, f2, равная шестнадцатиричному значению числа 25, f3, содержащая символьное значение ‘информатика’; выполняются следующие команды: пересылка из f1 в регистр al, увеличение его на 1, пересылка в регистр сх значение f2, сдвиг его влево на 1 бит и умножение его на al.Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.
Вариант 3
Задание: Составить программу, в которой задаются переменные g1, равная двоичному эквиваленту числа 44, g2, равная шестнадцатиричному значению числа 26, g3, содержащая символьное значение ‘программа’; выполняются следующие команды: пересылка из g1 в регистр bh, уменьшение его на 1, пересылка в регистр ах значение g2, сдвиг его вправо на 2 бита и деление его на bh. Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.
Вариант 4
Задание: Составить программу, в которой задаются переменные b1, равная двоичному эквиваленту числа 35, b2, равная шестнадцатиричному значению числа 27, b3, содержащая символьное значение ‘строка’; выполняются следующие команды: пересылка из b1 в регистр ah, увеличение его на 10, пересылка в регистр bх значение b2, сдвиг его влево на 3 битa и вычитание из него ah. Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.
Вариант 5
Задание: Составить программу, в которой задаются переменные n1, равная двоичному эквиваленту числа 36, n2, равная шестнадцатиричному значению числа 28, n3, содержащая символьное значение ‘assemblers’; выполняются следующие команды: пересылка из al в n1, увеличение его на 1, пересылка в регистр dх значение n2, сдвиг его вправо на 1 бит и умножение его на al. Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.
Вариант 6
Задание: Составить программу, в которой задаются переменные f1, равная двоичному эквиваленту числа 39, f2, равная шестнадцатиричному значению числа 29, f3, содержащая символьное значение ‘информатика’; выполняются следующие команды: пересылка из f1 в регистр al, увеличение его на 5, пересылка в регистр сх значение f2, сдвиг его влево на 1 бит и умножение его на bl.Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.
Вариант 7
Задание: Составить программу, в которой задаются переменные p1, равная двоичному эквиваленту числа 40, p2, равная шестнадцатиричному значению числа 30, p3, содержащая символьное значение ‘segment’; выполняются следующие команды: пересылка из p1 в регистр cl, уменьшение его на 1, пересылка в регистр bх значение p2, сдвиг его влево на 1 бит и умножение его на ax. Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.
Вариант 8
Задание: Составить программу, в которой задаются переменные v1, равная двоичному эквиваленту числа 41, v2, равная шестнадцатиричному значению числа 34, v3, содержащая символьное значение ‘procedure’; выполняются следующие команды: пересылка из v1 в регистр dh, увеличение его на 4, пересылка в регистр сх значение v2, сдвиг его вправо на 1 бит и умножение его на aх.Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.
Вариант 9
Задание: Составить программу, в которой задаются переменные d1, равная двоичному эквиваленту числа 42, d2, равная шестнадцатиричному значению числа 54, d3, содержащая символьное значение ‘информатика’; выполняются следующие команды: пересылка из d1 в регистр al, увеличение его на 10, пересылка в регистр dх значение d2, сдвиг его влево на 2 битa и умножение его на ax. Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.
Вариант 10
Задание: Составить программу, в которой задаются переменные z1, равная двоичному эквиваленту числа 38, z2, равная шестнадцатиричному значению числа 25, z3, содержащая символьное значение ‘информатика’; выполняются следующие команды: пересылка из z1 в регистр al, увеличение его на 1, пересылка в регистр сх значение z2, сдвиг его влево на 1 бит и умножение его на al.Выполнить ассемблирование и компоновку исходного модуля с помощью программ tasm.exe и tlink.exe, проверить выполнение программы в пошаговом режиме, используя программу debug.exe.
Оформить отчет по лабораторной работе в тетради.