Организация микропроцессоров (МП К580)Рефераты >> Программирование и компьютеры >> Организация микропроцессоров (МП К580)
Программа №12
Выбор максимального элемента массива.
Адрес |
Команда |
Мнемоника команды |
Комментарий |
000 |
041 |
LXI H | |
001 |
100 |
B1 | |
002 |
000 |
B2 | |
003 |
016 |
MVI C |
Загрузка переменной цикла |
004 |
005 |
B2 | |
005 |
176 |
MOV A,M |
Загрузка в А первого элемента |
006 |
043 |
INX H |
Переход к следующему элементу |
007 |
276 |
CMP M |
Если А>М С=0 А<М С=1 |
010 |
332 |
JC |
Если А<М меняем местами |
011 |
014 |
B2 | |
012 |
000 |
B3 | |
013 |
176 |
MOV A,M |
Перенос в А нового максимума |
014 |
015 |
DCR C |
Уменьшение переменной цикла |
015 |
302 |
JNZ |
Если переменная цикла не равна 0 то все сначала |
016 |
006 |
B2 | |
017 |
000 |
B3 | |
020 |
062 |
STA |
Сохранение результата в памяти |
021 |
150 |
B2 | |
022 |
000 |
B3 | |
023 |
166 |
HLT |
Конец |
2.Выполнение индивидуальных заданий
Программа №1
Упорядочить пятнадцать элементов массива по возрастанию.
Адрес |
Команды |
Мнемоника команды |
Комментарии |
000 |
016 |
MVI C |
Число прохождений внешнего цикла 15-1=14=16(8) |
001 |
016 |
B2 | |
002 |
041 |
LXI H |
Загрузка адреса первого элемента массива |
003 |
100 |
B2 | |
004 |
000 |
B3 | |
005 |
026 |
MVI D |
Число сравнений внутри главного цикла |
006 |
016 |
B2 | |
007 |
106 |
MOV B,M |
Сохр. Первый из сравниваемых элементов в B |
010 |
043 |
INX H |
Формирование адреса второго ср-ого элемента |
011 |
176 |
MOV A,M |
Сохранение второго элемента в аккумуляторе |
012 |
270 |
CMP B |
Сравнение аккумулятора с регистром B.A>B => флаг C=0 и наоборот |
013 |
322 |
JNC |
Если C=1, то элементы расположены по возрастанию и выполнять перемену их местами не нужно(ком 016-021) |
014 |
022 |
B2 |
След. Ячейка |
015 |
000 |
B3 |
Делитель из памяти в В |
016 |
160 |
MOV M,B |
Перезапись первого элемента по адресу второго |
017 |
053 |
DCX H |
Сформировали адрес первого элемента |
020 |
167 |
MOV M,A |
Сохранили под адресом первого элемента второй |
021 |
043 |
INX H |
Адрес первого из сравниваемых в следующем цикле |
022 |
025 |
DCR D |
Уменьшение переменной внутреннего цикла |
023 |
302 |
JNZ |
Если переменная не равна нулю переход к следующей итерации |
024 |
007 |
B2 | |
025 |
000 |
B3 | |
026 |
015 |
DCR C |
Уменьшение переменной внешнего цикла |
027 |
302 |
JNZ |
Если переменная внешнего цикла не равна нулю то переходим к следующей итерации |
030 |
002 |
B2 | |
031 |
000 |
B3 | |
032 |
166 |
HLT |
Конец программы. |