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

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

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

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

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

7.1 abs dd ?

pair dd ?

Значение переменной abs трактуется как 20-разрядный абсолютный адрес не-

которой ячейки памяти, а значение переменной pair - как адрес этой же

ячейки, но заданный в виде адресной пары сегмент:смещение (seg:ofs), при-

чем в силу "перевернутого" представления двойных слов в памяти часть ofs

находится в первом слове этой переменной, а часть seg - во втором.

Не используя команды умножения и деления, решить следующие задачи:

а) преобразовать абсолютный адрес abs в адресную пару pair;

б) преобразовать адресную пару pair в абсолютный адрес abs;

в) нормализовать адресную пару pair, т.е. преобразовать ее к виду,

где смещение ofs не превосходит 15 (0fh); например, пару 4567h:1112h надо

привести к виду 4678h:2h.

7.2 Пусть es=4208h, bx=0fff0h и offset x=28ah. Вычислить абсолютный

адрес второго операнда каждой из следующих команд.

а) mov ax,es:15h

б) cmp bx,es:x

в) add cx,es:[bx]

г) xor dx,es:x[bx+15h]

7.3 Пусть cs=1111h, ds=2222h, ss=3333h, bx=8000h, bp=8000h, si=9003h.

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

дой из следующих команд, и вычислить абсолютный адрес первого операнда

этих команд.

а) sub [bx],cl

б) mov [bp+2],dx

в) jmp word ptr [bx+si]

г) jmp word ptr [bp+si-4]

7.4 Пусть переменная d описана в сегменте d1, переменная e - в сег-

менте e1, а переменная s - в сегменте s1. Для последнего операнда каждой

из следующих команд определить, какой из префиксов (ds:, es: или ss:) вы-

берет ассемблер при трансляции этого операнда, и определить, сохранит ли

ассемблер этот префикс при формировании соответствующей машинной команды.

assume ds:d1, es:e1, ss:s1

mov ax,d

mov ax,e

mov ax,s

add ax,d[bx]

add ax,e[si]

add ax,s[bx+di]

cmp ax,d[bp]

cmp ax,e[bp+2]

cmp ax,s[bp+di]

inc byte ptr [di]

inc word ptr [si+bp-1]

7.5 c segment

assume cs:c

x dw 1

beg: mov ax,y

add ax,x

...

y dw 2

c ends

При трансляции команды mov ассемблер зафиксирует ошибку, тогда как транс-

ляция команды add пройдет без ошибки. В чем разница между этими двумя

случаями? Как исправить ошибку в команде mov?

7.6 include io.asm

s segment stack

db 128 dup(?)

s ends

d1 segment

x dw 20000 dup(?)

d1 ends

d2 segment

y dw 20000 dup(?)

d2 ends

c segment

assume ... ;директива уточняется в условии задачи

beg: ... ;ввод массивов x и y

...

(*)

outint ax ;вывод ответа

finish

c ends

end beg

Вставьте в эту программу вместо (*) команды, которые проверяют на равенс-

тво массивы x и y и записывают ответ (1 - равны, 0 - не равны) в регистр

ax. Предполагается, что до этих команд значения сегментных регистров не

определены и что в этой программе задана следующая директива assume (дру-

гих таких директив нет, новые не вводить):

а) assume cs:c, ds:d1, es:d2

б) assume cs:c, ds:d1

в) assume cs:c

7.7 Пусть в сегменте a описан массив x, в сегменте b - массив y, а в

сегменте c - массив z, причем каждый из этих массивов состоит из 45000

знаковых чисел-байтов. Выписать фрагмент программы, в котором все отрица-

тельные элементы массива x переносятся в начало массива y, а все осталь-

ные элементы - в начало массива z, в предположении, что до этого фрагмен-

та указана директива assume, в которой сегменту a поставлен в соответст-

вие регистр ds, и что этот регистр уже установлен на начало сегмента a.

7.8 Требуется записать в регистр ax слово памяти из ячейки с абсолют-

ным адресом 20a75h. Определить, какие из следующих групп команд правильно

решают эту задачу:

а) mov bx,20a75h б) mov bx,20a7h в) mov es,20a7h

mov ax,[bx] mov ax,[bx+5] mov ax,es:5

г) mov ax,20a7h д) mov ax,20a7h е) mov ax,20a7h

mov es,ax mov ds,ax mov ds,ax

mov ax,es:5 mov ax,5 mov bx,5

mov ax,[bx]

7.9 Выписать фрагмент программы, в котором определяется, сколько ну-

левых байтов среди 300 байтов, начинающихся с абсолютного адреса 3fff8h,

и ответ записывается в регистр ax.

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

а) Ввести непустой текст из любых символов (кроме точки), за которым

следует точка, и вывести этот текст, удалив из него лишние пробелы (из

подряд идущих пробелов оставить только один).

б) Ввести текст из 50 символов и определить, симметричен ли он. В ка-

честве ответа вывести "симметричен" или "не симметричен".

в) Ввести текст из 100 (любых) символов и для каждой большой латинс-

кой буквы определить, сколько раз она входит в этот текст.

г) Ввести 45 различных знаковых чисел и найти сумму чисел между мак-

симальным и минимальных из этих чисел.

д) Ввести дату, заданную в формате

<десятичное число>/<номер месяца римскими цифрами>

(например: 5/xii, 12/iv), и вывести ее в формате

<десятичное число> <название месяца>

(например: 5 декабря, 12 апреля).

Глава 8. СТЕК.

Сегмент стека, регистры ss и sp. Стековые команды (push, pop, pushf,

popf). Приемы работы со стеком. Регистр bp и доступ к элементам стека.

УПРАЖНЕНИЯ.

8.1 x и y - переменные размером в двойное слова. Выписать команды,

которые пересылают значение x в y через стек, т.е. выполняют присваивание

y:=x.

8.2 Определить, какие значения будут находиться в байте с адресом

ss:sp и в байте с адресом ss:(sp+1) после выполнения команд

mov ax,0102h

push ax

8.3 Если на сегмент стека отведено 200 байтов и текущее значение ре-

гистра sp равно 150, то сколько сейчас слов записано в стеке?

8.4 Под сегмент стека отведено 256 байтов. Выписать группу команд,

записывающих в стек содержимое регистра dx, но только если стек не полон

(при полном стеке передать управление на метку err1), и группу команд,

считывающих в регистр dx слово из вершины стека, но только если стек не

пуст (при пустом стеке передать управление на метку err2).

8.5 Выписать фрагмент программы, в котором вводится вводится последо-

вательность ненулевых чисел, заканчивающаяся нулем, и эти числа выводятся

в обратном порядке, но только если среди них нет отрицательных чисел (в

противном случае ничего не выводить). Исходное значение регистра sp долж-

но быть сохранено.

8.6 В стек записано 40 слов. Определить, сколько из них нулевых, и

записать ответ в регистр al.

8.7 В стек записано 49 байтов. Определить, есть ли среди них хотя бы

два одинаковых. Ответ 1 (есть) или 0 записать в регистр al.

8.8 Пусть под сегмент стека отведено 200 слов и пусть в сегменте дан-

ных описан массив x из 200 слов. Скопировать в начало этого массива теку-

щее содержимое стека ("верхнее" слово стека должно быть записано в на-

чальный элемент массива), заполнив нулями оставшуюся часть массива. Зна-

чения регистров sp и bp должны быть сохранены.

8.9 Под сегмент стека отведено 30 слов. Скопировать текущее содержи-

мое стека в область памяти, начинающуюся с абсолютного адреса 3b128h.

Значения регистров ds, es, ss, sp и bp должны быть сохранены.

8.10 В стек записано 14 слов, каждое из которых - это адрес (смеще-

ние) некоторого байта в сегменте данных. Обнулить все эти байты.

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

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

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

<формула> ::= <цифра> | (<формула> <знак> <формула>)

<знак> ::= + | -

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

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