Программное обеспечение


     Ограниченный объем ПЗУ и ОЗУ в микроЭВМ минимальной конфигурации предъявляет особые требования к эффективности программного обеспечения, которое фактически ограничено программой МОНИТОР. Однако, даже несмотря на небольшой объем, МОНИТОР "ЮТ-88" даст вам возможность писать и отлаживать программы в машинных кодах, модифицировать их за счет вставки или удаления отдельных команд, пересылать отлаженные программы в новые адреса и корректировать их. При программировании в машинных кодах удается максимально приблизиться к аппаратным средствам микроЭВМ, учесть особенности микропроцессора и каждой отдельной команды и в результате получить предельно короткие и быстродействующие программы. Для программирования в машинных кодах требуются только карандаш и бумага. Составленную программу можно сразу с помощью МОНИТОРА загрузить в ОЗУ микроЭВМ и попробовать в работе. Используя при написании таких программ символическое обозначение команд в виде мнемоник языка Ассемблера с последующим ручным ассемблированием с помощью компактных табличных представлений команд/мнемоник - команд/кодов, удается по существу освоить программирование на языке Ассемблер.
     Прежде чем перейти к рассмотрению директив МОНИТОРА, целесообразно познакомиться с системой команд и устройством микропроцессора КР580ИК80А в справочном листке "ЮТ-88".
     Все команды микроЭВМ сведены в таблице (две части), загрузить которые вы можете, щелкнув мышью на помещенных ниже мини-картинках.

407237 байт     348706 байт

     Выделим наиболее общие закономерности их использования.

  1. Арифметические и логические операции разрешены только между аккумулятором и байтом данных или между аккумулятором и любым регистром.
  2. Аккумулятор и регистровая пара HL являются единственными регистрами, которые могут быть непосредственно загружены в память.
  3. Аккумулятор является единственным регистром, который может быть инвертирован, сдвинут, косвенно загружен в память с использованием регистровых пар ВС и DE или использован в командах ввода/вывода (IN, OUT).
  4. Регистровая пара HL является единственной, содержимое которой может быть передано в счетчик команд (команда PCHL) или указатель стека (команда SPHL).
  5. Регистровая пара НL может использоваться как аккумулятор двойной длины при сложении 16-разрядных чисел (команда DAD).
  6. Содержимое регистровых пар HL и DE можно менять местами (команда HCHG).
  7. Отдельные команды могут применяться для специальных функций. Команды XRA А или SUB А обнуляют аккумулятор. Команды ANA А или ORA А очищают флаг переноса, а команда ADD А выполняет логический сдвиг аккумулятора влево.
  8. Команды увеличения (уменьшения) на 1 регистров INR (DCR) действуют на все флаги, за исключением флага переноса. Команды увеличения (уменьшения) на 1 регистровых пар INX (DCX) не оказывают влияния на флаги.
  9. В стек или из стека могут быть переданы только регистровые пары. Одной из таких регистровых пар является слово состояния микропроцессора, которое содержит аккумулятор (старший байт) и флаги (младший байт). Команды CALL и RET передают адрес в стек и обратно.
  10. При записи 16-разрядных адресов младший байт записывается первым.

     Целесообразно также отдельно рассмотреть основные способы адресации данных в микроЭВМ. Предусмотрено 3 способа адресации: прямая, непосредственная и косвенная.

  1. Прямая адресация (из памяти или в память с конкретным адресом) может использоваться для работы с аккумулятором и регистрами HL. Адрес данных записывается во втором и третьем байте команды. Например:

    LDA С000Н
    Эта команда загружает А из ячейки памяти с адресом С000Н;
    STA 9000H
    Эта команда загружает ячейку памяти с адресом 9000H содержимым аккумулятора.
    LHLD С000Н
    Эта команда загружает регистр L из ячейки с адресом С000Н, а регистр Н из ячейки с адресом С001Н, то есть сначала младший байт, а затем старший байт.
    SHLD 9001H
    Эта команда загружает в ячейку памяти 9001H содержимое регистра L, а в ячейку памяти 9002Н регистра Н.

  2. Непосредственная адресация, то есть конкретное значение, записывается в байте, следующем за командой. Например:

    MVI A, 11H.
    Эта команда загружает в А значение 11H;
    LXI Н, 9001H
    Эта команда загружает в регистры HL значение 9001H соответственно.

  3. Косвенная адресация (по адресу в регистровой паре HL, DE или ВС). Например:

    MOV А, М или MOV М, А.
    Команды загрузки регистра из ячейки памяти с адресом в регистровой паре HL или наоборот.
    LDAX D или LDAX В
    Команды загрузки аккумулятора из памяти по адресам в регистровых парах DE или ВС.
    STAX D или STAX B
    Команды загрузки памяти по адресу в регистровых парах DE или ВС содержимым аккумулятора.

     Используя команды с разными способами адресации, приведем программу вывода единиц на все индикаторы:

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

     Если эти коды записать в ОЗУ микроЭВМ, то в результате исполнения этой программы на всех индикаторах микроЭВМ высветятся единички.