ОРГАНИЗАЦИЯ ПАМЯТИ В МИКРО-ЭВМ.
Примеры программ с использованием прямой адресации для микро-ЭВМ «Энерго».
Программа имеет вид:
Адрес | OBJ | Метка | КОП | Операнды | Комментарий: |
: младший байт числа | |||||
1000H | 7D | MOV | A, L | : A <= L | |
1001H | 2F | CMA | : A <= (-A) | ||
1002H | 5F | MOV | E, A | : E <= A | |
: старший байт числа | |||||
1003H | 7C | MOV | A, H | : A <= H | |
1004H | 2F | CMA | : A <= (-A) | ||
1005H | MOV | D, A | : D <= A | ||
1006H | INX | D | : DE <= DE+1 | ||
1007H | C3 | JMP | ENTRY | : Выход в монитор с | |
1008H | : сохранением содержимых | ||||
1009H | : регистров | ||||
Ввод программы в микро-ЭВМ «Энерго»
Комментарий | Клавиатура | Дисплей |
1. Включить микро-ЭВМ и осуществить сброс | Reset | "Энерго" "Энерго" |
2. Ввод директивы Mem. просмотра и измения содержимого ячеек памяти ОЗУ | Next Mem. | ? П xxxx |
3. Набор адреса 1000H | 1, 0, 0, 0 | П 1000 |
4. Ввод набранного адреса | Next | П 1000 xx |
5. Набор данных 7D | 7, D | П 1000 7D |
6. Ввод набранных данных, при этом осуществляется переход к следующей ячейки памяти | Next | П 1001 = xx |
7. Набор следующих данных. | 2, F | П 1001 = 2F |
8. Ввод набранных данных, при этом осуществляется переход к следующей ячейке памяти и т.д. | Next | П 1002 = xx |
22. Набор последних данных | 0, 0 | П 1009 = xx |
23. Ввод набранных данных | Next | П 100A = xx |
24. Выход из директивы Mem. | Reset | "Энерго" |
Теперь следует опять ввести директиву Mem. и аналогичным образом проверить содержимое ячеек памяти с адреса 1000H по адрес 1009H и если при вводе объектного кода программы была допущена ошибка, то исправить ее.
Загрузим NEX число в регистровую пару HL.
Комментарий | Клавиатура | Дисплей |
"Энерго" | ||
1. Ввод директивы Reg. просмотра и изменения содержимого регистров МП. | Next Reg. 9 (HL) | ? r r xxxx HL |
2. Ввод регистровой пары HL HEX числа 0001H | 0, 0, 0, 1 | r 0001 HL |
4. Ввод набранного числа в регистровую пару HL, при этом осуществляется переход к следующей регистровой пары SP. | Next | r xxxx SP |
5. Выход из директивы REG. | Reset | "Энерго" |
Запуск программы на выполнение:
Комментарий | Клавиатура | Дисплей |
1. Ввод директивы GO старты программы. | Next Go | ? G xxxx |
2. Набор адреса старта 1000H | 1, 0, 0, 0 | G 1000 |
3. Запуск программы | Next |
Программа выполняется мгновенно и на дисплее появится информация «br – Stop». Теперь необходимо просмотреть содержимое регистровой пары DE, куда помещен результат. Это делается с помощью рассмотренной директивы Reg. следующим образом.
Комментарий | Клавиатура | Дисплей |
1. Ввод директивы Reg. | Next | ? |
Reg. | r | |
D (DE) | r FFFF bE |
HEX число 0FFFFH и есть дополнительный код HEX числа 0001H, хранящегося в регистровой паре HL.
Пример 2. Произвести подсчет числа единиц в байте, находящемся в аккумуляторе, результат поместить в регистр C и выйти в монитор.
Ввод программы в микро-ЭВМ осуществляется описанным выше способом посредством директивы Mem. После чего необходимо проверить правильность введенных кодов.
Программа имеет вид:
Адрес | OBJ | Метка | КОП | Операнды | Комментарий: |
1000H | 0E | MVI | C, OOH | : C <= 0 счетчик | |
1001H | |||||
1002H | MVI | B, 08H | : B <= 8 число сдвигов | ||
1003H | |||||
1004H | MET 1: | RLC | : a7 <= a6 <= … <= a0 <= CY <= a7 | ||
1005H | D2 | JNC | MET 2 | : переход если CY равно 0 | |
1006H | |||||
1007H | |||||
1008H | 0C | INR | C | : C <= C + 1 | |
1009H | MET 2: | DCR | B | : B <= B - 1 | |
100AH | C2 | JNZ | MET 1 | : переход если Z = 0 | |
100BH | |||||
100CH | |||||
100DH | C3 | JMP | ENTRY | : выход в монитор | |
100EH | |||||
100FH |
С помощью директивы Reg. в аккумулятор процессора вводиться байт C7 (5 единиц) и директивой Go 1000 программа запускается на выполнение.
После подсчета числа единиц в байте, находящемся в аккумуляторе процессора, произойдет выход в монитор и на дисплее появится информация «br-Stop».
Теперь, используя директиву Reg, можно убедиться, что байт, находящийся в аккумуляторе остался без изменения, а в регистре C находится число 05, соответствующее числу единиц содержимого аккумулятора.
Пример 3. Содержимое регистровой пары BC сложить с содержимым регистровой пары DE, результат суммы поместить в регистровую пару HL, после чего выйти в монитор.
Ввод программы осуществляется описанным выше способом, после чего производится проверка правильности введённых кодов.
В регистровые пары BC и DE заносятся любые два HEX числа, например, 02FFH и A301H. Их сумма появится после выполнения программы в регистровой паре HL, это будет число A600H.
Программа имеет вид:
Адрес | OBJ | Метка | КОП | Операнды | Комментарий: |
1000H | MOV | A, C | : A <= C | ||
1001H | ADD | E | : A <= A + E | ||
1002H | 6F | MOV | L, A | : L <= A | |
: сложение ст. байтов | |||||
1003H | MOV | A, B | : A <= B | ||
1004H | 8A | ADC | D | : A <= A+D+CY | |
1005H | MOV | H, A | : H <= A | ||
1006H | C3 | JMP | ENTRY | : остановка процессора | |
1007H | |||||
1008H |