С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/41: Рейтинг темы: голосов - 41, средняя оценка - 4.63
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

Ввод числа с клавиатуры, сравнение его с константой и вывод соответствующей строки

17.08.2018, 18:25. Показов 9580. Ответов 81
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вобщем ребята те же грабли.

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


Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
.bss
num:  .space 4
.data
      stroka:
                .ascii " те же грабли \n"
                 .set len, . -stroca
.text 
         .global _start
_start:
          mov $3, %rax
          mov $0, %rbx
          mov $num, %rcx
          mov $4, %rdx
           int $0x80
 
          cmp '8',  (num)
          jg    to
 
          jmp stop
 
         to:
          mov $4, %rax
          mov $1, %rbx
          mov $stroka, %rcx
          mov $len, %rdx
          int $0x80
          jmp stop
 
          stop:
          mov $1, %rax
          int $0x80
не могу разобраться cmp. как правильно написать, операнды, то ли в скобках, то ли в кавычках. то ли без


подскажите
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.08.2018, 18:25
Ответы с готовыми решениями:

Осуществить с помощью ассемблера ввод знакового числа с клавиатуры и его вывод на экран
Осуществить с помощью ассемблера ввод знакового числа с клавиатуры и его вывод на экран в заданных формах представления. Для ввода и вывода...

Как организовать ввод конечного интервала массива с клавиатуры, а не константой?
Здравствуйте, форумчане. Подскажите ламеру, как организовать ввод конечного интервала массива с клавиатуры, а не константой? У меня...

Ввод с клавиатуры строки символов, вывод строки в обратном порядке на принтер
Составить программу для ввода с клавиатуры строки символов "Периферийные устройства ЭВМ" в окно ввода. Записать строку в буфер buf и...

81
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
17.08.2018, 22:46  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от mizannny Посмотреть сообщение
Кто украл слово "пожалуйста"?
пожалуйста

ну и спасибо за одно

Добавлено через 7 минут
вот в nasm у меня работает та программа, что я тут написал.
но я не понимаю почему она не работает в gas .
именно по этому я задал вопрос на форуме. думал что если смогу понять почему она не работает тут, то узнаю в чем разница между nasm и gas

суть опять куда -то убежала, вернее потерялась строчках кода.
ждал что скажут конкретно в чем проблема. не сказали, а сам не понял. вернее сказали так, что я не понял

ну ладно. будут еще темы значит по этому поводу позже , когда это мое непонимание, мне вылезит боком и припрет опять спрашивать
0
Заблокирован
17.08.2018, 23:49
Цитата Сообщение от pcmax Посмотреть сообщение
вот в nasm у меня работает та программа, что я тут написал.
Ты что-то путаешь. Код, что ты тут написал, невалидный для nasm. Покажи валидный код для nasm, который ты пытаешься переделать.
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 00:41  [ТС]
Вы не поняли. когда я пишу для nasm_e , чтобы было выполненно тоже , то есть было сравнение и или





Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
section .bss
 
     elb resb 10
section .data
       file db "date", 0
       file1 db "ls", 0
section .text
       global _start
_start:
 
        mov eax, 3
        mov ebx, 0
        mov ecx, elb
        mov edx, 10
        int 0x80
       
        
         mov ebp, 100
         cmp ebp, [elb]
         
         je jamp
         
         jmp tojamp
 
jamp:
          mov eax, 11
          mov ebx, file
          xor ecx, ecx
          xor edx, edx
          int 0x80
          jmp stop
 
tojamp:
           mov eax, 11
           mov ebx, file1
           xor ecx, ecx
           xor edx, edx
           int 0x80
           jmp stop
 
stop:
           mov eax, 1
            int 0x80
0
Заблокирован
18.08.2018, 01:05
То, что я вижу выше, это 32-битное приложение. И оно работает с int 0x80. Ты же начал тему с 64-битного. Там int 0x80 использовать нельзя. Как работать с сисколами - в моем сорце можешь посмотреть. И такая строчка:
cmp '8', (num)
тоже неправильная. Надо:
Assembler
1
cmpb $'8', num
Цитата Сообщение от pcmax Посмотреть сообщение
Вы не поняли. когда я пишу для nasm_e , чтобы было выполненно тоже , то есть было сравнение и или
И сейчас я тоже не понял. Я прочитал какой-то несвязный набор слов, который не получается распарсить.
0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 01:19  [ТС]
Цитата Сообщение от mizannny Посмотреть сообщение
И сейчас я тоже не понял. Я прочитал какой-то несвязный набор слов, который не получается распарсить

а я виноватый что ли? Вы сами написали на nasm пример. вернее перевели в него. я лично его даже не упомянал.

Вы затронули, а потом все на меня.

теперь уже объясните пожалуйста что к чему.
почему nasm брыкается и не хочет выводить это

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
section .bss
 
     num resb 10
 
section .data
            global _start
_start:
            mov eax, 3
            mov ebx, 0
            mov ecx, $num-что будет в num?   что будет лежать в num?
            mov edx, 2
            int 80h
 
          mov ebp, $10
          cmp ebp, num  -или [num] ?  объясните пожалуйста что должно быть и почему
          je   to
 
          jmp stop
 
to:       mov eax, 4
           mov ebx, 1
           mov ecx, num
           mov edx, 2
           int 80h
           jmp stop
 
stop:
            mov eax, 1
            int 80h
сотый раз код уже этот мусолим, и так я ничего не понял.

Добавлено через 1 минуту
еще же написали, что нет разницы nasm asm gas
в итоге выдали, что я зачем то затупил и зачем-то написал код на nasm/
0
Заблокирован
18.08.2018, 01:27
Цитата Сообщение от pcmax Посмотреть сообщение
а я виноватый что ли?
В том, что я не понимаю, что ты пытаешься сказать? ХЗ.
Цитата Сообщение от pcmax Посмотреть сообщение
Вы сами написали на nasm пример. вернее перевели в него. я лично его даже не упомянал.
Это тут вообще при чем?
Цитата Сообщение от pcmax Посмотреть сообщение
Вы затронули, а потом все на меня.
Что я затронул? Что на тебя? Ты здоров?
Добавлено через 1 минуту
Цитата Сообщение от pcmax Посмотреть сообщение
mov ecx, $num-что будет в num? что будет лежать в num?
Ничего не изменится, будет все то же самое лежать. Только адрес области памяти, на которую ссылается num, пойдет в ecx.

Добавлено через 2 минуты
Цитата Сообщение от pcmax Посмотреть сообщение
еще же написали, что нет разницы nasm asm gas
А вот теперь цитату, где я такое писал.

Добавлено через 1 минуту
Цитата Сообщение от pcmax Посмотреть сообщение
в итоге выдали, что я зачем то затупил и зачем-то написал код на nasm/
Какая разница, на каком ассемблере код? Я уже писал, что он переделывается на раз-два.

Добавлено через 2 минуты
Цитата Сообщение от pcmax Посмотреть сообщение
cmp ebp, num -или [num] ? объясните пожалуйста что должно быть и почему
Должно быть то, что ты хочешь сделать. Если ты хочешь значение из ebp сравнить со значением из области памяти, на которую ссылается num, то просто num. Почему? Потому что такой синтаксис memory direct addressing в gas. num в gas это [num] в nasm. То есть, тут даже думать не надо, достаточно знать как транслировать из одного в другой и делается все за пару минут.
0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 01:41  [ТС]
Ассемблер он и в Африке ассемблер, конветнуть между nasm, as, yasm и т. п.
Цитата Сообщение от mizannny Посмотреть сообщение
То, что я вижу выше, это 32-битное приложение
Цитата Сообщение от mizannny Посмотреть сообщение
Ты же начал тему с 64-битного.

ну вот из всего этого я понял так.

Добавлено через 4 минуты
Цитата Сообщение от mizannny Посмотреть сообщение
Только адрес области памяти, на которую ссылается num, пойдет в ecx.

про адрес это интересно.
Цитата Сообщение от mizannny Посмотреть сообщение
Должно быть то, что ты хочешь сделать. Если ты хочешь значение из ebp сравнить со значением из области памяти, на которую ссылается num, то просто num. Почему? Потому что такой синтаксис memory direct addressing в gas. num в gas это [num] в nasm. То есть, тут даже думать не надо, достаточно знать как транслировать из одного в другой и делается все за пару минут.
что я должен был указать, когда сравнивал
Assembler
1
cmp  ebp, num в коде выше?
0
Заблокирован
18.08.2018, 01:45
Цитата Сообщение от pcmax Посмотреть сообщение
Ассемблер он и в Африке ассемблер, конветнуть между nasm, as, yasm и т. п.
Так и есть.
Цитата Сообщение от pcmax Посмотреть сообщение
что я должен был указать, когда сравнивал
cmp ebp, num в коде выше?
Указать где и что? Что с чем сравнить хочешь? И в каком ассемблере?
0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 01:50  [ТС]
я к тому что начал тему с gas. потому Вы написали на nasm кусок приличного кода. я что увидел на то и перешел. мне с моими школьными знаниями что больше было знакомо, а это 32бит nasm . на нем и написал что знал в подтверждение того, что это работало. ведь вы сказали, ч
Цитата Сообщение от mizannny Посмотреть сообщение
Ты что-то путаешь. Код, что ты тут написал, невалидный для nasm. Покажи валидный код для nasm, который ты пытаешься переделать.
ну вот я и написал.


вобщем сори. что-то какое-то не понимание друг друга.
0
Заблокирован
18.08.2018, 01:52
Цитата Сообщение от pcmax Посмотреть сообщение
я что увидел на то и перешел.
Я писал не для того, чтобы ты переходил на него, а чтобы мог подсмотреть, как можно сделать и, в случае чего, взять какой-то кусок кода себе.
0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 01:53  [ТС]
Цитата Сообщение от pcmax Посмотреть сообщение
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
section .bss
num resb 10
section .data
            global _start
_start:
            mov eax, 3
            mov ebx, 0
            mov ecx, $num-что будет в num?  что будет лежать в num?
            mov edx, 2
            int 80h
mov ebp, $10
            cmp ebp, num -или [num] ? объясните пожалуйста что должно быть и почему
            je    to
jmp stop
to:        mov eax, 4
            mov ebx, 1
            mov ecx, num
            mov edx, 2
            int 80h
            jmp stop
stop:
            mov eax, 1
            int 80h
вот тут . как я должен написать, что бы nasm сравнил значения введенных мною чисел с клавы?
0
Заблокирован
18.08.2018, 01:55
Цитата Сообщение от pcmax Посмотреть сообщение
что бы nasm сравнил значения введенных мною чисел с клавы?
Опять 25... Нет никаких чисел с клавы. Не существует их. С клавы только символы есть, которые сначала нужно в число перевести. Пример перевода строки в число я написал - это функция convert_str_to_num. Что здесь не понятно?
0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 02:04  [ТС]
Assembler
1
cmp ebp ,num

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

Добавлено через 4 минуты
зачем писать тонны кода, в которых потеряется что-то. вот как сейчас. я просто не заметел в нем то что Вы хотели сказать. глаза разбежались , там и nasm и gas/ надо было еще добавить какой нибудь ассемблер или c++. ну так для полноты.


в двух строчках напишите в примере , как я должен был перевести строку в число и как укзать ее для cmp


вот и все.
0
Заблокирован
18.08.2018, 02:14
Цитата Сообщение от pcmax Посмотреть сообщение
надо мной наверное немного пошутили другие люди. и поэтому теперь в понимании Ассемблера у меня ничего не сходится ни спрочитанным из книг ни с тем, что я теперь слышу от Вас.
Потому что ты намешал в одном коде nasm и gas. А потом их же намешал, задавая вопрос.
При обращении к регистрам в gas'е нужно добавлять %. Для direct memory addressing ничего не нужно. Поэтому
Assembler
1
cmp %ebp, num
сравнить 4 байта из ebp с четырьмя байтами в памяти. А в nasm то же самое будет:
Assembler
1
cmp dword [num], ebp
Добавлено через 1 минуту
Цитата Сообщение от pcmax Посмотреть сообщение
в двух строчках
В двух строчкам строчках в число не переводится.

Добавлено через 1 минуту
Цитата Сообщение от pcmax Посмотреть сообщение
как я должен был перевести строку в число и как укзать ее для cmp
Вот так перевести в число:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
movsxd rsi, esi
lea rsi, [rdi + rsi * 1 - 2] ; position of last digit, skipping newline character
cmp rdi, rsi
ja  .end
sub rdi, 1
mov edx, 1
xor eax, eax
 
.str_iteration: movsx ecx, byte [rsi]
sub  rsi, 1
sub  ecx, '0'
imul ecx, edx
 
lea edx, [rdx + rdx * 4]
add edx, edx
 
add eax, ecx
cmp rsi, rdi
jne .str_iteration
ret
.end: xor eax,eax
ret
А вот тако потом сравнить:
Assembler
1
cmp rax, 100
Добавлено через 4 минуты
на at&t функция будет выглядеть примерно так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
movslq %esi,%rsi
lea    -0x2(%rdi,%rsi,1),%rsi
cmp    %rsi,%rdi
ja     end
sub    $0x1,%rdi
mov    $0x1,%edx
xor    %eax,%eax
iteration:
movsbl (%rsi),%ecx
sub    $0x1,%rsi
sub    $0x30,%ecx
imul   %edx,%ecx
lea    (%rdx,%rdx,4),%edx
add    %edx,%edx
add    %ecx,%eax
cmp    %rdi,%rsi
jne    iteration
retq
end:
xor    %eax,%eax
retq
в rdi адрес буфера, в rsi кол-во символов, в eax, соответственно, результат.
2
328 / 81 / 2
Регистрация: 21.07.2018
Сообщений: 112
Записей в блоге: 1
18.08.2018, 09:20
Цитата Сообщение от pcmax Посмотреть сообщение
не могу разобраться cmp. как правильно написать, операнды, то ли в скобках, то ли в кавычках. то ли без
$ перед выражением показывает as, что когда код заработает, операндом должно быть само значение выражения (константа), а не то число, которое окажется в памяти по адресу, заданному выражением(переменная).
Вы уже поняли, что иногда нужно так, а иногда - так.

с 32битной константой
Bash
1
echo 'begin: cmp $((begin-end)*2), %edi; end: ' | as ; objdump -d
Code
1
2
3
4
5
6
7
a.out:     file format elf64-x86-64
 
 
Disassembly of section .text:
 
0000000000000000 <begin>:
   0:   81 ff f4 ff ff ff       cmp    $0xfffffff4,%edi
с 32битной переменной по (64битному) адресу
Bash
1
echo 'begin: cmp ((begin-end)*2), %edi; end: ' | as ; objdump -d
Code
1
2
3
4
5
a.out:     file format elf64-x86-64
Disassembly of section .text:
 
0000000000000000 <begin>:
   0:   3b 3c 25 f2 ff ff ff    cmp    0xfffffffffffffff2,%edi
Разные коды и длина инструкций.

А какие инструкции получатся из этих 2 команд?
Assembler
1
2
    cmp $('@'), %edi
    cmp ('@'), %edi
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 13:52  [ТС]
Цитата Сообщение от ОС Посмотреть сообщение
а не то число, которое окажется в памяти по адресу, заданному выражением(переменная).
Цитата Сообщение от ОС Посмотреть сообщение
Вы уже поняли,
я уже понял со всех тем, что нет же адресов, в переменных не могут они хранится, как и в регистрах. есть только числа, которые могут соответствовать каким-то командам.

у нас же была эта тема.

Добавлено через 2 минуты
но если вдруг представить, что они есть, то $num -где num это метка, то как раз должно бы быть так что будет использован именно адрес .

но это мой бред.

Добавлено через 10 минут
еще раз пожалуйста

Assembler
1
mov ecx, 10
-тут сейчас находится число 10?

Assembler
1
mov ebx, '10'
-тут сейчас находится код из ascii?




$ecx==10
$ebp==код из ascii

[ecx]- содержимое ecx будет использованно, как адрес, по которому в оперативной памяти будет взято значение.

[ebp]-код из ascii который хранился в этом регистре будет использован как адрес в оперативной памяти.
поправте пожалуйста уже меня. думаю, что это давно пора сделать.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
18.08.2018, 13:58
mov ebx, '10'
. . .
mov ebx, '10' -тут сейчас находится код из ascii?
. . .
[ebp]-код из ascii который хранился в этом регистре будет использован как адрес в оперативной памяти.
pcmax,
сколько можно путать два разных регистр? EBP https://www.cyberforum.ru/cgi-bin/latex.cgi?\ne EBX
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 14:19  [ТС]
я просто взял его как контейнер. я понимаю что они отличаются


ну просто что-то стукнуло в голову и в качестве примера взял его




понимаю, что с клавиатуры я никогда не смогу ввести число. это всегда будет строка каких то символов.... так?
поэтому введенное значение нельзя будет использовать в cmp . так ?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
18.08.2018, 17:00
Цитата Сообщение от pcmax Посмотреть сообщение
введенное значение нельзя будет использовать в cmp
pcmax,
почему нельзя? Можно сравнивать содержимое 8-разрядного регистра (AL, AH, BL, BH, CL, CH, DL, DH) с ASCII-символом, содержимое 16-разрядного регистра (AX, BX, CX, DX, SI, DI, SP, BP) с двумя ASCII-символами, а содержимое 32-разрядного регистра (EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP) с четырьмя ASCII-символами... Для сравнения двух ASCII-строк есть команда CMPS, для поиска символа в строке команда SCASB. Но ведь учебники это не твоё. Завязывай с ассемблером...
2
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6206 / 2441 / 402
Регистрация: 29.07.2014
Сообщений: 3,174
Записей в блоге: 4
18.08.2018, 17:21
Цитата Сообщение от Mikl___ Посмотреть сообщение
Но ведь учебники это не твоё. Завязывай с ассемблером...
в точку попал!
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2018, 17:21
Помогаю со студенческими работами здесь

Ввод с клавиатуры и вывод на экран символа и строки
1. Напишите программу на языке ассемблера, которая: - вводит с клавиатуры произвольный символ; - выводит введен символ на экран; -...

TASM. Ввод числа с клавиатуры и вывод на экран.
Помогите с написание программы. Я ввожу число с клавиатуры и потом его же мне нужно вывести на консоль. Как это сделать? Напишите...

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

Ввод числа, решение его по формуле, вывод получившегося числа.
Здравствуйте! Только недавно начал изучать Delphi. Не могу понять что за ошибку мне выдает. Помогите пожалуйста. Нужна программа где я...

Ввод текстовой строки с клавиатуры и отображение его в главном окне приложения
Добрые люди кто знает Win32Api помогите c задачей.Буду очень признателен. Программа должна обеспечить: - ввод текстовой строки с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru