EXERSISE (Ассемблер - упражнения), страница 5

2019-04-28СтудИзба

Описание файла

Файл "EXERSISE" внутри архива находится в папке "Ассемблер - упражнения". Текстовый-файл из архива "Ассемблер - упражнения", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр 5 страницы текстового-файла онлайн

Вычислить значение этой формулы. (Пример: ((5-2)+7) --> 10)

б) Для ввода задана последовательность символов, представляющая собой

(без ошибок) формулу следующего вида:

<формула> ::= <цифра> | m(<формула>,<формула>) | m(<формула>,<формула>)

<цифра> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

где m трактуется как max (максимум), а m - как min (минимум).

Вычислить значение этой формулы. (Пример: m(2,m(5,7)) --> 5)

Глава 9. ПРОЦЕДУРЫ.

Дальние безусловные переходы. Описание процедур, команды call и ret. Пе-

редача параметров (по значению и по адресу) через регистры. Передача па-

раметров через стек, "входные" и "выходные" действия процедуры. Локальные

данные процедуры. Реализация рекурсивных процедур.

УПРАЖНЕНИЯ.

9.1 Описать программу, которая вводит 4 положительных числа и опреде-

ляет их наибольший общий делитель.

В программе описать и использовать процедуру нахождения наибольшего

общего делителя двух чисел (эти числа-параметры передавать через регист-

ры) при условии, что:

а) в программе должен быть только один сегмент команд,

б) процедура должна быть описана в отдельно сегменте команд.

9.2 Используя из операций ввода только операцию inch, описать проце-

дуру inbyte, которая вводит десятичное число от 0 до 255 (число задано

без ошибок, за ним следует пробел) и присваивает его байтовой переменной,

адрес (смещение в сегменте данных) которой передается процедуре через ре-

гистр bx.

9.3 Описать процедуру negative, которой через регистр bx передается

адрес некоторой переменной (из сегмента данных) размером в двойное слово

и которая меняет ее значение на противоположное (меняет знак).

Используя эту процедуру, выписать фрагмент программы, в котором меня-

ются знаки у переменных x, y и z, имеющих размер двойного слова.

9.4 date struc ;тип "дата"

d db ? ;день

m db ? ;месяц

y dw ? ;год

date ends

Описать процедуру less, которая сравнивает две даты типа date, адрес пер-

вой их которых передается через регистр si, а адрес второй - через di, и

которая возвращает через регистр al свой ответ: 1, если первая дата пред-

шествует второй, и 0 иначе.

9.5 Описать процедуру outarr, осуществляющую вывод байтового массива,

чей начальный адрес передается через регистр bx, а количество элементов -

через регистр cx. Используя эту процедуру, выписать фрагмент программы

для решения следующей задачи: если последний элемент 60-байтового массива

a равен среднему элементу 101-байтовому массиву b, тогда вывести массив

a, иначе вывести массив b.

9.6 Описать подходящую процедуру и, используя ее, выписать фрагмент

программы для решения следующей задачи.

Имеются массивы x[0..59], y[0..22] и z[0..89] из знаковых чисел-слов.

Требуется заменить максимальный элемент массива x на последний элемент

массива y и заменить все элементы массива z, предшествующие его макси-

мальному элементу, на максимальный элемент массива z. (Считать, что в ка-

ждом массиве только один максимальный элемент.)

9.7 Описать процедуру f(x,n,p), подсчитывающую количество элементов

массива x из n слов, равных числу p, при условии, что адрес x передается

через регистр bx, число n - через cx, число p - через al, а результат

процедуры возвращается через регистр al.

Использовать эту процедуру для вычисления

k:=f(a,70,f(b,30,k))

где a - массив из 70 слов, b - массив из 30 слов, а k - байтовая перемен-

ная.

9.8 Описать дальнюю процедуру sign, которая определяет знак своего

параметра (выдает 1 при положительном параметре, 0 при нулевом и -1 при

отрицательном), при условии, что результат процедура возвращает через ре-

гистр al, а параметр ей передается (по значению) через стек.

Процедуру описать в двух вариантах:

а) размер параметра - слово,

б) размер параметра - байт.

9.9 Описать близкую процедуру setabs, которой через стек передается

адрес (смещение в сегменте данных) некоторой знаковой байтовой переменной

и которая заменяет ее значение на абсолютную величину.

Использовать эту процедуру для решения следующей задачи: a и b -

знаковые байтовые переменные; при a>b заменить на абсолютную величину

значение переменной b, иначе - переменной a.

9.10 Описать дальнюю процедуру zero от 20 параметров, которые переда-

ются через стек и каждый из которых представляет собой адрес некоторой

байтовой переменной (из сегмента данных). Процедура должна обнулить те из

этих переменных, значения которых положительны.

9.11 Описать близкую процедуру, которая определяет, есть ли в задан-

ном байтовом массиве хотя бы два равных элемента, при условии, что пара-

метры (начальный адрес массива и число элементов в нем) передаются через

стек.

Использовать эту процедуру для решения следующей задачи: если в мас-

сиве x из 400 байтов есть повторяющиеся элементы, а в массиве y из 60

байтов все элементы различны, тогда в регистр al записать 1, а иначе за-

писать 0.

9.12 Используя из операций вывода только операцию outch, описать

дальнюю процедуру outw, которая выводит в десятичном виде и без незнача-

щих нулей беззнаковое число размером в слово, переданное процедуре:

а) через регистр ax,

б) через стек.

Процедура должна выделять десятичные цифры числа справа налево и вре-

менно сохранять их в массиве, место под который отводится в стеке.

9.13 Описать близкую процедуру, которая за один просмотр заданного

байтового массива циклически сдвигает его элементы на заданное число по-

зиций вперед, при условии, что параметры для процедуры (способ передачи

параметров - через регистры или стек - выбрать самим). В своей работе

процедура должна использовать вспомогательный массив, отведя место для

него в стеке.

Использовать эту процедуру для решения следующей задачи: элементы

300-байтового массива x циклически сдвинуть на 40 позиций вперед, а эле-

менты 80-байтового массива y - на 15 позиций.

9.14 Для каждой из байтовых переменных a и b вывести строку вида

<адрес>:<содержимое>

где <адрес> - это адрес (смещение в сегменте данных) переменной в виде

четырехзначного шестнадцатиричного числа, а <содержимое> - значение пере-

менной в виде двузначного шестнадцатиричного числа (например: 01a8:f5).

При решении этой задачи описать и использовать следующие процедуры:

- вывод числа от 0 до 15 в шестнадцатиричном виде,

- вывод байта в виде двух шестнадцатиричных цифр,

- вывод строки указанного вида для одной переменной.

9.15 Описать программу, которая в цикле вводит приказы указанных ниже

типов и тут же выполняет их. (Считать, что приказы задаются без ошибок.)

Возможные приказы:

s seg:ofs. - напечатать в шестнадцатиричном виде (4 цифры) слово,

абсолютный адрес которого определяется парой seg:ofs

(номер сегмента : смещение);

l seg:ofs=w. - в слово памяти, абсолютный адрес которого задан парой

seg:ofs, записать новое значение w;

e. - завершить работу программы.

Здесь seg, ofs и w - шестнадцатиричные числа (от 1 до 4 цифр), причем

"буквенные" цифры могут быть записаны как большими (от a до f), так и ма-

лыми (от a до f) латинскими буквами.

9.16 Для ввода задана последовательность положительных чисел, за ко-

торой следует 0. Описать рекурсивную процедуру reverse, которая вводит

эти числа и выводит их (без 0) в обратном порядке.

9.17 Описать рекурсивную процедуру c, вычисляющую биномиальный коэф-

фициент c(m,n), где 0<=m<=n, по следующей формуле:

| 1 при m=0 или m=n

c(m,n) = {

| c(m,n-1)+c(m-1,n-1) при 0<m<n

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее