-Рубрики

 -Видео

Приветствие
Смотрели: 0 (0)
Хочу сказать
Смотрели: 0 (0)
Моя линия жизни
Смотрели: 350 (0)
Это я
Смотрели: 200 (1)

 -Цитатник

Блокнот ( Notepad): полезные функции и другие программы - (0)

Блокнот ( Notepad): полезные функции Блокнот (англ. Notepad) — простой текстов...

Ответы на вопросы - (0)

1) нигде 2) blog.ru знает, наверное 3) нельзя 4) нельзя Здесь находятся вопросы

О ЛЮБВИ ... - (1)

О ЛЮБВИ ... О совсем другой любви знаете ли вы? О любви, в которой чудо просыпается внутри,...

Теги в оформлении постов в блоге - (0)

ВСЕ о тегах и оформлении постов Элементарные формы оформления   ...

Help по ЛиРу - (1)

советы по ЛиРу   Что делать, если забыли пароль? Общие вопросы Что та...

 -Фотоальбом

Посмотреть все фотографии серии 2015
2015
09:46 14.04.2015
Фотографий: 5
Посмотреть все фотографии серии 2014
2014
20:36 22.08.2014
Фотографий: 7
Посмотреть все фотографии серии 2013
2013
18:05 26.08.2013
Фотографий: 8

 -неизвестно

 -Поиск по дневнику

Поиск сообщений в Aleksey_Malysh

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 26.05.2010
Записей: 4842
Комментариев: 96
Написано: 5586

Комментарии (0)

Распечатывает содержимое экрана на принтер любой марки

Дневник

Воскресенье, 03 Февраля 2013 г. 14:00 + в цитатник

 

Алексей Александрович Малыш

Aleksey_Malysh

 

 

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

 

 

 

;Входные параметры

;print.exe [a1] [a2]

;a2 - номер шрифта 1,2,...  font1.fnt,font2.fnt

;a1 - номер качества печати 1,2,...

;По умолчанию a2=font0.fnt  a1=1

;a3

                JUMPS

                .MODEL SMALL

                .STACK 100H

                .DATA

BUF             DB 512 DUP(?)

INIT            DB 1BH,33H,18H

RESET           DB 1BH,40H,127

CR              DB 0D,0AH

TWO             DB 0DH

AB              DB 0

ZET             DB 1

SMS             DB 0FFH

HAND            DW 0

HANDV           DW 0

MAXLEN          DW 106

LEN             DW 0

ADRS            DW 0

FILE            DB 'OTCH.TXT',0

FONT            DB 'FONT'

NF              DB 30H,'.FNT',0

OUTF            DB 'OTCH.PRN',0

HAND1           DW 0

ADR             DW 0

ADRN            DW 0

SK              DW 0

FL              DW 0

STF             DB 0

HD              DB 1BH,4CH

HDK             DW 0

GRAPH           DB 2000 DUP(?)

FNT             DB 5

RW              DW 0

SN              DW 0

TAB             DB 0,0,0,0,0

                DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

                DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

                DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

                DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,0 ;СИМВОЛЫ ОТ 0 ДО 32

                DB   0, 47, 47,  0,  0,  0,  6,  0,  6,  0, 80,124, 80,124,  0,  8, 84,254, 84,  0,  0,102, 24,102,  0,102,154,102,160,  0,  0, 10,  6,  0,  0,  0, 60, 66,  0,0

                DB   0, 66, 60,  0,  0,198, 56, 56,198,  0, 24,126,126, 24,  0,  0,160, 96,  0,  0, 8, 8, 8, 8,  8,  0, 96, 96,  0,  0,  0, 96, 24,  6,  0, 60,114, 78, 60,0  ;?

                DB   8, 68,126, 64,  0,100, 82, 82, 76,  0, 66, 74, 86, 34,  0, 28, 82,120, 80,  0, 46, 74, 74, 50,  0, 60, 74, 74, 48,  0, 98, 18, 10,  6,  0, 52, 74, 74, 52,0

                DB  12, 82, 82, 60,  0,  0,108,108,  0,  0,  0,172,108,  0,  0, 16, 56,108, 68,  0, 40, 40, 40, 40,  0, 68,108, 56, 16,  0,  4,  2, 82, 14,  0,126,153,165, 62,0

                DB 120, 20, 20,120,  0,126, 74, 74, 52,  0, 60, 66, 66, 38,  0, 66,126, 66, 60,  0, 66,126, 74, 74,  0, 66,126, 74, 74,  0, 60, 66, 82, 52,  0,126,  8,  8,126,0

                DB   0, 66,126, 66,  0, 98, 66, 62,  2,  0,126,  8, 20, 66,  0,126, 64, 64, 96,  0,126,  4,  4,126,  0,126,  8, 16,126,  0, 60, 66, 66, 60,  0,126, 18, 18, 12,0

                DB  60, 66, 50, 92,  0,126, 18, 50, 76,  0, 36, 74, 74, 48,  0,  2,  2,126,  2,  2, 62, 64, 64, 62,  0,  2, 60,192, 60,  2,  2,252, 48,252,  2,  0, 54,  8, 54,0

                DB   2,  4,248,  4,  2, 98, 82, 74, 70,  0,  0,126, 66, 66,  0,  2, 12, 48, 64,  0,  0, 66, 66,126,  0,  8,  4,  2,  4,  8,128,128,128,128,128,  0,  2,  4,  0,0

                DB 116, 84, 56, 64,  0,126, 72, 72, 48,  0, 56, 68, 68, 44,  0, 48, 72, 72,126,  0, 56, 84, 84, 24,  0, 36,124, 74,  2,  0, 24,164,164,120,  0, 62,  8,  8,112,0

                DB   0, 72,122, 64,  0,192,136,122,  8,  0,126, 16,104, 72,  0,  0, 66,126, 64,  0,124,  8,120,  8,120,124,  8,  4,120,  0, 56, 68, 68, 56,  0,252, 36, 36, 24,0

                DB  24, 36, 36,252,  0,124,  8,  4,  8,  0,  8, 84, 84, 32,  0,  8, 62, 72, 64,  0, 60, 64, 64, 60,  0,  8, 56, 64, 56,  8,  8,112, 32,112,  8, 68, 40, 16, 40,68 ;СИМВОЛЫ ОТ ! ДО x

                DB 132,152, 96, 56,  4,100, 84, 76, 68,  0,  0, 16,124,130,  0,  0,  0,238,  0,  0,  0,130,124, 16,  0,  8,  4,  8, 16,  8, 64, 96, 80, 96, 64,124, 18, 18,124,0

                DB 126, 74, 74, 48,  0,126, 74, 74, 52,  0,126,  2,  2,  6,  0,192,124, 66,126,192,126, 74, 74, 66,  0, 66, 20,126, 20, 66, 66, 74, 74, 52,  0,126, 48, 12,126,0

                DB 126, 49, 13,126,  0,126,  8, 20, 98,  0, 64,120,  4,126,  0,  0,126, 12,126,  0,126,  8,  8,126,  0, 60, 66, 66, 60,  0,126,  2,  2,126,  0,126, 18, 18, 12,0

                DB  60, 66, 66, 36,  0,  2,  2,126,  2,  2, 78, 80, 48, 14,  0,  0,124,254,124,  0,102, 24, 24,102,  0,126, 64,126,192,  0, 14, 16, 16,126,  0,126, 64,126, 64,126

                DB 126, 64,126, 64,254,  6,126, 72, 48,  0,126,120,  0,126,  0,126, 72, 72, 48,  0, 36, 66, 74, 60,  0,126, 16, 60, 66, 60, 76, 82, 50,126,  0, 36, 84, 56, 64,0

                DB  52, 74, 74, 49,  0,124, 84, 84, 40,  0,124,  4,  4, 12,  0,192,120, 68,124,192, 56, 84, 84, 24,  0, 68, 40,124, 40, 68, 40, 68, 84, 40,  0,124, 48, 12,124,0

                DB 124, 49, 13,124,  0,124, 16, 40, 68,  0, 96, 24,  4,124,  0,  0,124, 24,124,  0,124, 16, 16,124,  0, 56, 68, 68, 56,  0,124,  4,  4,124,  0, 85,170, 85,170,0

                DB  85, 42, 85, 42,  0, 85,  0, 85,  0, 85,  0,  0,255,  0,  0,  8,  8,255,  0,  0, 20, 20,255,  0,  0,  8,255,  0,255,  0,  8,248,  8,248,  0, 20, 20,255,  0,0

                DB  20,247,  0,255,  0,  0,255,  0,255,  0, 20,244,  4,252,  0, 20, 23, 16, 31,  0,  8, 15,  8, 15,  0, 20, 20, 31,  0,  0,  8,  8,248,  0,  0,  0,  0, 15,  8,8

                DB   8,  8, 15,  8,  8,  8,  8,248,  8,  8,  0,  0,255,  8,  8,  8,  8,  8,  8,  8,  8,  8,255,  8,  8,  0,  0,255, 20, 20,  0,255,  0,255,  8,  0, 31, 16, 23,20

                DB   0,252,  4,244, 20, 20, 23, 16, 23, 20, 20,244,  4,244, 20,  0,255,  0,247, 20, 20, 20, 20, 20, 20, 20,247,  0,247, 20, 20, 20, 23, 20, 20,  8, 15,  8, 15,8

                DB  20, 20,244, 20, 20,  8,248,  8,248,  8,  0, 15,  8, 15,  0,  0,  0, 31, 20, 20,  0,  0,252, 20, 20,  0,248,  8,248,  8,  8,255,  0,255,  8, 20, 20,247, 20,20

                DB   8,  8, 15,  0,  0,  0,  0,248,  8,  8,255,255,255,255,255,240,240,240,240,240,255,255,255,  0,  0,  0,  0,255,255,255, 15, 15, 15, 15, 15,252, 36, 36, 24,0

                DB  56, 68, 68, 40,  0,  4,  4,124,  4,  4,156,160,160,124,  0,  0,120,252,120,  0, 68, 40, 16, 40, 68,124, 64,124,192,  0, 12, 16, 16,124,  0,124, 64,124, 64,124

                DB 124, 64,124, 64,252, 12,124, 80, 32,  0,124,112,  0,124,  0,124,112,112, 32,  0, 40, 68, 84, 56,  0,124, 16, 56, 68, 56, 72,116, 20,124,  0, 42, 42, 42, 42,0

                DB  68, 68, 95, 68, 68, 81, 81, 74, 74, 68, 68, 74, 74, 81, 81,  0, 254,  1, 6,  0,  0, 96,128,127,  0, 16, 84, 84, 16,  0, 72, 36, 72, 36, 72, 12, 18, 18, 12,0

                DB   0, 12, 12,  0,  0,  0, 24, 24,  0,  0, 96,128,255,  1,  1, 30,   4,  2, 30, 0, 18, 25, 21, 18,  0,  0, 60, 60, 60,  0,  0,  0,  0,  0,  0

                DB 8912 DUP(?)

BK              DB 0

SM              DB 32 DUP(?)

                .CODE

                .386

                ORG 0

Start:

                MOV AX,@DATA

                MOV DS,AX

                ;------------------

                MOV AH,62H

                INT 21H

                PUSH BX

                POP ES

                MOV BX,81H

                MOV AL,ES:[BX]

                CMP AL,0DH

                JZ STP

                MOV AL,ES:[BX+1]

                SUB AL,30H

                MOV DS:[ZET],AL

                MOV AL,ES:[BX+2]

                CMP AL,0DH

                JZ STP

                MOV AL,ES:[BX+3]

                MOV DS:[NF],AL

                MOV AL,ES:[BX+4]

                CMP AL,0DH

                MOV AL,ES:[BX+5]

                SUB AL,30H

                MOV DS:[AB],AL

STP:            ;------------------

                PUSH DS

                POP ES

                CALL LOAD_FONT

                CALL KVN

                MOV AL,DS:[STF]

                CMP AL,1

                JZ STPH

                CALL ROUTE

                CALL INV

STPH:           ;----------------

                ;SUB AX,AX

                ;MOV DS:[SMS],AX

                MOV AX,18

                MOV DS:[FL],AX

                MOV DX,OFFSET INIT

                MOV CX,3

                CALL PRNSTR

                ;---------------

                MOV AX,3D00H

                MOV DX, OFFSET FILE

                INT 21H

                MOV DS:[HAND],AX

                ;------------

                MOV AL,DS:[AB]

                CMP AL,0

                JZ SAT

                CALL LENTH

                CALL ROUTE

                CALL INV

 

STZ:            MOV AX,DS:[FL]

                CMP AX,0

                JZ PEND

                CALL ALB

                MOV AX,DS:[MAXLEN]

                INC AX

                MOV DS:[SK],AX

                MOV BX,OFFSET BUF

                MOV DS:[ADRN],BX

                MOV AL,DS:[STF]

                CMP AL,1

                JNZ SDF

                CALL ROUTE ;route1

                MOV SI,OFFSET GRAPH

                MOV AX,DS:[ADRN]

                MOV DS:[SK],AX

                MOV DS:[HDK],AX

                JMP SLDK

SAT:            ;------

                MOV BX,OFFSET BUF

                MOV DS:[ADRN],BX

                CALL STR_ONE

SDF:            MOV AX,OFFSET GRAPH

                MOV DI,AX

S1:             MOV BX,DS:[ADRN]

                MOV AL,DS:[BX]

                INC BX

                MOV DS:[ADRN],BX

                MOV CL,DS:[FNT]

                MUL CL

                MOV SI, OFFSET TAB

                ADD SI,AX

                MOV AX,DS:[SK]

                DEC AX

                JZ SEND

                MOV DS:[SK],AX

                MOV CL,DS:[FNT]

COPY:           MOVSB

                DEC CL

                JNZ COPY

                JMP S1

SEND:           ;---------

COPY1:          MOVSB

                DEC CL

                JNZ COPY1

                MOV AX,OFFSET GRAPH

                SUB DI,AX

                MOV AX,DI

                MOV DS:[HDK],AX

                MOV DS:[SK],AX

                ;------------------

SLDK:           MOV CL,DS:[ZET]

                SUB CH,CH

KT:             PUSH CX

                MOV DX,OFFSET HD

                MOV CX,DS:[SK]

                ADD CX,4

                CALL PRNSTR

                POP CX

                DEC CX

                JZ KTE

                PUSH CX

                MOV DX,OFFSET TWO

                MOV CX,1

                CALL PRNSTR

                POP CX

                JMP KT

KTE:            MOV DX,OFFSET CR

                MOV CX,2

                CALL PRNSTR

                MOV BL,DS:[AB]

                CMP BL,1

                JZ STZ

                MOV AX,DS:[FL]

                CMP AX,0

                JNZ SAT

PEND:           ;----------------

                MOV AH,3EH

                MOV BX,DS:[HAND]

                INT 21H

                ;------------------

                MOV DX, OFFSET RESET

                MOV CX,6

                CALL PRNSTR

                ;----------

                MOV AX,4C00H

                INT 21H

 

 

STR_ONE         PROC NEAR

                MOV AX, OFFSET BUF

                MOV DS:[ADR],AX

                ;---------------

                SUB AX,AX

                MOV DS:[SK],AX

FINDSTR:        MOV AH,3FH

                MOV BX,DS:[HAND]

                MOV DX,DS:[ADR]

                MOV CX,1

                INT 21H

                MOV DS:[FL],AX

                CMP AX,0

                JZ PREND   ;КОНЕЦ ФАЙЛА

                MOV BX,DS:[ADR]

                MOV AL,DS:[BX]

                CMP AL,0DH

                JZ STR1

NOBIT:          INC BX

                MOV DS:[ADR],BX

                MOV AX,DS:[SK]

                INC AX

                MOV DS:[SK],AX

                JMP FINDSTR

STR1:           INC BX

                MOV DS:[ADR],BX

                MOV DX,BX

                MOV AH,3FH

                MOV BX,DS:[HAND]

                MOV CX,1

                INT 21H

                MOV DS:[FL],AX

                CMP AX,0

                JZ PREND

                MOV BX,DS:[ADR]

                MOV AL,DS:[BX]

                CMP AL, 0AH

                JNZ NOBIT

                INC BX

                MOV DS:[ADR],BX

PREND:          RET

STR_ONE         ENDP

 

 

PRNSTR          PROC NEAR   ;CX,DX

                MOV BX,4

                MOV AH,40H

                INT 21H

                RET

PRNSTR          ENDP

 

KVN             PROC NEAR

                MOV AX,256

                MOV BL,DS:[FNT]

                SUB BH,BH

                MUL BX

                MOV CX,AX

                MOV SI, OFFSET TAB

NC:             MOV AL,DS:[SI]

                MOV BL,0

                MOV BH,8

SIM:            SAL AL,1

                RCR BL,1

                DEC BH

                JNZ SIM

                MOV DS:[SI],BL

                INC SI

                DEC CX

                JNZ NC

                RET

KVN             ENDP

 

LOAD_FONT       PROC NEAR

                MOV AX,3D00H

                MOV DX,OFFSET FONT

                INT 21H

                JNC FEX

                MOV AL,1

                MOV DS:[STF],AL

                RET

FEX:            MOV DS:[HAND1],AX

                MOV BX,AX

                MOV AH,3FH

                MOV CX,8192

                MOV DX,OFFSET TAB

                INT 21H

                SUB DX,DX

                MOV BX,256

                DIV BX

                MOV DS:[FNT],AL

                MOV AH,3EH

                MOV BX,DS:[HAND1]

                INT 21H

                CALL SHR0

                RET

LOAD_FONT       ENDP

 

ROUTE           PROC NEAR

                MOV CX,256

                MOV DI,OFFSET TAB

STRU:           PUSH CX

                MOV CL,DS:[FNT]

                ;DEC CL -ЕСЛИ ДОБАВИТЬ, ТО БУКВЫ ПОДЧЕРКНУТЫЕ

                ;---------

                MOV CH,32

                SUB AL,AL

                MOV BX,OFFSET SM

R2:             MOV DS:[BX],AL

                INC BX

                DEC CH

                JNZ R2

 

RS:             MOV BX,DI

                MOV AL,CL

                DEC AL

                XLAT

                MOV DL,AL

                MOV CH,1

                MOV BX,OFFSET SM

R3:             MOV AH,DL

                AND AH,CH

                CMP AH,0

                JNZ RE

                MOV DH,DS:[FNT]

                SUB DH,CL

                MOV AH,1

                PUSH CX

                MOV CL,DH

                RCL AH,CL

                POP CX

                MOV AL,DS:[BX]

                ADD AL,AH

                MOV DS:[BX],AL

RE:             INC BX

                RCL CH,1

                JNC R3

                DEC CL

                JNZ RS

                MOV SI, OFFSET SM

                MOV CL,DS:[FNT]

FC:             MOVSB

                DEC CL

                JNZ FC

                POP CX

                DEC CX

                JNZ STRU

                RET

ROUTE           ENDP

 

 

;ROUTE1          PROC NEAR

;                MOV SI,OFFSET BUF

;                MOV AX,OFFSET GRAPH

;                MOV DS:[ADRN],AX

;NAN:            ;--------------

;                MOV DI,OFFSET TAB

;                MOV AL,DS:[SI]

;                SUB AH,AH

;                MOV CL,DS:[FNT]

;                MUL CL

;                ADD DI,AX

;                ;DEC CL -ЕСЛИ ДОБАВИТЬ, ТО БУКВЫ ПОДЧЕРКНУТЫЕ

;                ;---------

;                MOV CH,32

;                SUB AL,AL

;                MOV BX,OFFSET SM

;ZR2:            MOV DS:[BX],AL

;                INC BX

;                DEC CH

;                JNZ ZR2

 

;ZRS:            MOV BX,DI

;                MOV AL,CL

;                DEC AL

;                XLAT

;                MOV DL,AL

;                MOV CH,1

;                MOV BX,OFFSET SM

;ZR3:            MOV AH,DL

;                AND AH,CH

;                CMP AH,0

;                JZ ZRE

;                MOV DH,DS:[FNT]

;                SUB DH,CL

;                MOV AH,1

;                PUSH CX

;                MOV CL,DH

;                RCL AH,CL

;                POP CX

;                MOV AL,DS:[BX]

;                ADD AL,AH

;                MOV DS:[BX],AL

;ZRE:            INC BX

;                RCL CH,1

;                JNC ZR3

;                DEC CL

;                JNZ ZRS

;                PUSH SI

;                MOV SI, OFFSET SM

;                MOV DI,DS:[ADRN]

;                MOV CL,4

;ZFC:            MOVSW

;                DEC CL

;                JNZ ZFC

;                POP SI

;                INC SI

;                DEC [SK]

;                JNZ NAN

;                RET

;ROUTE1          ENDP

 

 

INV             PROC NEAR

                MOV AX,256

                MOV BL,DS:[FNT]

                SUB BH,BH

                MUL BX

                MOV CX,AX

                MOV SI, OFFSET TAB

INVR:           MOV AL,DS:[SI]

                NOT AL

                MOV DS:[SI],AL

                INC SI

                DEC CX

                JNZ INVR

                RET

INV             ENDP

 

 

ALB             PROC NEAR

                MOV AX,DS:[LEN]

                MOV DS:[SK],AX

                MOV AX,DS:[MAXLEN]

                MOV BX,OFFSET BUF

                ADD BX,AX

                MOV DS:[ADR],BX

                MOV DS:[ADRS],BX

;STA:            ;-------------

                INC [SMS]

                MOV AX,DS:[LEN]

                DEC AX      ;?

                SUB DH,DH

                MOV DL,DS:[SMS]

                CMP AX,DX

                JNZ GHJ

                SUB AX,AX

                MOV DS:[FL],AX

                RET

GHJ:            MOV AX,4200H

                MOV BX,DS:[HAND]

                SUB CX,CX

                INT 21H

 

FINSTR:         MOV AH,3FH

                MOV BX,DS:[HAND]

                MOV DX,DS:[ADR]

                MOV CX,1

                INT 21H

                DEC [ADR]

                CMP AX,0

                JZ ENDALB

                MOV AX,4201H

                MOV BX,DS:[HAND]

                SUB CX,CX

                MOV DX,DS:[LEN]

                INT 21H

                JC ENDALB

                DEC [SK]

                JZ ENDF

                JMP FINSTR

ENDALB:         ;-----------------

                DEC [SK]

ENDA:           MOV AX,DS:[SK]

                CMP AX,0

                JZ ENDF

                MOV CX,AX

                MOV AL,20H

                MOV DI,DS:[ADR]

AL1:            MOV DS:[DI],AL

                DEC DI

                DEC CX

                JNZ AL1

ENDF:           MOV AX,10

                MOV DS:[FL],AX

                RET

ALB             ENDP

 

 

 

LENTH           PROC NEAR

                SUB AX,AX

                MOV DS:[LEN],AX

                MOV DS:[SN],AX

                MOV DS:[RW],5

LY1:            MOV AH,3FH

                MOV BX,DS:[HAND]

                MOV DX,OFFSET BK

                MOV CX,1

                INT 21H

LY2:            INC [LEN]

                CMP AX,0

                JZ MEND

                MOV AL,DS:[BK]

                CMP AL,0DH

                JNZ LY1

                MOV AH,3FH

                MOV BX,DS:[HAND]

                MOV DX,OFFSET BK

                MOV CX,1

                INT 21H

                CMP AX,0

                JZ MEND

                MOV AL,DS:[BK]

                CMP AL,0AH

                JNZ LY2

                MOV AX,DS:[LEN]

                MOV BX,DS:[SN]

                MOV DS:[LEN],0

                SUB BX,AX

                JNS DFG

                MOV DS:[SN],AX

DFG:            DEC [RW]

                JNZ LY1

MEND:           ;-------------

                MOV AX,4200H

                MOV BX,DS:[HAND]

                SUB CX,CX

                SUB DX,DX

                INT 21H

              &n

Рубрики:  Программирование

Метки:  

 Страницы: [1]