Сборник задач и упражнений для лабораторного практикума по курсу "ЭВУ и системы" (изучение архитектуры и системы команд INTEL-совместимых микропроцессоров). Коршунов А.Д. - 8 стр.

UptoLike

Составители: 

8
7. Разные задачи
1. Дан байт в пределах от 0 до FFh (выполнить ввод из порта 2). Выдать на дисплей
как целое число со знаком в пределах от -128 до +127.
2. Дано целое число в пределах 0…40. Возвести это число в куб и результат оставить в
регистре АХ.
3. Дан байт, представляющий собой число в стандартном двоичном коде. Преобразо-
вать его в код Грея или какой-либо другой (см. таблицу). Использовать для преобра-
зования команду XLAT.
Двоичный код Код Грея Код со сдвигом 3 Код «два из пяти»
0 0 0 0 0 0 0 1 1 11000
0 0 1 0 0 1 1 0 0 00011
0 1 0 0 1 1 1 0 1 00101
0 1 1 0 1 0 1 1 0 00110
1 0 0 1 1 0 1 1 1 01001
1 0 1 1 1 1 0 0 0 01010
1 1 0 1 0 1 0 0 1 01100
1 1 1 1 0 0 0 1 0 10001
4. Дан байт или слово, размещённые в регистрах AL или AX соответственно. Написать
подпрограмму (процедуру), выводящую их на виртуальный дисплей как десятичное
целое без знака. Число должно быть выдано на первую (верхнюю) строку дисплея,
причём начальная позиция его расположения должна передаваться в подпрограмму
через регистр BL (если BL = 0 - вывод с левого верхнего угла). Подпрограмма долж-
на быть объявлена с помощью директив PROC и ENDP, вызываться командой CALL
и возвращать управление в вызвавшую программу по команде RET. Примечание.
Внимательно изучите тексты программ HexToDec.asm и PrintNumber.asm, находя-
щиеся в папке Examples системы программирования AsmEd.
5. Необходимо разработать программное обеспечение для карманной электронной иг-
рушки, умеющей отгадывать календарные даты (дни рождения). Человек загадывает
календарную дату, умножает число (номер дня в месяце = X) на 12, прибавляет но-
мер месяца (Y) и результат сообщает отгадчику. Так, при дате 10 января будет сооб-
щён результат 12X+Y = 12*10 + 1 = 121. Отгадчик должен действовать по следую-
щему алгоритму: определить остаток R от деления результата на 12, и тогда при R=0
имеем Y=12, в противном случае Y=R. Теперь, зная Y, уже легко найти X: из сооб-
щённого результата вычитаем Y и то, что получилось, делим на 12.
В нашем примере Y = 121 mod 12 = 1 (январь), X = (121-1)/12 = 10 (число), та-
ким образом, дата 10 января отгадана.
Написать программу, работающую в качестве отгадчика. Человек вводит резуль-
тат своих подсчётов в порт 2. Программа выдаёт отгаданную дату на виртуальный
дисплей в следующем формате: XX.YY, в нашем примере - 10.01. Использовать под-
программу вывода числа, разработанную при решении предыдущей задачи ( 4).
                                                                                        8

7. Разные задачи

1. Дан байт в пределах от 0 до FFh (выполнить ввод из порта № 2). Выдать на дисплей
   как целое число со знаком в пределах от -128 до +127.

2. Дано целое число в пределах 0…40. Возвести это число в куб и результат оставить в
   регистре АХ.

3. Дан байт, представляющий собой число в стандартном двоичном коде. Преобразо-
   вать его в код Грея или какой-либо другой (см. таблицу). Использовать для преобра-
   зования команду XLAT.
      Двоичный код Код Грея Код со сдвигом 3 Код «два из пяти»
           000           000           011               11000
           001           001           100               00011
           010           011           101               00101
           011           010           110               00110
           100           110           111               01001
           101           111           000               01010
           110           101           001               01100
           111           100           010               10001

4. Дан байт или слово, размещённые в регистрах AL или AX соответственно. Написать
   подпрограмму (процедуру), выводящую их на виртуальный дисплей как десятичное
   целое без знака. Число должно быть выдано на первую (верхнюю) строку дисплея,
   причём начальная позиция его расположения должна передаваться в подпрограмму
   через регистр BL (если BL = 0 - вывод с левого верхнего угла). Подпрограмма долж-
   на быть объявлена с помощью директив PROC и ENDP, вызываться командой CALL
   и возвращать управление в вызвавшую программу по команде RET. Примечание.
   Внимательно изучите тексты программ HexToDec.asm и PrintNumber.asm, находя-
   щиеся в папке Examples системы программирования AsmEd.

5. Необходимо разработать программное обеспечение для карманной электронной иг-
   рушки, умеющей отгадывать календарные даты (дни рождения). Человек загадывает
   календарную дату, умножает число (номер дня в месяце = X) на 12, прибавляет но-
   мер месяца (Y) и результат сообщает отгадчику. Так, при дате 10 января будет сооб-
   щён результат 12X+Y = 12*10 + 1 = 121. Отгадчик должен действовать по следую-
   щему алгоритму: определить остаток R от деления результата на 12, и тогда при R=0
   имеем Y=12, в противном случае Y=R. Теперь, зная Y, уже легко найти X: из сооб-
   щённого результата вычитаем Y и то, что получилось, делим на 12.
        В нашем примере Y = 121 mod 12 = 1 (январь), X = (121-1)/12 = 10 (число), та-
   ким образом, дата 10 января отгадана.
        Написать программу, работающую в качестве отгадчика. Человек вводит резуль-
   тат своих подсчётов в порт № 2. Программа выдаёт отгаданную дату на виртуальный
   дисплей в следующем формате: XX.YY, в нашем примере - 10.01. Использовать под-
   программу вывода числа, разработанную при решении предыдущей задачи (№ 4).