Программа генерации числовой последовательности
С нормальным распределением CSEG AT 00 ; LJMP INIT ; ORG 0BH ; LJMP START ; DSEG AT 02H ; X_Y: DS 2 ; X_A: DS 2 ; X_M: DS 2 ; X_SUM: DS 8 ; X_SCHET: DS 1 ; X_Z: DS 2 ; X_SCHETCHIK: DS 1 ; X_RES: DS 15 ; MY_PROG SEGMENT CODE ; RSEG MY_PROG ; ORG 30H ; INIT: MOV THO,#0D9H; MOV TL0,#05H ; MOV TMOD,#01H ; MOV IE, #82H ; SETB TR0 ; WAIT: SJMP WAIT ; START: CLR EA ; SETB RS0 ; MOV R4, X_Y ; MOV R5,X_Y+1 ; CLR RS0 ; SETB RS1 ; MOV R0,#14H ; MAIN: CLR RS1 ; SETB RS0 ; MOV A,X_Y ; MOV B, X_A ; MUL AB ; MOV R0, A ; MOV R1, B ; MOV A,X_Y ; MOV B,X_A+1 ; MUL AB ; MOV R2,B ; ADD A,R1 ; MOV R1,A ; JNC NC1 ; CLR C ; INC R2 ; NC1: MOV A,X_A ; MOV B,X_Y+1 ; MUL AB ; ADD A,R1 ; MOV R1,A ; XCH A,B ; JNC NC2 ; CLR C ; INC R2 ; NC2: ADD A,R2 ; MOV R2,A ; JNC NC3 ; CLR C ; INC R3 ; NC3: MOV A, X_Y+1 ; MOV B,X_A+1 ; MUL AB ; ADD A,R2 ; MOV R2,A ; JNC NC4 ; CLR C ; INC R3 ; NC4: MOV A, R3 ; ADD A,B ; MOV R3, A ; CJNE R3,#00,NV1 ; CJNE R2,#00, NV3 ; LJMP NV5 ; NV1: MOV A,R0 ; CLR C ; SUBB A,X_M ; MOV RO,A ; JNC NV2 ; CLR C ; DEC R1 ; JNC NV2 ; CLR C ; DEC R2 ; JNC NV2 ; CLR C ; DEC R3 ; CJNE R3,#00,NV2 ; MOV A, R1 ; SUBB A,X_M+1 ; MOV R1, A ; LJMP NV3 ; NV2: MOV A,R1 ; SUBB A,X_M+1 ; MOV R1, A ; JNC NV1 ; CLR C ; DEC R2 ; JNC NV1 ; CLR C; DEC R3 ; CJNE R3,#00,NV1 ; NV3: MOV A,R0 ; SUBB A,X_M ; MOV R0,A ; JNC NV4 ; CLR C ; DEC R1 ; JNC NV4 ; CLR C ; DEC R2 ; CJNE R2,#00,NV4 ; MOV A,R1 ; SUBB A,X_M+1 ; MOV R1,A ; LJMP NV5 ; NV4: MOV A,R1 ; SUBB A, X_M+1 ; MOV R1, A ; JNC NV3 ; CLR C ; DEC R2 ; CJNE R2,#00,NV3 ; NV5: MOV A,R0 ; SUBB A,X_M ; MOV R0,A ; JNC NV6 ; CLR C ; DEC R1 ; NV6: MOV A,R1 ; SUBB A,X_M+1 ; MOV R1,A ; JNC NV5 ; MOV A,R0 ; CLR C ; ADD A,X_M ; MOV R0, A ; MOV X_Y,A ; MOV A,R1 ; ADDC A,X_M+1 ; MOV R1,A ; MOV X_Y+1,A ; CLR C ; MOV A,R0 ; ADD A,R4 ; MOV R4,A ; JNC NEXT ; CLR C ; INC R5 ; NEXT: MOV A,R1 ; ADD A,R5 ; MOV R5,A ; JNC NV8 ; CLR C ; INC R6 ; NV8: INC R7 ; CJNE R7,#12,NV11 ; MOV R7,#00 ; SETB RS1 ; CLR RS0 ; MOV A,X_SUM+4 ; CLR C ; SUBB A,R1 ; MOV @R0,A ; INC R0 ; JNC NV9 ; CLR C ; DEC X_SUM+5 ; NV9: MOV A,X_SUM+5 ; SUBB A,R2 ; MOV @R0,A ; INC R0 ; JNC NV10 ; CLR C ; DEC X_SUM+6 ; NV10: MOV @R0,X_SUM+6 ; INC R0 ; MOV X_SUM+4,#00 ; MOV X_SUM+5,#00 ; MOV X_SUM+6,#00 ; INC R3 ; CJNE R3,#05, NV11 ; MOV R3, #00 ; SETB EA ; LJMP OUT ; NV11: LJMP MAIN ; OUT: END ;
Отладка системы в целом В курсовой работе для отладки системы я использовал программу ProView. ProView фирмы Franklin Software Inc. – интегрированная среда разработки программного обеспечения для однокристальных микроконтроллеров семейства Intel 8051 и его клонов. Она включает в себя всё, что нужно для создания, редактирования, компиляции, трансляции, компоновки, загрузки и отладки программ: · стандартный интерфейс Windows, · полнофункциональный редактор исходных текстов с выделением синтаксических элементов цветом, · организатор проекта, · транслятор с языка C, · ассемблер, · отладчик, · встроенную справочную систему. Среда разработки подобна Visual C++ Microsoft и Borland C++ для Windows. Пользователи, знакомые с любым из этих изделий, будут чувствовать себя в ProView, как дома. Первый этап разработки программы – запись её исходного текста на каком-либо языке программирования. Затем производится компиляция или трансляция его в коды из системы команд микроконтроллера, используя транслятор или ассемблер. Трансляторы и ассемблеры – прикладные программы, которые интерпретируют текстовый файл, содержащий исходный текст программы, и создают объектные файлы, содержащие объектный код. После компоновки объектных модулей наступает этап отладки программы, устранения ошибок, оптимизации и тестирования программы. ProView объединяет все этапы разработки прикладной программы в единый рекурсивный процесс, когда в любой момент времени возможен быстрый возврат к любому предыдущему этапу. ProView имеет следующие компоненты. Оптимизирующий кросс-компилятор C51 Язык C – универсальный язык программирования, который обеспечивает эффективность кода, элементы структурного программирования и имеет богатый набор операторов. Универсальность, отсутствие ограничений реализации делают язык C удобным и эффективным средством программирования для широкого разнообразия задач. Множество прикладных программ может быть написано легче и эффективнее на языке C, чем на других более специализированных языках. C51 – полная реализация стандарта ANSI (Американского национального института стандартов), насколько это возможно для архитектуры Intel 8051. C51 генерирует код для всего семейства микроконтроллеров Intel 8051. Транслятор сочетает гибкость программирования на языке C с эффективностью кода и быстродействием ассемблера. Использование языка высокого уровня C имеет следующие преимущества над программированием на ассемблере: · глубокого знания системы команд процессора не требуется, элементарное знание архитектуры Intel 8051 желательно, но не необходимо; · распределение регистров и способы адресации управляются полностью транслятором; · лучшая читаемость программы, используются ключевые слова и функции, которые более свойственны человеческой мысли; · время разработки программ и их отладки значительно короче в сравнении с программированием на ассемблере; · библиотечные файлы содержат много стандартных подпрограмм, которые могут быть включены в прикладную программу; · существующие программы могут многократно использоваться в новых программах, используя модульные методы программирования. Макроассемблер A51 Ассемблер A51 совместим с ASM51 Intel для всего семейства микроконтроллеров Intel 8051. Ассемблер транслирует символическую мнемонику в перемещаемый объектный код, имеющий высокое быстродействие и малый размер. Макросредства ускоряют разработку и экономят время, поскольку общие последовательности могут быть разработаны только один раз. Ассемблер поддерживает символический доступ ко всем элементам микроконтроллера и перестраивает конфигурацию для каждой разновидности Intel 8051. A51 транслирует исходный файл ассемблера в перемещаемый объектный модуль. При отладке или при включенной опции “Include debugging information” этот объектный файл будет содержать полную символическую информацию для отладчика/имитатора или внутрисхемного эмулятора. Компоновщик L51 Компоновщик объединяет один или несколько объектных модулей в одну исполняемую программу. Компоновщик размещает внешние и общие ссылки, назначает абсолютные адреса перемещаемым сегментам программ. Он может обрабатывать объектные модули, созданные транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel. Компоновщик автоматически выбирает соответствующие библиотеки поддержки и связывает только требуемые модули из библиотек. Установки по умолчанию для L51 выбраны так, чтобы они подходили для большинства прикладных программ, но можно определить и заказные установки.
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (195)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |