Часть 3. Ассемблернаяпрограмма
Порядок выполнения работ
1. Разработать алгоритм решения задачи, в которой используется математические функции вида:
или
В качестве f(x) использовать многочлены тип:
Значение переменной Х изменяется от Хn до Хk с шагом Хs.
В индивидуальном задании изменяются степень, знакии коэффициенты у компонентов многочлена.
2. Предусмотреть:
· ввод начального значения — Хn;
· ввод конечного значения — Хk;
· ввод шага (приращения) значения — Хs.
· вывод результатов расчета (Y) (это может быть однократнй вывод — в конце программы, либо в виде таблицы, содержащей колонки:номер шага,значение Х, значение Y. Вывод строк таблицы выполняется в каждом цикле программы перед очередным изменением Х).
3. Разработать ассемблерную программу решения задачи.
4. Выполнить отладку программы с использованием отладчика DEBUG.
5. Создать файл исполнимой программы с расширением .EXE.
6. Выполнить программу в автоматическом режиме.
7. Деассемблировать программу (используя DEBUG) и записать полученный листинг.
8. Показать все результаты работы преподавателю.
Содержание отчета
· постановка задачи, алгоритм и ассемблерная программа ее решения;
· описание всех выполняемых процедур и экраны диалога по всемзаданиям работы;
· листинг программы и его анализ;
· результаты выполнения программы и их анализ;
· замечания и предложения по содержанию и методике выполнения работы.
Часть 4. Изучение процедур преобразования ascii-кода в двоичный код (STR2BIN)и двоичного кода в код ASCII (BIN2STR).
Краткие пояснения
Привводе-выводеинформации в ПК используется ASCII-код ее представления. ПреобразованиеASCII-кодавдвоичный код обычно используется послевводаинформации с клавиатуры при необходимости выполнения над этой информацией каких либо арифметических преобразований (выполнять арифметические операции непосредственно над ASCII-кодами в ПК существенно сложнее).
Процедура преобразования заключается в следующем:
· преобразованиеASCII-кода выполняется справа налево, начиная с крайнего правого байта;
· вкаждомбайте ASCII-кода обнуляется левый полубайт (зона), в правомполубайтекаждого байта остается, таким образом, двоичный кодочереднойдесятичнойцифрычисла (формируется очищенный от "троек" распакованный двоично-десятичный код числа);
· цифры(байты)полученного кода умножаются, соответственно, на 1,10, 100, 1000 и так далее, и полученные произведения складываются.
ПрограммаSTR2BIN,выполняющая рассматриваемое преобразование, приведенаниже (преобразуемый ASCII-код находится в поле buf, которое служит буфером при вводе информации с клавиатуры и, соответственно,описывается в сегменте данных как:
buf db M,0,0,0,...0
гдеM - максимальное количество вводимых символов; сформированное двоичное число записывается в поле valn).
str2binproc near
movdi,1
movcx,0ah
movsi,offset buf+1
subbh,bh
movbl,[buf+1]
m2:moval,[si+bx]
andax,0fh
muldi
addvaln ,ax
movax,di
mulcx
movdi,ax
decbx
jnzm2
ret
str2binendp
Преобразованиедвоичныхкодов в коды ASCII обычно применяется передвыводом десятичных чисел, соответствующих этим двоичным кодам, на экран монитора или на принтер.
Процедура преобразования заключается в следующем:
· двоичноечисло, а затем получающиеся частные от деления последовательно делятся на десять до тех пор, пока очередное частное не станет равным нулю;
· остаткиотделения записываются в правые полубайты последовательныхбайтовсправа налево, левые полубайты этих байтов – зоны заполняются кодом 0011 ("тройками").
ПроцедураBIN2STR,выполняющаярассматриваемое преобразование,приведенаниже(примечание: преобразуемоедвоичноечислонаходится в полеvalb; полученный M-разрядный ASCII-код этого числа в поле sr).
bin2str procnear
mov cx,10
mov si,offset sr+M-1
mov ax,valb
m1: sub dx,dx
div cx
ordl,30h
mov [si],dl
dec si
cmp ax,0
jne m1
ret
bin2str endp
Перечень заданий
Выполнить пошаговую трассировку в отладчике Debug процедур Str2bin и Bin2str, задавпри этомASCII-код двухзначного десятичного чмсла на входе процедуры Str2bin исемизначное двоичное число на входепроцедурыBin2str.
По результатам трассировки построить блок-схемы алгоритмовработы процедур.
Содержание отчета
· Назначение процедур Str2binи Bin2str.
· Листингитрассировки не менее двух циклов процедур с пояснениями выполненных команд.
· Блок-схемы алгоритмов выполнения процедур.