Студопедия


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

Блок схема




2.3 Распределение памяти и листинг программы.

Распределение памяти:

L – счетчик цикла

B,C – содержат текущий байт первого числа

D,E – содержат текущий байт второго числа

H – содержит значение текущего второго числа

A – содержит значение текущего байта первого числа

H,L – временное хранение значения адреса старшего байта второго числа, с последующим перемещением в пару D,E

400016-адрес начала массива исходных чисел

Адрес16 Шестнадцатери-чный код Код ассемблера комментарии
4000 31 00 80 LXI SP,8000 h Создание стека
4003 01 03 50 LXI B,5003 h Загрузить в пару B,C значение адреса старшего байта второго числа
4006 21 07 50 LXI H,5007 h Загрузить H,L значение адреса старшего байта второго числа
4009 EB XCHG Сохранение значения адреса старшего байта второго числа в D,E
400A 1A LDAX D Загрузка в A значения старшего байта второго числа
400B E6 7F ANI 7Fh Обнуление старшего бита, отвечающего за знак числа
400D 67 MOV H,A Сохранение получившегося значения в регистре H
400E 0A LDAX B Загрузка в A значения старшего байта первого числа
400F E6 7F ANI 7Fh Обнуление старшего бита, отвечающего за знак числа
4011 2E 04 MVI L, 04h Загрузка счетчика цикла значением 4
4013 BC CMP H Сравнить байты чисел (содержимое A с содержимым регистра H)
4014 DA 2F 40 JC 402Fh Если второе число больше создать в регистре B значение 02h
4017 C2 3B 40 JNZ 403Bh Если второе число больше создать в регистре B значение 01h
401A 0B DCX B Получить в паре B,C значение адреса следующего байта первого числа
401B 1B DCX D Получить в паре D,E значение адреса следующего байта второго числа
401C 1A LDAX D Загрузить в A значение следующего байта второго числа
401D 67 MOV H,A Сохранение значения в регистре H
401E 0A LDAX B Загрузить в A значение следующего байта первого числа
401F 2D DCR L Уменьшить значение счетчика на единицу
4020 C2 13 40 JNZ 4013h Пока значение счетчика не ноль выполнять цикл
4023 3E 00 MVI A,00h Числа равны записать в A значение 00h
4025 32 00 70 STA 7000h Отправляем содержимое аккумулятора в ячейку 7000
4028 21 7C 30 LXI H,307Ch Загрузка в H,L адреса, начиная с которого располагается текст : «NUMBERS ARE EQUAL».
402B E5 PUSH H Запись содержимого регистров H,L в стек
402C C3 44 40 JMP 4044h Безусловный переход к адресу 4044h, выводу на экран результатов
402F 3E 02 MVI A,02h Записываем 02h в A
4031 32 00 70 STA 7000h Отправляем содержимое аккумулятора в ячейку 7000h
4034 21 5D 30 LXI H,305Dh Загрузка в H,L адреса, начиная с которого располагается текст: «THE SECOND MORE THAN THE FIRST».
4037 E5 PUSH H Запись содержимого регистров H,L в стек
4038 C3 44 40 JMP 4044h Безусловный переход к адресу 4044h, выводу на экран результатов
403B 3E 01 MVI A,01h Записываем 01h в A
403D 32 00 70 STA 7000h Отправляем содержимое аккумулятора в ячейку 7000h
4040 21 3E 30 LXI H, 303Eh Загрузка в H,L адреса, начиная с которого располагается текст: «THE FIRST MORE THAN THE SECOND».
4043 E5 PUSH H Запись содержимого регистров в H,L в стек
4044 01 20 30 LXI B, 3020h Загрузка в B,C адреса, начиная с которого располагается текст: «INITIAL DATA».
4047 CD 4C 00 CALL 4Ch Вывод текста на экран.
404A CD 49 00 CALL 49h Переход на новую строку.
404D 21 03 50 LXI H, 5003h Загрузить в пару H,L значение адреса старшего байта первого числа
4050 CD 00 41 CALL 4100h Переход к подпрограмме вывода числа на экран
4053 21 07 50 LXI H, 5007h Загрузить в пару H,L значение адреса старшего байта второго числа
4056 СD 00 41 CALL 4100h Переход к подпрограмме вывода числа на экран
4059 С1 POP B Извлечение из стека значений в регистры B,C
405A CD 4C 00 CALL 4Ch Вывод текста на экран
405D CD 49 00 CALL 49h Переход на новую строку.
4060 01 8E 30 LXI B,308Eh Загрузка в B,С адреса начиная с которого располагается текст: CHANGE NUMBERS? (Y/N)
4063 CD 4C 00 CALL 4Ch Вывод текста на экран
4066 CD 55 00 CALL 55h Ввод кода символа в A с эхом на консоль
4069 D6 4E SUI 4Eh Вычитание 4Eh (Код клавиши N) из аккумулятора
406B CD 49 00 CALL 49h Переход на новую строку
406E CA 90 40 JZ 4090h Переход по условию Z=1, т.е нажата клавиша N
4071 01 A6 30 LXI B,30A6h Загрузка в B,C адреса начиная с которого располагается текст: ENTER NUMBERS :.
4074 CD 4C 00 CALL 4Ch Вывод текста на экран
4077 16 08 MVI D,08h Создание счетчика D
4079 21 00 50 LXI H, 5000h Загрузка в H,L адреса начиная с которого располагаются исходные числа.
407C CD 67 00 CALL 67h Ввод двух шестнадцатеричных цифр в A
407F 77 MOV A, M Пересылка содержимого M в A
4080 23 INX H Положительное приращение H,L
4081 15 DCR D Отрицательное приращение регистра D
4082 3E 20 MVI A, 20h Пересылка 20h (код клавиши пробел) в регистр A
4084 CD 58 00 CALL 58h Вывод пробела на экран
4087 C2 7C 40 JNZ 407Ch Переход по условию: Z=0, т.е не все константы введены
408A CD 49 00 CALL 49h Переход на новую строку
408D C3 00 40 JMP 4000h Безусловный переход кначалу программы
4090 CD 40 00 CALL 40h Вход в режим ожидания ввода команды монитора.

Подпрограмма вывода числа на экран.






4100 1E 04 MVI E,20h Создание счетчика в E
4102 7E MOV A,M Пересылка содержимого M в А.
4103 CD 61 00 CALL 61h Вывод на кран бита числа.
4106 2D DCR L Отрицательное приращение регистра L , получение адресов следующего бита числа.
4107 3E 20 MVI A,20h Пересылка 20h в регистр A
4109 CD 58 00 CALL 58h Вывод пробела на экран
410С 1D DCR E Отрицательное приращение регистра E
410D C2 02 41 JNZ 4102h Переход по условию Z=0 то есть не все константы введены
4110 CD 49 00 CALL 49h Переход на новую строку
4113 C9 RET Выход из подпрограммы




Дата добавления: 2015-04-01; просмотров: 522; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: На стипендию можно купить что-нибудь, но не больше... 8778 - | 7161 - или читать все...

Читайте также:

 

3.226.251.205 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.002 сек.