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

UptoLike

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

12
Вариант 1. Исходная строка текста на английском языке (например, QSL RCV - «под-
тверждаю приём Вашего сообщения!») для передачи кодом Морзе должна быть вруч-
ную записана в память с адреса DS:0000h (следует воспользоваться кнопкой «Текст…»
на вкладке «Память» программы AsmEd). Разработать программу, которая будет выво-
дить на виртуальный дисплей соответствующую строку из точек, тире и пробелов. Код
символа «точка» - 02Eh, «тире» - 02Dh, «пробел» - 020h. При этом в программе
AsmEd должна быть включена DOS-кодировка (меню «Вид»-«Настройка»-«Символы»).
Точки и тире выводить вплотную друг к другу (без пробела). Между буквами выводить
один пробел, между словами - два пробела (здесь мы несколько отступаем от стандарта
в целях упрощения задачи и улучшения вида картинки на экране). Алгоритм решения
задачи в «крупных командах» может выглядеть так:
1. Читать символ из строки (обозначим его код - SYM)
2. Это пробел (SYM=020h)? Если да, то выдать на экран код 020h и перейти к п.8
3. Извлечь из Таблицы Перекодировки код (=N), соответствующий символу SYM
4. Выделить младший полубайт (= K) из кода N
5. Положить номер бита B равным 7
6. Повторить K раз:
a. Выделить бит ( = BIT) номер B из кода N
b. Если BIT = 0, то выдать на экран код 02Eh
c. Если BIT = 1, то выдать на экран код 02Dh
d. Уменьшить номер анализируемого бита B на единицу
7. Выдать на экран код 020h - пробел после окончания обработки символа
8. Есть ещё символы в исходной строке? Если да, то перейти к п.1
9. Закончить работу
У автора этого пособия соответствующая программа на Ассемблере заняла около
40 строк. А сколько получится у Вас?
Вариант 2. Цифры представляются кодом Морзе следующим образом:
Таблица 3
1
. - - - -
6
- . . . .
2
. . - - -
7
- - . . .
3
. . . - -
8
- - - . .
4
. . . . -
9
- - - - .
5
. . . . .
0
- - - - -
Разработать какой-либо свой способ представления этих кодов в памяти компь-
ютера (микропроцессорной системы). Здесь, очевидно, для хранения информации о
знаках одним полубайтом обойтись уже нельзя. По аналогии с Вариантом 1 написать
программу, которая читает из памяти (с адреса DS:0000h) строку из десятичных цифр и
выдаёт её на экран (виртуальный дисплей) в виде кода Морзе.
Вариант 3. Пусть имеется строка символов, содержащая не только латинские, но и
русские (но без литеры «Ъ») буквы. По аналогии с Вариантом 1 написать программу,
которая читает из памяти (с адреса DS:0000h) эту строку и выдаёт её на экран (вирту-
альный дисплей) в виде кода Морзе. Продумать способ представления кодов букв, обо-
значенных звёздочками в Таблице 1 (сложности могут возникнуть из-за буквы «Э»).
                                                                                  12

Вариант 1. Исходная строка текста на английском языке (например, QSL RCV - «под-
тверждаю приём Вашего сообщения!») для передачи кодом Морзе должна быть вруч-
ную записана в память с адреса DS:0000h (следует воспользоваться кнопкой «Текст…»
на вкладке «Память» программы AsmEd). Разработать программу, которая будет выво-
дить на виртуальный дисплей соответствующую строку из точек, тире и пробелов. Код
символа «точка» - 02Eh, «тире» - 02Dh, «пробел» - 020h. При этом в программе
AsmEd должна быть включена DOS-кодировка (меню «Вид»-«Настройка»-«Символы»).
Точки и тире выводить вплотную друг к другу (без пробела). Между буквами выводить
один пробел, между словами - два пробела (здесь мы несколько отступаем от стандарта
в целях упрощения задачи и улучшения вида картинки на экране). Алгоритм решения
задачи в «крупных командах» может выглядеть так:

    1. Читать символ из строки (обозначим его код - SYM)
    2. Это пробел (SYM=020h)? Если да, то выдать на экран код 020h и перейти к п.8
    3. Извлечь из Таблицы Перекодировки код (=N), соответствующий символу SYM
    4. Выделить младший полубайт (= K) из кода N
    5. Положить номер бита B равным 7
    6. Повторить K раз:
          a. Выделить бит ( = BIT) номер B из кода N
          b. Если BIT = 0, то выдать на экран код 02Eh
          c. Если BIT = 1, то выдать на экран код 02Dh
          d. Уменьшить номер анализируемого бита B на единицу
    7. Выдать на экран код 020h - пробел после окончания обработки символа
    8. Есть ещё символы в исходной строке? Если да, то перейти к п.1
    9. Закончить работу

     У автора этого пособия соответствующая программа на Ассемблере заняла около
40 строк. А сколько получится у Вас?

Вариант 2. Цифры представляются кодом Морзе следующим образом:

                       Таблица 3
1                  6
    .----              -....
2                  7
    ..---              --...
3                  8
    ...--              ---..
4                  9
    ....-              ----.
5                  0
    .....              -----
       Разработать какой-либо свой способ представления этих кодов в памяти компь-
ютера (микропроцессорной системы). Здесь, очевидно, для хранения информации о
знаках одним полубайтом обойтись уже нельзя. По аналогии с Вариантом 1 написать
программу, которая читает из памяти (с адреса DS:0000h) строку из десятичных цифр и
выдаёт её на экран (виртуальный дисплей) в виде кода Морзе.

Вариант 3. Пусть имеется строка символов, содержащая не только латинские, но и
русские (но без литеры «Ъ») буквы. По аналогии с Вариантом 1 написать программу,
которая читает из памяти (с адреса DS:0000h) эту строку и выдаёт её на экран (вирту-
альный дисплей) в виде кода Морзе. Продумать способ представления кодов букв, обо-
значенных звёздочками в Таблице 1 (сложности могут возникнуть из-за буквы «Э»).