ВУЗ:
Составители:
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 (сложности могут возникнуть из-за буквы «Э»).