В данном цикле лабораторных работ изучается система команд МК51 на уровне ассемблерных кодов. Программирование осуществляется на языке Макро Ассемблер А51 разработанном фирмой KEIL ELEKTRONIK GmbH.
Цикл программирования и отладки включает в себя следующие этапы: написание исходных текстов программ на языке А51 с помощью любого текстового редактора и запись в файл с расширением . а51, например sample. а51; компиляция программ в объектный файл с помощью компилятора А51 с включением в файл отладочной информации посредством директивы DEBUG.
Пример: D:\8051\A51 sample. a51 DEBUG;
В результате компиляции будут выданы сообщения об обнаруженных ошибках и месте их обнаружения. В случае отсутствия ошибок будет создан объектный файл с именем программы и расширением, obj (sample. obj) и, независимо от успеха компиляции, файл листинга (sample. lst) с отладочной и служебной информацией.
Создание с помощью линкера L51 абсолютного объектного модуля - файл без расширения с именем написанной программы (sample.) и map-файла с расширением . m51, содержащего информацию о распределении памяти, размещении кода и переменных. При компоновке тоже могут возникать ошибки, о которых линкер выдаст соответствующие сообщения или предупреждения.
Пример: D:\8051\L51 sample. obj;
С помощью символьного отладчика DS51 производится проверка правильности работы программы и результаты ее выполнения. Загружается в отладчик абсолютный объектный модуль (файл без расширения) с помощью задания его имени в командной строке (D:\8051\DS51 sample) или из самого отладчика командой Load. Отладчик DS51 эмулирует реальную работу МК51. Более подробное описание работы в среде DS51 приведено в приложении 1. http://zaruza.ru/?p=199 по низкой цене.
NAME SAMPLE
first EQU FOH
PUBLIC START
SAMP SEGMENT CODE
RSEG SAMP
START: mov PSW,#011000b ; выбор банка регистров 3
LOOP clr C ; сброс флага переноса
mov R1,#first ; загрузка в регистр R1 числа 0xF0
inc R1 ; инкремент содержимого R1
3
mov A,#first ; загрузка в аккумулятор числа 0xF0
swap A ; обмен местами тетрад в аккумуляторе
xch A,R1 ; обмен содержимого аккумулятора и R1
add A,R1 ; сложение содержимого аккумулятора и R1
jc LOOP ; переход на метку LOOP, если
; возник перенос
END
|