Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч.-пр. пособие.doc
Скачиваний:
27
Добавлен:
26.02.2016
Размер:
327.17 Кб
Скачать

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 Итоговая контрольная работа

  1. Указать значения байтов с адресами 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.

Оформить отчет по лабораторной работе в тетради.