24.08.2019, 04:16 [+3 UTC]
в нашей команде: 3 779 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.77 (31.05.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
22.08.2019, 11:39

Последний вопрос:
23.08.2019, 10:58
Всего: 150135

Последний ответ:
23.08.2019, 21:59
Всего: 258866

Последняя рассылка:
24.08.2019, 01:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
03.01.2011, 21:33 »
Roots
Спасибо за столь быстрый ответ! [вопрос № 181714, ответ № 265223]
19.03.2017, 04:43 »
svrvsvrv
Спасибо за Вашу отличную консультацию [вопрос № 190736, ответ № 274809]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 91
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 69
Kdsfofwe21
Статус: 2-й класс
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 195663
Раздел: • Assembler
Автор вопроса: lordwarrior161 (Посетитель)
Отправлена: 19.05.2019, 18:12
Поступило ответов: 0

Здравствуйте! У меня возникли сложности с таким вопросом:

В ассемблере понимаю ровно 0, делаю практическую работу, нужно вычислить выражение: F=(a+b)/c

Работаю в FASM в Windows XP( виртуальная )

сваял вот такой код:



use16


mov ax,a ; ax=a
mov bx,b ; bx=b
add ax,bx ; ax=ax+bx
mov dx,c ; dl=c
div dx ; al=ax/dl
mov al,f


;---------

a db 2
b db 2
c db 2
f db ?

но совсем не уверен, что правильно.
прошу подсказать и поправить. Спасибо.

Состояние: Консультация закрыта

Oтветов пока не поступило.

Мини-форум консультации № 195663

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 1

= общий = | 19.05.2019, 18:58 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Код (Assembler) :: выделить код
mov ax,a ; ax=a
. . .
a db 2

а = 8-мь бит, АХ = 16-ть бит
*X16=*H8+*L8
Вместо * -A,B,C,D.
Т.е. Вам нужно определится с разрядностью операндов.
это пока основная ошибка.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Kdsfofwe21
2-й класс

ID: 402218

# 2

 +1 
 
= общий = | 19.05.2019, 19:11 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

так же если деление производите посредством операнда DX, и в тоже время у Вас там находится делимое, то сомневаюсь что там будет хорошо, поэтому используйте div dl. Так же сохранение результата, перепутали местами операнды источник,назначение. Но общая, теоретическая логика арифметики не плохая у Вас. Надо всего лишь посмотреть таблицу делимого/частного/делителя при div и Вам станет всё ясно.

lordwarrior161
Посетитель

ID: 403037

# 3

= общий = | 19.05.2019, 19:14 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
Вам нужно определится с разрядностью операндов.


8 бит конечно же

Переделал

;F=(a+b)/c



mov al,a ; al=a
mov bl,b ; bl=b
add al,bl ; al=al+bl
mov cl,c ; cl=c
div cl

;-------------------------
a db 2
b db 2
c db 2

но опять же уверенности в правильности никакой smile

еще не могу понять, как вывести результат в переменную f

-----
Последнее редактирование 19.05.2019, 19:16 lordwarrior161 (Посетитель)

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 4

 +1 
 
= общий = | 19.05.2019, 19:15 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

а блин это FASM, получение значения только через [ a ], команда mov ax,a получает адрес переменной а.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 5

= общий = | 19.05.2019, 19:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

1) Вы пытаетесь создать BIN, у Вас это получилось. smile
2) Для СОМ нужно указывать директиву ORG smile
3) исправленный вариант:

Код (Assembler) :: выделить код
use16

org     100h
mov al,[a] ; ax=a
mov bl,[b] ; bx=b
add al,bl ; ax=ax+bx
mov cl,[c] ; dl=c
div cl ; al=ax/dl
nop
;mov al,f
;---------
a db 2
b db 2
c db 2
f db ? 

Команду ;mov al,f - я исключил, т.к. Вы целую часть деления пытаетесь переписать.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 6

= общий = | 19.05.2019, 19:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Слегка изменил данные, и видно результат деления.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

-----
 Прикрепленный файл (кликните по картинке для увеличения):

Kdsfofwe21
2-й класс

ID: 402218

# 7

 +1 
 
= общий = | 19.05.2019, 19:42 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

Да, эти синтаксисы fдостают, Я на fasm'е практикую, но почему то не обратил внимания как берётся значение из переменной. Порой думаю, лучше бы не знал Я никакого masm'a и tasm'а, столько уже в просак попадал из-за синтаксиса smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 8

 +1 
 
= общий = | 19.05.2019, 19:47 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Kdsfofwe21:

© Цитата: Kdsfofwe21
так же если деление производите посредством операнда DX, и в тоже время у Вас там находится делимое, то сомневаюсь что там будет хорошо, поэтому используйте div dl.

По умолчанию делится EDX : EAX на 32 бита, DX : AX на 16 бита, AX на 8 бит, но в любом случае избегание этих регистров по умолчанию, избавляет от вероятных ошибок.
© Цитата: Зенченко Константин Николаевич
это пока основная ошибка.это пока основная ошибка.

К делению, я собрался подойти позже.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 9

= общий = | 19.05.2019, 19:50 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
3) исправленный вариант:


Огромное вам спасибо smile , но все таки, как вывести результат в F?
mov dl,f
?

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 10

 +1 
 
= общий = | 19.05.2019, 19:51 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Kdsfofwe21:

© Цитата: Kdsfofwe21
уже в просак попадал

Кроме упомянутых, я знаю NASM и ещё кучу всего, и у всех разная мнемоника
Как я Вас понимаю!
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 11

 +1 
 
= общий = | 19.05.2019, 19:55 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: lordwarrior161
как вывести результат в F?

Мнемоника команды: - копируется источник в приемник.
MOV <приемник>(регистр, память),<источник>(регистр, память, число).
Но одновременное использование память, память - не допустимо.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 12

= общий = | 19.05.2019, 20:13 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
Но одновременное использование память, память - не допустимо.


тогда как из этой ситуации выйти? или это в принципе невозможно? просто в той теории, которую я изучаю, этого момента не описано, а в примере есть

Kdsfofwe21
2-й класс

ID: 402218

# 13

= общий = | 19.05.2019, 20:18 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: lordwarrior161
© Цитата: Зенченко Константин Николаевич
Но одновременное использование память, память - не допустимо.Но одновременное использование память, память - не допустимо.


ключевое слово - "одновременно". была конструкция: память-память, что невозможно. То есть надо сначала положить одну из переменных, которая хранится в памяти, в какой либо регистр. и получится конструкция: регистр-память.

lordwarrior161
Посетитель

ID: 403037

# 14

= общий = | 19.05.2019, 20:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Kdsfofwe21
надо сначала положить одну из переменных, которая хранится в памяти, в какой либо регистр


вас понял. еще раз большое спасибо smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 15

 +1 
 
= общий = | 19.05.2019, 22:18 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Kdsfofwe21:

smile
Крутитесь как хотите:
Раз Вы подключились, то от имени Портала и по поручению Портала, прошу Вас компилировать мини-форум и оформить ответ.
Вам таки плюс будет.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 16

= общий = | 19.05.2019, 23:11 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Kdsfofwe21
Порой думаю, лучше бы не знал Я никакого masm'a и tasm'а,

Ну masm это понятно, а tasm - знать сам БОГ велел.
Смотрите сами, даже TASM знал о:
Код (Assembler) :: выделить код
Turbo Assembler	 Version 2.0
      1	0000			     model   tiny,pascal
      2	0000			     .code
      3				     org     100h
      4	0100			     b:	     call    a,ax,bx
1     5	0100  50			     PUSH    AX
1     6	0101  53			     PUSH    BX
1     7	0102  E8 0001			     CALL    A
      8	0105  C3			     ret
      9	0106			     proc    a,c:word,d:word
1    10	0106  55			     PUSH    BP
1    11	0107  8B EC			     MOV     BP,SP
1    12	0109  8B 7E 06			     mov     di,c
     13	010C  8B 76 04			     mov     si,dгг
1    14	010F  5D			     POP     BP
1    15	0110  C2 0004			     RET     0004h
     16	0113			     a	     endp
     17					     end     b

Но просто запомните, что WIN'ь TASM начал поддерживать только с версии 5+, это равноценно masm 6.14, но в MASM invoke появилась "потом", и без PROTO работать не умела, TASM уже при DOS-версиях сам поддерживал "invoke", при этом без всяких прототипов.
Те знания и идеи. которые были у разработчиков могли свернуть горы, но менеджеры "всё"-"не","дайте мне денег","мне пофиг"-"знайки", в то время просто слили компанию, и весь коллектив.
Вот такая печальная история.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Kdsfofwe21
2-й класс

ID: 402218

# 17

= общий = | 20.05.2019, 03:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

то есть, елси бы тасм продолжали бы разрабатывать, то он бы переплюнул фасм? Или на счёт "переплюнул фасм" Я мог перегнуть, и тасм до сих пор по возможностям превосходит другие компиляторы?

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 18

 +1 
 
= общий = | 20.05.2019, 10:58 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Kdsfofwe21:

Я Вам показал, что TASM

Код (Assembler) :: выделить код
call    a,ax,bx

делал аналог invoke, ещё до того, когда над его(invoke) созданием задумались разработчики MASM.
В TASM, есть два режима: MASM-совместимость и IDEAL. Первый- понятно, а вот со вторым сложнее, там столько "плюшек"-"вкусняшек", что я за почти 20-лет, со всеми ещё не разобрался.
Т.к. вопросов по идеалу нет, а заниматься чисто идеалом у меня времени тоже почти нет, а то, что осталось почти всегда съедает "рутина".
© Цитата: Kdsfofwe21
то есть, если бы тасм продолжали бы разрабатывать,

Его последняя разработка маркируется как

А теперь, просто включите фантазию и представьте, что могли бы на фантазировать эти парни, с учетом современных тенденций.
Вот и я о том.

Но Вы мне зубы не заговаривайте, ответ за Вами.
smile

-----
Последнее редактирование 20.05.2019, 11:02 Зенченко Константин Николаевич (Старший модератор)

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 19

= общий = | 20.05.2019, 11:42 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: lordwarrior161
тогда как из этой ситуации выйти? или это в принципе невозможно? просто в той теории, которую я изучаю, этого момента не описано, а в примере есть

У Вас результат хранится в регистрах AL-целая часть, AH-остаток.
У Вас не вывода результата на экран, т.е. Вы будете контролировать работу кода в отладчике, тыкаете пальцем на регистры преподу, пусть смотрит.
Но если нужно именно сохранить реультат, то ещё раз напомню:
© Цитата: Зенченко Константин Николаевич
MOV <приемник>(регистр, память),<источник>(регистр, память, число).
Но одновременное использование память, память - не допустимо.

допустимые команды
mov [ a ],al;память - регистр
mov [ a ],0Fh;память - число
mov al,[ a ];регистр -память
mov al,0Fh;регистр -число
mov al,bl;регистр - регистр
нельзя делать
mov [ a ],[ b ] - это
© Цитата:
одновременное использование память, память

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 20

= общий = | 20.05.2019, 11:47 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Kdsfofwe21:

Присоединяюсь к просьбе Константина Николаевича: с Вас ответ smile smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 21

= общий = | 20.05.2019, 12:18 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
Слегка изменил данные, и видно результат деления.


а вот у меня к сожалению даже после изменения данных значения не меняются

вот код, немного его изменил

use16
 
org 100h
mov al,[a] ; al=a
mov bl,[b] ; bl=b
add al,bl ; al=al+bl
mov dl,[c] ; dl=c
div dl ; al=ax/dl
nop
mov al,[f]
;--------- 
a db 10
b db 10
c db 20
f db ?

-----
 Прикрепленный файл (кликните по картинке для увеличения):

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 22

= общий = | 20.05.2019, 12:56 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: Зенченко Константин Николаевич
Команду ;mov al,f - я исключил, т.к. Вы целую часть деления пытаетесь переписать.

Вы так и не поняли
mov al,[ f ]-записывает в регистр значение переменной F
Вам вместо этой команды нужно MOV [ F ],AL.
По коду все правильно 1010+1010=2010=1416
2010/2010=1в любой системе даже двоичной

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 23

= общий = | 20.05.2019, 13:12 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
Вам вместо этой команды нужно MOV [ F ],AL.


каюсь, не досмотрел. Теперь понял.

еще не понятен момент:
div dl ; al=ax/dl
- тут именно ax/dl или все таки al/dl?

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 24

= общий = | 20.05.2019, 13:20 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Я уже писал, что

© Цитата: Зенченко Константин Николаевич
По умолчанию делится EDX : EAX на 32 бита, DX : AX на 16 бита, AX на 8 бит

32-а, 16-ть. 8-мь это размер делителя, будь то регистр или адрес в памяти.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 25

= общий = | 20.05.2019, 13:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Kdsfofwe21:

© Цитата: Лысков Игорь Витальевич
с Вас ответ

Пока ждите с ответом, его слегка довоюем до полного понимания автором, потом он Ваш.
smile

-----
Последнее редактирование 20.05.2019, 13:31 Зенченко Константин Николаевич (Старший модератор)

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 26

= общий = | 20.05.2019, 14:14 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
тыкаете пальцем на регистры преподу, пусть смотрит


учусь заочно, преподавателя даже в лицо не знаю smile , про компилятор и отладчик уже сам загуглил, чтобы код проверить

Код (Assembler) :: выделить код
;найти f=(a+b)/c


use16
org     100h
mov al,[a]           ; al=a 
mov bl,[b]          ; bl=b 
add al,bl            ; al=al+bl 
mov dl,[c]         ; dl=c
div dl                ; al=ax/dl
nop 
mov [f],al
;--------- 
a db 2 
b db 2 
c db 2 
f db ?


вот что у меня в итоге получилось, если уж и это неправильно, то придется менять специальность smile

-----
Последнее редактирование 20.05.2019, 14:29 Лысков Игорь Витальевич (Старший модератор)

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 27

= общий = | 20.05.2019, 14:28 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Можно, я тоже вставлю свои пять копеек? smile
Все почти хорошо. За исключением одного момента. Делиться должно же AX.
А что находится в AH? Обычно при старте регистр AX обнуляется, но лучше это сделать явно, перед делением вставить

Код (Assembler) :: выделить код
mov ah, 0
Есть еще один момент (можно и не учитывать, если устраивает то, что есть):
хорошо, если сумма двух байт поместится в байт, а если нет? Для большей универсальности я бы предложил чуть подправить:
Код (Assembler) :: выделить код
xor ax, ax           ; ax=0
xor bx, bx           ; bx =0
mov al,[a]           ; ax=a 
mov bl,[b]          ; bx=b 
add ax,bx            ; ax=ax+bx 
mov dl,[c]         ; dl=c
div dl                ; al=ax/dl

-----
Последнее редактирование 20.05.2019, 14:33 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 28

= общий = | 20.05.2019, 14:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата:
если уж и это неправильно, то придется менять специальность
Все начинали с того, что не знали элементарное smile
Было бы желание! Все придет! smile
Не понятно, заходите к нам, задавайте вопросы, поможем, разжуем, в рот покладем... smile smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 29

= общий = | 20.05.2019, 14:37 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Всем огромнейшее спасибо за развернутые ответы smile smile

Вопросы еще будут, но уже в других темах, я новичок, поэтому сильно не ругайтесь smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 30

= общий = | 20.05.2019, 14:49 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Ура! Вам не нужно:

© Цитата: lordwarrior161
менять специальность

smile
Все правильно!
Но smile
Это ассемблер, оптимальное решение ну типа такое:
Код (Assembler) :: выделить код
use16
org     100h
	xor	ah,ah
	mov	al,[a]; al=a 
;mov bl,[b];bl=b
	add	al,[b]; al=al+b
;mov dl,[c]; dl=c
	div	[c];al=ax/c
	mov	[f],al
;--------- 
a	db	2
b	db	2
c	db	2
f	db	?   

Простите, что сразу не ответили правильно, но у Вас появился опыт!
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Kdsfofwe21
2-й класс

ID: 402218

# 31

= общий = | 20.05.2019, 16:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

Вы с Константином больше там написали, что аж Я просто не могу взять чужой труд :). так что уж Вы пишите ответ, а Я так, для поддержки штанов тут :). Меня самого надо ещё учить и учить.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 32

= общий = | 20.05.2019, 17:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Kdsfofwe21:

Мы за все время столько поотвечали, что только будем рады, если ответите Вы. Правда-правда... smile
А учиться, уча других, - далеко не худший путь... Так что, предложение остается в силе, ответ с Вас. smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.17920 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.77 от 31.05.2019
Версия JS: 1.34 | Версия CSS: 3.35