[an error occurred while processing this directive] [an error occurred while processing this directive]
Electronik'у -Предлагаю пари на 10$, что я прав в вопросе с IDATA
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Cat_Thomas 26 октября 2001 г. 00:23
В ответ на: Глупости говорите ;) отправлено Elektronik 25 октября 2001 г. 20:28

Ваш пример

//****************************************
Программа:

#include "reg52.h"

main()
{
#pragma asm
mov 81H, #67 ;for example
LOOP: mov r0, #81H
mov @r0, #0
jmp LOOP ; endlose loop
#pragma endasm
}
//***********************************************
Листинг С:

C51 COMPILER V6.00i TEST 10/25/2001 23:57:40 PAGE 1


C51 COMPILER 6.00i, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN .\test\test.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE .\test\test.c OBJECTEXTEND DEBUG PRINT(.\test.lst) SRC(.\test.SRC)

stmt level source

1 #include "reg52.h"
2
3 main()
4 {
5 1 #pragma asm
6 1 mov 81H, #67 ;for example
7 1 LOOP: mov r0, #81H
8 1 mov @r0, #0
9 1 jmp LOOP
10 1 #pragma endasm
11 1
12 1 }


MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 13 ----
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)

//******************************************
Листинг SRC (выдержка):

87 ?PR?main?TEST SEGMENT CODE
88 EXTRN CODE (?C_STARTUP)
89 PUBLIC main
90 ; #include "reg52.h"
91 ;
92 ; main()
93
---- 94 RSEG ?PR?main?TEST
95 USING 0
0000 96 main:
97 ; SOURCE LINE # 3
98 ; {
99 ; SOURCE LINE # 4
100 ; #pragma asm
101 ; mov 81H, #67 ;for example
0000 758143 102 mov 81H, #67 ;for example
103 ; LOOP: mov r0, #81H
0003 7881 104 LOOP: mov r0, #81H
105 ; mov @r0, #0
0005 7600 106 mov @r0, #0
107 ; jmp LOOP
0007 80FA 108 jmp LOOP
109 ; #pragma endasm
110 ;
111 ; }
112 ; SOURCE LINE # 12
0009 22 113 RET
114 ; END OF main
115
116 END
A51 MACRO ASSEMBLER TEST

/******************************************
Результат работы в дебаггере:

Сколько ни гонять пошагово цикл LOOP, значение, введенное в стек, не меняется, т.к. к нему нет обращения из цикла.
Вывод - фирменное описание все же соответствует истине и области памяти IDATA и SFR - физически разные области.

Предлагаю пари на 10$, что я прав в этом вопросе.

P.S. И будьте осторожны на будущее со словом "глупости".

Cat_Thomas

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru