Программист должен:
1. Знать состав команд МП.
2. Быть хорошо знаком с расположением регистров МП.
3. Знать общую архитектуру ЭВМ.
Этапы развития программы могут быть представлены следующим образом:
· Определить и проанализировать задачу.
· Начертить структурную схему решения.
· Записать программу на ассемблере.
· Записать или генерировать программу в кодах.
· Загрузить программу на решение.
· Документировать программу.
Например.
Сложение содержимого трех последовательных ячеек памяти и размещение суммы в памяти.
Эта схема называется функционально-структурной. Она не содержит адекватных деталей, которые не позволяют перейти ее прямо в сегмент программы на ассемблере или в машинном коде.
Нарисуем подробную функциональную схему:
Подробная функциональная схема организации решения задачи сильно зависит от архитектуры и состава команд данного МП. В то время, как общая функциональная схема может быть использована для любой вычислительной системы, т.е. она инвариантна по отношению к системе команд и архитектуре.
|
|
Затем следует записать версию подробной структурной схемы на ассемблере в 4 типовых поля: метка, мнемоника, операнд и комментарий.
Метка | Мнемоника | Операнд | Комментарий |
LXI | Н, 2010Н | Загрузить адрес 2010Н в пару регистров HL. Эта пара регистров используется как указатель адреса. | |
MOV | А, М | Поместить первое число из ячейки памяти с адресом 2010Н в аккумулятор (А). | |
INX | Н | Инкрементировать пару регистров HL до 2011Н. | |
ADD | М | Сложить второе число в ячейке памяти 2011Н с содержимым А. | |
INX | H | Инкрементировать пару регистров HL до 2012. | |
ADD | M | Сложить третье число в ячейке памяти 2012 с содержимым А. | |
INX | Н | Инкрементировать пару регистров HL до 2013. | |
MOV | М, А | Поместить сумму из А в ячейку памяти 2013. | |
HLT | Остановить МП. |
Метку пока опустим, комментарий оказывает большую помощь в понимании действия каждой команды.
Записанная версия должна быть переведена в состав бит из 0 и 1, понимаемых МП и называемых машинным кодом.
Это можно сделать с помощью специальных программ или вручную.
Вручную кодирование выполняется следующим образом:
1. найти код операции каждой мнемоники в таблице состава команд.
2. определить операнды (данные и адреса), когда это необходимо передать командами из нескольких байт.
3. установить адреса памяти в последовательности каждой команды и операнда.
Шестнадцатеричная | Мнемоника | Операнд | Комментарий | |
Адрес | Содержимое | |||
21(код операции) 10 (младший байт) 20 (старший байт) | LXI | Н, 2010Н | Загрузить адрес 2010Н в пару регистров HL, как указатель адреса. | |
7Е | MOV | А, М | Загрузить первое число из ячейки памяти с адресом 2010Н в А. | |
INX | Н | Инкрементировать пару регистров HL до 2011Н. | ||
ADD | М | Сложить второе число с адресом 2011Н с содержимым А. | ||
INX | H | Инкрементировать пару регистров HL до 2012. | ||
ADD | M | Сложить третье слагаемое из ячейки памяти 2012 с содержимым А. | ||
INX | Н | Инкрементировать пару регистров HL до 2013. | ||
MOV | М, А | Поместить сумму из А в ячейку памяти, на которую указывает содержимое пары регистров HL. | ||
202А | HLT | Остановить программу. |
Затем нужно проверить программу в том смысле работает ли она. Эта операция представляет собой процесс отладки программы (поиск и устранение ошибок).
|
|
Последним этапом программирования является документирование. Документировать программу значит дать ее описание, указывающее в какой последовательности выполняются операции. Суда входят: блок-схемы алгоритмов вычислений, списки, данные, адреса использованных подпрограмм и развернутый комментарий.
Большие сильно развитые программы требуют тщательно разработанной документации.