Микро ЭВМ "ZX Spectrum" 1969 г.

Демонстрационные программы на машинном языке - выполнение пользовательской программы, написанной на машинном языке. Команды циклического сдвига.


Группа 13. Команды циклического сдвига.

В системе команд микропроцессора Z80 имеется много команд циклического сдвига.

Для демонстрации семи типов циклического сдвига содержимого регистра С используется следующая программа, написанная на машинном языке.

STORE равно 7CFF Адрес Машинный Мнемокод Комментарии

код

7D0 0 AF XOR A Очистить регистр A

7D01 FE 0 0 CP +xx Сравнение с числом

0-флажок ПЕРЕНОС сбрасывается; 1-устанавливается 7D03 06 00 LD B,+xx Обнулить регистр B

7D0 5 0E 00 LD C,+xx Ввод числа в C

7D0 7 CB 01 RLC C Циклический сдвиг

7D0 9 3E 00 LD A,+00 Обнулить регистр A 7D0B CE 00 ADC A,+00 Пересылка значения флажка

7D0D 32 FF 7C LD (STORE),A ПЕРЕНОС в STORE

7D10 C9 RET "Возврат к Бейсику"

В программе 19 пользователь должен ввести 0 или 1 - для установки или сброса флажка ПЕРЕНОС. Затем следует ввести некоторое число. Оно копируется в регистр C и циклически сдвигается - если нужно. Результат печатается вместе с текущим значением флажка ПЕРЕНОС.

Программа 19. RLC C

Строки 10 - 40. Шестнадцатиричный загрузчик, приведенный

на стр. 92 . 5 0 DATA "AF","FE","00"

51 DATA "06","00","0E","00"

52 DATA "CB","01"

53 DATA "3E","00","CE","00"

54 DATA "32","FF","7C"

55 DATA "C9"," "

60 PRINT AT 2,0;"Instruction -" 7 0 PRINT "RLC C"

80 INPUT "Carry reset or set(0/1)?";CHR$32;C

90 POKE 32002,C

10 0 PRINT AT 6,0;"CARRY -",C

110 INPUT "Enter a value (0-255)";CHR$32;F

120 POKE 3 2 0 0 6,F

130 PRINT AT 10,0; "Initial value";: GO SUB 300 140 LET F=USR 32000

150 PRINT AT 14,0;"Final value";: GO SUB 300 160 PRINT AT 18,0;"CARRY -",PEEK 31999 170 PRINT AT 21,0;"Any key to continue" 180 PAUSE 50

190 IF INKEY$="" THEN GO TO 190

200 CLS: GOTO 6 0

300 REM Binary of F

310 FOR N=7 TO 1 STEP -1

320 LET P=2**N

330 PRINT CHR$(4 8+INT(F/P));CHR$32;

340 LET F=F-INT(F/P)*P

350 NEXT N

360 PRINT INT F

370 RETURN

Программу 19 можно использовать для демонстрации семи команд, которые задействуют регистр С.

Для этого необходимо внести следующие изменения.

'RLC C' 52 DATA "CB","01"

7 0 PRINT "'RLC C'"

'RRC C' 52 DATA "CB","09"

7 0 PRINT "'RRC C'"

'RL C' 52 DATA "CB","11"

7 0 PRINT "'RL C'"

'RR C' 52 DATA "CB","19"

7 0 PRINT "'RR C'"

'SLA C' 52 DATA "CB","21"

7 0 PRINT "'SLA C'"

'SRA C' 52 DATA "CB","29"

7 0 PRINT "'SRA C'"

'SRL C' 52 DATA "CB","3 9"

7 0 PRINT "'SRL C'"

По желанию используемую в примере 19 программу, написанную на машинном языке, можно изменить для демонстрации четырех однобайтных команд.

Группа 14. Команды обработки бит.

Команды этой группы можно разбить на три подгруппы.

Команды RES и SET используются не очень часто, и здесь программа для их демонстрации не приводится. Читатель может сам написать простые программы, использующие эти команды.

Несомненно, наиболее полезные команды этой группы - команды BIT, и ниже приводится программа, показывающая использование команды "BIT 7,H".

Программа 20 осуществляет вывод в двоичном представлении. Пользователь должен ввести число из интервала 0 -65535. Затем для вывода на печать двоичного представления этого числа используется соответствующая программа, написанная на машинном языке.

Число, введенное пользователем, пересылается в двойной регистр HL; бит 7 регистра H считывается, и печатается соответственно 0 или 1. Затем содержимое регистров HL сдвигается влево, перенос из L захватывается в H. Опять считывается бит 7 регистра H, и полученное значение выводится на печать. Для получения полного двоичного представления эта операция (считывание и сдвиг) выполняется 16 раз.

Соответствующая программа имеет вид: LOOP равно 7D05 PRINT равно 7D0C Адрес Машинный Мнемокод Комментарии

код

7D0 0 21 0 0 0 0 LD HL,+xxxx Ввод числа

7D03 06 10 LD B,+10 Имеется 16 бит

7D0 5 CB 7C BIT 7,H Проверка самого левого бита

7D07 3E 30 LD A,'0' Подготовка печати нуля

7D0 9 28 01 JR Z,PRINT Переход, если необходим 0

7D0B 3C INC A Теперь - символ "1"

7D0C D7 RST 0010 Печать символа - 0 или 1

7D0D 3E 20 LD A, 'sp.' Подготовка печати "пробела"

7D0F D7 RST 0010 Печать "пробела"

7D10 CB 15 RL L Циклический сдвиг L

7D12 CB 14 RL H Циклический сдвиг H с захватом переноса

7D14 10 EF DJNZ,LOOP Обратно - до окончания

7D16 C9 RET "Возврат к Бейсику"

В этой программе, написанной на машинном языке соответствует программа 20.

Программа 20. BIT 7,H Строки 10-40. Шестнадцатиричный загрузчик, приведенный

на стр.92 . 5 0 DATA "21","00","00"

51 DATA "06","10","CB","7C"

52 DATA "3E","3 0","28","01"

53 DATA "3C","D7"

54 DATA "3E","20","D7"

55 DATA "CB","15","CB","14"

56 DATA "10","EF","C9"," "

60 INPUT "Enter a value (0-255)";CHR$32;F 70 POKE 3 2 0 01,F-INT (F/256)*256 80 POKE 3 2 0 02,INT (F/256) 90 CLS

10 0 PRINT AT 10,8;"Binary of";CHR$ 32;F

110 PRINT AT 12,14; "is"

12 0 PRINT AT 14,0;

130 RANDOMISE USR 32000

14 0 GO TO 6 0

Группа 15. Команды обработки блока

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

Несомненно, чаще всего в этой группе используется команда LDIR.

Ниже приводится написанная на машинном языке программа, в которой эта команда используется для копирования верхней трети области дисплея на среднюю треть. Это означает, что при каждом вызове рассматриваемой программы все байты ячеек с шестнадцатиричными адресами 4000-47FF копируются в ячейки

с шестнадцатиричными адресами 4800-4FFF. При этом все символы из строк 0-7 дублируются в строки 8-15. Эта программа имеет следующий вид:

Адрес Машинный Мнемокод Комментарии

код

7D0 0 21 00 40 LD HL,+4 000 Верхний левый угол экрана

7D03 11 00 48 LD DЕ,+4800 Начало строки 8

7D0 6 01 00 08 LD BC,+0800 Имеется 2048 ячеек

7D0 9 ED B0 LDIR Перемещение блока

7D0B C9 RET "Возврат к Бейсику"

Этой программе,написанной на машинном языке, соответствует программа 21.

Программа 21. LDIR

Строки 10-40. Шестнадцатиричный загрузчик,приведенный

на стр.92 5 0 DATA "21","00","40"

51 DATA "11","00","48"

52 DATA "01","00","08"

53 DATA "ED","B0"

54 DATA "С9"," "

90 INPUT "Enter your characters - 8 Lines";C$ 100 PRINT C$ 150 RANDOMISE USR 32000

Отметим, что для дублирования областей экрана можно использовать "LDIR" или "LDDR",но аппаратное окружение обычно использует эти команды для других видов копирования,при котором задействуются области символов целиком,но не частично.

Ниже приводится программа,демонстрирующая использование команды "CPIR" Программа 22, соответствующая этой программе на машинном языке,определяет адрес первой ячейки постоянной памяти, в которой содержится заданный байт. После выполнения программы можно убедиться,что в постоянной памяти находятся все числа из интервала 0-255,но десятичное число 154 впервые появляется в ячейке 11728 и сравнительно редко появляется в рассматриваемой конфигурации постоянной памяти.

Программа,написанная на машинном языке,имеет следующий вид.

Адрес Машинный Мнемокод Комментарии

код

7D00 3Е 00 LD A,+xx Сравниваемое число

7D02 01 FF 3F LD BC,+3FFF Верхняя ячейка ПЗУ 7D0 5 21 00 00 LD HL,+0000 Первая - " " -

7D08 ED B1 CPIR Исследовать пост.память

7D0A 44 LD B^ Переместить старший байт адр

7D0B 4D LD C,L Переместить младший байт адр

7D0C 0B DEC BC Сохранение адр.иск.ячейки

7D0D C9 RET "Возврат к Бейсику"

Программа 22, соответствующая этой программе, имеет вид:

Программа 22. CPIR

Строки 10-4 0 "Шестнадцатиричный загрузчик приведенный на стр. 92 .

5 0 DATA "3 Е","00"

51 DATA "01","FF","3F"

52 DATA "21","00","00"

53 DATA "В1","44", "4D"

54 DATA "ОВ","С9"," "

60 FOR F= 0 TO 255

7 0 POKE 3 2 0 01,F

8 0 PRINT F;TAB ; " occurs first at loc";

СHR$3 2; USR 32000

90 NEXT F

Читатель может попытаться изменить эти программы для демонстрации неавтоматических команд.

Здесь не приводятся демонстрационные программы для команд ввода-вывода,команд прерывания и небольшой группы остальных команд, но, как и ранее ,пользователь может попытаться написать соответствующие программы самостоятельно.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Первоуральск - Что производится в нашем городе: контрроллер винчестера, игрушка Minesweeper Pro, программная оболочка ZX-Navigator, сетевая игрушка DeathMatch Arena.
Editorial - elph: предлагая себя...
Разборки - Пара ласковых слов от UnBEL!EVER'а по поводу разборок Demiurge Ash и Goblin^Bmz^x7m.
Обратная связь - контакты редакции.
Реклама - Набор текстов любых обьёмов (для ZX,IBM,AMIGA, MACINTOSH).

В этот день...   21 ноября