TASK_ASM (1000388), страница 2

Файл №1000388 TASK_ASM (В.Н. Пильщиков - Упражнения по языку Ассемблера MASM) 2 страницаTASK_ASM (1000388) страница 22019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

3.23 Напечатать таблицу умножения (в десятичной системе счисления).

3.24 Дан текст следующего вида:

d1 ± d2 ± ... ± dk .

где di - цифра от 0 до 9, k≥1. Найти значение этой алгебраической суммы.

3.25 Используя только операцию OUTCH, вывести содержимое регистра AX в виде:

а) знакового десятичного числа,

б) беззнакового 16-ричного числа ("буквенные" цифры - от A до F).

3.26 Используя только операцию INCH, ввести:

а) знаковое десятичное число,

б) беззнаковое 16-ричное число ("буквенные" цифры - от A до F)

и записать его в регистр AX. Считать, что число записано без ошибок, оканчивается пробелом и "укладывается" в размер слова.

3.27 Дано 50 чисел, среди которых есть по крайней мере одно отрицательное. Найти наибольшее среди отрицательных чисел.

3.28 Дана последовательность из 40 чисел. Определить, у скольких чисел этой последовательности равные "соседи" (т.е. равны предыдущее и последующее числа).

3.29 Дана непустая последовательность символов (отличных от точки), за которой следует точка. Напечатать эту же последовательность:

а) заменив все 'PH' на 'F';

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

3.30 Дана непустая последовательность непустых слов из больших латинских букв; между соседними словами - запятая, за последним словом - точка. Подсчитать количество слов, которые:

а) начинаются с буквы 'S';

б) оканчиваются буквой 'Z';

в) начинаются и оканчиваются одной и той же буквой.

3.31 P DW ? ; P0

Q DW ? ; Q>0

Напечатать дробь P/Q в виде вещественного числа с 5 цифрами в дробной части.

3.32 X DD ?

Напечатать значение X в виде беззнакового десятичного числа. (Обратить особое внимание на возможность переполнения в команде DIV.)

4. ИНДЕКСИРОВАНИЕ. МАССИВЫ. СТРУКТУРЫ.

4.1 X DW 500h, 600h, 700h

Пусть BX=8000h и SI=102h. Указать (в форме X+число) исполнительный адрес следующей команды:

а) DEC X+2 б) DEC X[2] в) DEC [X+2] г) DEC [X]+2

д) INC X[SI] е) INC X[SI+2] ж) INC X[SI]-2 з) INC X-2[SI]

и) NEG X[BX][SI] к) NEG X[BX+SI] л) NEG X[BX+SI+8000h]

4.2 Пусть X - имя некоторого байта памяти и BX=i и пусть требуется обнулить байт памяти с адресом X+2*i. Определить, какой из следующих фрагментов правильно решает эту задачу:

а) MOV X[BX+BX],0 б) MOV DI,BX в) ADD BX,BX

MOV X[BX+DI],0 MOV X[BX],0

4.3 Пусть X - имя некоторого байта памяти и BX=i и пусть требуется обнулить байт памяти с адресом X-i. Определить, какой из следующих фрагментов правильно решает эту задачу:

а) MOV X[-BX],0 б) MOV [X-BX],0 в) NEG BX

MOV X[BX],0

4.4 X DW 0,1,2

Пусть X обозначает ячейку памяти с адресом 100. Указать числовые значения регистров AX и BX после выполнения следующих команд:

а) MOV AX,X б) MOV AX,X+2 в) MOV SI,2 г) LEA SI,X

LEA BX,X LEA BX,X+2 MOV AX,X[SI] MOV AX,2[SI]

LEA BX,X[SI] LEA BX,2[SI]

4.5 С помощью одной команды LEA реализовать следующее действие:

а) увеличить значение регистра BX на 10;

б) уменьшить значение регистра BX на 10;

в) записать в регистр AX значение регистра DI;

г) записать в регистр SI значение регистра BX, увеличенное на 1.

4.6 X DB 400 DUP(?)

Y DW 400 DUP(?)

Определить, какая величина должна находиться в регистре BX, чтобы выражение X[BX] определяло адрес 20-го от начала элемента массива X, если нумерация элементов этого массива начинается с:

а) 0 б) 1 в) 10 г) -10

Ответить на аналогичные вопросы для массива Y и выражения Y[BX].

4.7 Z DB 61 DUP(?) ; Z[0..60]

Пусть в регистре BX находится величина i, а в регистре DI - величина j (10i,j30). Указать адресные выражения, с помощью которых можно сослаться на элемент массива Z с индексом:

а) i б) i-10 в) j+10 г) j+i-1 д) 42 е) 0

4.8 X DB ?

Y DW ?

Указать, какие из следующих конструкций являются допустимыми формами записи операндов команд, а какие - нет и почему.

а) X[SI-1] б) X[1-BX] в) Y[DI]-2 г) 2-Y[DI]

д) BX[AX] е) AX[BX] ж) SI+2 з) X[BH]

и) [X] к) [5] л) X[5] м) 5[X]

н) [Y-X] о) Y-X[DI] п) X-Y[BX] р) X+Y[SI]

с) X[BX]+2[SI] т) X[SI]+2[DI ] у) [DI]X ф) Y[DI]

4.9 X DB 50 DUP(?) ; X[0..49]

Пусть в регистре BX находится адрес некоторого элемента массива X (т.е. X+i, где i - число от 0 до 49). Требуется в этом же регистре получить индекс (i) этого элемента. Определить, какая из следующих групп команд правильно решает эту задачу:

а) SUB BX,X б) SUB BX,[X] в) LEA AX,X г) LEA BX,-X[BX]

SUB BX,AX

4.10 Описать подходящий массив и, используя команду XLAT, решить следующую задачу: в регистре DH находится число от 2 до 19; требуется записать 1 в регистр AL, если число DH простое, и записать 0 иначе.

4.11 Q DB 256 DUP(?) ; Q[0..255] of 0..255

Считая, что в регистре AL находится число i от 0 до 255, реализовать присваивание Q[Q[i]]:=i.

4.12 X DW 100 DUP(?) ; числа со знаком

Решить следующую задачу:

а) записать в регистр AX число нулевых элементов массива X;

б) записать в регистр AX наименьший элемент массива X;

в) обнулить все отрицательные элементы массива X;

г) заменить на 1 первый нулевой элемент массива X;

д) изменить знак у первого элемента массива X, отличного от 1.

4.13 N EQU 100

Y DB N DUP(?) ; Y[0..N-1]

Считая, что все элементы массива Y неотрицательны и попарно различны, поменять местами наибольший и 20-й элементы этого массива.

4.14 Z DW 30 DUP(?) ; Z[0..29], числа со знаком

Решить следующую задачу:

а) обнулить последний положительный элемент массива Z;

б) если во второй половине массива Z есть элементы, равные 1, то первый из них заменить на 45;

в) поменять знак у всех элементов массива Z с четными индексами.

4.15 X DW 100 DUP(?)

Решить следующую задачу:

а) определить, у скольких элементов массива X равные соседи (предыдущий и последующий элементы), и записать ответ в регистр AL;

б) элементы массива X циклически сдвинуть на 2 позиции вправо;

в) если левая и правая половины массива X совпадают, то обнулить последний элемент этого массива.

4.16 S DB 200 DUP(?)

T DB 200 DUP(?)

Рассматривая S и T как символьные массивы (строки), решить следующую задачу:

а) все цифры строки S записать в начало строки T, а остальные символы - в конец (в любом порядке);

б) проверить на равенство строки S и T при условии, что пробелы не учитываются, и записать ответ 1 (равны) или 0 в регистр AL;

в) перенести в конец строки S все ее пробелы, сохранив взаимный порядок следования остальных символов;

г) определить, есть ли в строке S хотя бы два одинаковых символа, и записать ответ 1 (есть) или 0 в регистр AL.

4.17 LW DB 150 DUP(12 DUP(?))

Рассматривая LW как массив из 150 слов по 12 символов в каждом, решить следующие задачи:

а) подсчитать количество симметричных слов в этом массиве и записать ответ в регистр AL;

б) определить, упорядочены ли слова этого массива по алфавиту (по неубыванию), и записать ответ 1 (да) или 0 в регистр AL;

в) определить, есть ли в массиве LW хотя бы два одинаковых слова, и записать ответ 1 (есть) или 0 в регистр AL.

4.18 N DW ? ; 0N9999

S DB 4 DUP(?) ; символьная строка из цифр

Требуется:

а) записать в S десятичные цифры N (например: N=304  S='0304');

б) решить обратную задачу.

4.19 A DD 40 DUP(?) ; числа без знака

Заменить начальный элемент массива A на максимальный элемент массива.

4.20 X DB 100 DUP(?) ; X[0..99]

Y DW 100 DUP(?) ; Y[0..99]

Решить следующую задачу:

а) заполнить массивы X и Y по правилу: X[i]:=i, Y[i]=i;

б) записать в регистр DH количество элементов массива X, для которых выполняется условие X[i]>i (считать X[i] числами без знака).

4.21 Для ввода задана непустая последовательность малых латинских букв, за которой следует точка. Используя подходящий вспомогательный массив, определить (ответ напечатать):

а) сколько различных букв входит в эту последовательность;

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

4.22 N EQU 1000

X DB N DUP(?)

K DW ? ; 0<K<N

Используя подходящий вспомогательный массив, циклически сдвинуть элементы массива X на K позиций влево.

4.23 Для ввода дана непустая последовательность символов (отличных от точки), за которой следует точка и в которой не более 1000 символов. Ввести эти символы и распечатать их в обратном порядке, удалив предварительно все большие гласные русские буквы (А, Е, И, О, У, Ы, Э, Ю, Я).

4.24 Пусть в регистрах SI и DI находятся начальные адреса двух (непересекающихся) областей памяти из 20 слов в каждой. Решить следующую задачу:

а) обнулить все слова первой из этих областей (SI);

б) записать в каждое слово первой области его адрес;

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

4.25 N EQU 100

X DB N DUP(?) ; числа со знаком

Y DB ?

Считая, что элементы массива X упорядочены по возрастанию, определить, есть ли в X элемент, равный Y, и записать ответ 1 (есть) или 0 а в регистр AX.

При решении задачи использовать метод бинарного поиска (деления пополам): сравнить Y со средним (или около него) элементом массива X; если они равны, то поиск закончить; если Y меньше (больше) среднего элемента, то далее рассматривать только левую (правую) половину массива, применив к ней этот же метод.

4.26 N EQU 100

X DW N DUP(?) ; числа со знаком

Упорядочить массив X по неубыванию (X1X2X3...), используя следующий метод сортировки:

а) сортировка выбором: найти максимальный элемент массива и переставить его с последним элементом; затем этот же метод применить ко всем элементам, кроме последнего (он уже находится на своем окончательном месте); и т.д.

б) сортировка обменом (метод пузырька): последовательно сравнивать пары соседних элементов массива (X1 с X2, X2 с X3 и т.д.) и, если первый элемент пары больше второго, то переставлять их; тем самым наибольший элемент окажется в конце массива; затем этот же метод применить ко всем элементам, кроме последнего; и т.д.

в) сортировка вставками: пусть первые k элементов уже упорядочены по неубыванию; взять (k+1)-й элемент и разместить его среди первых k элементов так, чтобы упорядоченными оказались уже k+1 первый элемент; этот метод применять при k от 1 до N-1.

4.27 DATE STRUC ; дата

Y DW 1997 ; год

M DB ? ; номер месяца

D DB ? ; число

WD DB 'воскресенье' ; день недели

DATE ENDS

Описать переменные D1, D2, D3 и D4 типа DATE со следующими начальными значениями их полей (знак ? означает, что поле не должно иметь начального значения):

Y M D WD

D1: 1945 5 13 среда

D2: 1997 12 ? четверг

D3: ? ? ? ?

D4: 1997 ? ? воскресенье

Директивы, описывающие эти переменные, должны быть максимально короткими.

4.28 TIME STRUC ; время какого-то момента суток

H DB ? ; час (от 0 до 23)

M DB ? ; минута (от 0 до 59)

S DB ? ; секунда (от 0 до 59)

TIME ENDS

T TIME <>

T1 TIME <>

Присвоить переменной T1 время, на 1 секунду большее времени T. (Учесть смену суток.)

4.29 Описать структурный тип PERSON (человек) со следующими тремя полями: FAM (фамилия) - из 20 байтов, NAME (имя) - из 10 байтов и AGE (возраст) - 1 байт. Описать также (без начальных значений) переменную P типа PERSON и массив GR (группа людей) из 40 элементов того же типа. Считая, что этим переменным в программе уже присвоены какие-то значения, решить следующую задачу (ответ записать в регистр AL):

а) определить, является ли P человеком в возрасте 17 лет, вторая буква в фамилии которого - это "е" (ответ: 1 (является) или 0);

б) определить, сколько людей из GR имеют тот же возраст, что и P;

в) напечатать фамилию самого молодого человека из группы GR (любого, если таких несколько);

г) определить, сколько людей из GR имеют то же имя, что и P;

д) определить, есть ли в GR хотя бы одна пара однофамильцев (ответ: 1 (есть) или 0).

4.30 Имеются символьные переменные S и T:

S DB 256 DUP(?) ; S[0..255]

T DB 80 DUP(?) ; T[0..79]

подстроки которых будем представлять структурами типа SUBSTR:

SUBSTR STRUC

ASTR DW ? ;начальный адрес строки, в которую входит подстрока

INDX DB ? ;индекс элемента строки, с которого начинается подстрока

LENG DB ? ;длина подстроки (число символов в ней)

SUBSTR ENDS

(Например, директива X SUBSTR <T,60,20> описывает подстроку из последних 20 символов строки T.)

Имеются две подстроки:

A SUBSTR <>

B SUBSTR <>

которые в процессе выполнения программы получили некоторые значения (считать, что эти значения корректно задают подстроки: подстрока не выходит за пределы строки и т.п.).

Решить следующую задачу:

а) если в подстроку A входит пробел, тогда сделать значением переменной B подстроку из 15 начальных символов строки S;

б) если подстроки A и B равны (состоят из равного числа попарно равных символов), тогда в регистр AL записать 1, а иначе - 0.

5. БИТОВЫЕ ОПЕРАЦИИ. УПАКОВАННЫЕ ДАННЫЕ.

5.1 Указать значения регистра AL и флага ZF после выполнения следующей пары команд:

а) MOV AL,1010b б) MOV AL,0 в) MOV AL,1101b г) MOV AL,100b

Характеристики

Тип файла
Документ
Размер
231 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

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