Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Трансляция программных модулейСодержание книги
Поиск на нашем сайте Как уже обсуждалось в предыдущих главах, программный проект (программа) может состоять из нескольких модулей. В программном проекте, состоящем из нескольких файлов, появляется возможность нескольких видов трансляции. Прежде всего, можно оттранслировать только один файл, не транслируя остальные файлы программного проекта. Это позволяет обнаружить и исправить все синтаксические ошибки в отдельном программном модуле. При трансляции каждого программного модуля на жёстком диске формируются перемещаемый файл в объектном формате, который затем будет использоваться для создания загрузочного файла программного проекта. Этот файл называется объектный модуль. Одновременно с объектным модулем на диске формируется файл листинга программного модуля, в который помещается исходный текст программного модуля и сообщения о синтаксических ошибках. В листинге 24.1 приведен пример исходного текста, программы, написанного на языке программирования C, а в листинге 24.2 приведено содержимое файла листинга, создаваемого при трансляции этого исходного текста. Листинг 24.1. Исходный текст программы. /*========================= main.c =========================== Программа лабораторной работы №5
Проект ОБУЧАЮЩИЕ ПРОГРАММЫ Программист::::::::.. Версия 1.00 Написана::::::.
Последнее изменение::::. программы ============================================================*/
#include "ADuC812.h" //Подключить определения всех внутренних регистров ADuC812
#define ParPort 0x8 //Определить константу переключения на 8 страницу памяти
#define SvDiod *(volatile unsigned char xdata *)7 /*Переменная косвенной адресации 7 ячейки внешней памяти (светодиодов)*/
main() {DPP=ParPort; //Подключиться к параллельному порту SvDiod=1; //Зажечь светодиод номер 0
while(1) //Обеспечить зацикливание микроконтроллера { /*(чтобы не было программного сброса микросхемы */ } /*языком программирования) */ }
Листинг 24.2 Содержимое файла листинга. C51 COMPILER V7.20 MAIN 08/06/2006 23:14:21 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN OBJECT MODULE PLACED IN.\obj\main.obj COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lst\ -main.lst) PAGEWIDTH(90) OBJECT(.\obj\main.obj)
line level source
1 /*========================= main.c =========================== 2 Программа лабораторной работы №5 4 Проект ОБУЧАЮЩИЕ ПРОГРАММЫ 5 Программист::::::::.. 6 Версия 1.00 7 Написана::::::. 9 Последнее 10 изменение::::. 11 программы 12 ============================================================*/ 14 #include "ADuC812.h"//Подключить определения всех внутренних регистров ADuC812 16 #define ParPort 0x8 //Определить константу переключения на 8 страницу памяти 18 #define SvDiod *(volatile unsigned char xdata *)7 /*Переменная косвенной 19 адресации 7 ячейки внешней памяти (светодиодов)*/ 21 main() 22 {DPP=ParPort; //Подключиться к параллельному порту 23 1 SvDiod=1; //Зажечь светодиод номер 0 24 1 25 1 while(1) //Обеспечить зацикливание микроконтроллера 26 1 { /*(чтобы не было программного сброса микросхемы */ 27 2 } /*языком программирования) */ 28 1 }
MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 11 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- ---- IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
При трансляции программного модуля, написанного на языке программирования ассемблер, в листинг помещаются машинные коды команд процессора, и их адрес относительно начала программного модуля. Пример содержимого такого файла приведен в листинге 24.3.
Листинг 24. 3. Содержимое файла листинга программы, написанной на ассемблере. A51 MACRO ASSEMBLER Модуль инициализации процессора 05/24/2004 14:00:11 PAGE 1
MACRO ASSEMBLER A51 V7.01 OBJECT MODULE PLACED IN.\OBJ\init.obj ASSEMBLER INVOKED BY: F:\Keil\C51\BIN\A51.EXE init.asm NOMOD51 SET(SMALL) DEBUG PRINT(.\LST\init.lst) XREF OBJECT(.\OBJ\ init.obj) EP
LOC OBJ LINE SOURCE
1 $title (Модуль инициализации процессора) 3;========== init.asm ====================== 4;Учебная программа 5; 6;Проект Аттестационная работа 7;Программист Борисенко С. т. 66-02-86 8;Версия 1.00 9;Написана 9 апреля 2004. 10; 11;Последнее 12 апреля 2004. 12;изменение v1.00 13;программы 14;============================================================ 254 $LIST 256 _code segment code 258 public init ---- 260 rseg _code 262;-------------------------------------------- 263;ПОДПРОГРАММА ИНИЦИАЛИЗАЦИИ МИКРОКОНТРОЛЛЕРА 264;------------------------------------------- 265;настраивает таймер 0 в качестве системных часов на период 10мс 266;(Этого периода достаточно для устранения дребезга клавиатуры) 0000 268 init: 269;--- Настроить Timer 0 --------------------- 0000 758901 270 mov TMOD, #00000001b 271; | 272; ||++--Выбрать режим 16-разрядного таймера 273; |+----Использовать внутреннюю синхронизацию 274; +-----Запретить управление таймером от INT0 0003 758A94 276 mov TL0, #LOW(-(F_ZQ/12)*10);Настроить таймер 0006 758C94 277 mov TH0, #HIGH(-(F_ZQ/12)*10);на период 10мс 0009 D28C 279 setb TR0;Включить таймер 0 280;---------------------------------------------------- 282;--- Погасить светодиоды ----------------------------- 000B C293 283 clr SV1 000D C294 284 clr SV2 000F 438E01 286 orl AUXR,#1;Запретить выдачу частоты ALE на выход 287;микроконтроллера 0012 75A882 288 mov IE,#10000010b 289;| | 290;| +--Разрешить прерывания от таймера 0 291;+--------Разрешить прерывания 292;---------------------------------------------------- 0015 120000 F 294 call IndInit;Инициализировать ЖКИ дисплей 0018 22 295 ret 297 end A51 MACRO ASSEMBLER Модуль инициализации процессора 05/24/2004 14:00:11 PAGE 3
XREF SYMBOL TABLE LISTING ---- ------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES / REFERENCES AC........ B ADDR 00D0H.6 A 204# ACC........ D ADDR 00E0H A 60# ADRKLAV...... D ADDR 00A0H A 225# EA........ B ADDR 00A8H.7 A 162# ES........ B ADDR 00A8H.4 A 159# IE........ D ADDR 00A8H A 56# 288 INDINIT...... C ADDR ----- EXT 252# 294 INIT....... C ADDR 0000H R SEG=_CODE 258 268# INT0....... B ADDR 00B0H.2 A 178# INT1....... B ADDR 00B0H.3 A 179# IP........ D ADDR 00B8H A 58# P0........ D ADDR 0080H A 30# P1........ D ADDR 0090H A 52# P2........ D ADDR 00A0H A 55# 225 P3........ D ADDR 00B0H A 57# PCON....... D ADDR 0087H A 36# PSW........ D ADDR 00D0H A 59# PUTCHAR...... C ADDR ----- EXT 252# SBUF....... D ADDR 0099H A 54# SCON....... D ADDR 0098H A 53# SP........ D ADDR 0081H A 31# T0........ B ADDR 00B0H.4 A 180# T1........ B ADDR 00B0H.5 A 181# TCON....... D ADDR 0088H A 37# TMOD....... D ADDR 0089H A 38# 270 _CODE....... C SEG 0019H REL=UNIT 256# 260
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
При трансляции исходного текста программы, написанной на языке программирования высокого уровня, таком как C или PLM, программа-транслятор может быть настроена так, что она будет создавать файл с текстом исходного модуля, написанного на ассемблере или помещать операторы языка программирования ассемблер в листинг программного модуля. Таким образом, появляется возможность писать, и отлаживать программу на языке высокого уровня, а затем переводить её на язык программирования ассемблер и окончательно оптимизировать её вручную. В листинге 24.4 приведено содержимое файла листинга, создаваемого при трансляции исходного текста программы, написанного на языке C‑51, с ассемблерным кодом.
Листинг 24.4. Содержимое файла листинга. C51 COMPILER V7.20 MAIN 08/06/2006 23:28:20 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN OBJECT MODULE PLACED IN.\obj\main.obj COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND CODE PRINT(. -\lst\main.lst) PAGEWIDTH(90) OBJECT(.\obj\main.obj)
line level source
1 /*========================= main.c =========================== 2 Программа лабораторной работы №5 4 Проект ОБУЧАЮЩИЕ ПРОГРАММЫ 5 Программист::::::::.. 6 Версия 1.00 7 Написана::::::. 9 Последнее 10 изменение::::. 11 программы 12 ============================================================*/ 14 #include "ADuC812.h" //Подключить определения всех внутренних 15 // регистров ADuC812 16 #define ParPort 0x8 //Определить константу переключения на 8 страницу памяти 18 #define SvDiod *(volatile unsigned char xdata *)7 /*Переменная косвенной 19 адресации 7 ячейки внешней памяти (светодиодов)*/ 21 main() 22 {DPP=ParPort; //Подключиться к параллельному порту 23 1 SvDiod=1; //Зажечь светодиод номер 0 24 1 25 1 while(1) //Обеспечить зацикливание микроконтроллера 26 1 { /*(чтобы не было программного сброса микросхемы */ 27 2 } /*языком программирования) */ 28 1 } C51 COMPILER V7.20 MAIN 08/06/2006 23:28:20 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION main (BEGIN) ; SOURCE LINE # 21 ; SOURCE LINE # 22 0000 758408 MOV DPP,#08H ; SOURCE LINE # 23 0003 900007 MOV DPTR,#07H 0006 7401 MOV A,#01H 0008 F0 MOVX @DPTR,A 0009?C0001: ; SOURCE LINE # 25 ; SOURCE LINE # 26 ; SOURCE LINE # 27 0009 80FE SJMP?C0001 ; FUNCTION main (END)
MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 11 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- ---- IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||
|
Последнее изменение этой страницы: 2017-02-07; просмотров: 327; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.007 с.) |