Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsiyi.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
188.29 Кб
Скачать

X word ?

Y WORD ?

COOR ENDS

; сегмент данних

_DATA SEGMENT DWORD PUBLIC USE32 'DATA'

HANDL DWORD ?

HANDL1 DWORD ?

STR2 DB "Введить перший рядок: ",0

STR3 DB "Введить другий рядок: ",0

STR1 DB "Нова консоль",0

BUF DB 200 dup (?)

LENS DWORD ? ; кількість символів, що вводяться

CRD COOR <?>

_DATA ENDS

; сегмент кода

_TEXT SEGMENT DWORD PUBLIC USE32 'CODE'

START:

; кодування рядка

PUSH OFFSET STR1

PUSH OFFSET STR1

CALL CharToOemA@8

; кодування рядка

PUSH OFFSET STR2

PUSH OFFSET STR2

CALL CharToOemA@8

; кодування рядка

PUSH OFFSET STR3

PUSH OFFSET STR3

CALL CharToOemA@8

; створення консолі

; звільнення консолі

CALL FreeConsole@0

CALL AllocConsole@0

; отримати HANDL1 вводу

PUSH STD_INPUT_HANDLE

CALL GetStdHandle@4

MOV HANDL1, EAX

; отримати HANDL виводу

PUSH STD_OUTPUT_HANDLE

CALL GetStdHandle@4

MOV HANDL, EAX

; встановлення розмірів консолі

MOV CRD.X, 50

MOV CRD.Y, 50

PUSH CRD

PUSH EAX

CALL SetConsoleScreenBufferSize@8

; задання заголовку консолі

PUSH OFFSET STR1

CALL SetConsoleTitleA@4

; задати атрибути кольору видимого тексту

PUSH COL1

PUSH HANDL

CALL SetConsoleTextAttribute@8

; позиція курсора

MOV CRD.X,0

MOV CRD.Y,3

PUSH CRD

PUSH HANDL

CALL SetConsoleCursorPosition@8

; виведення рядка

PUSH OFFSET STR2

CALL LENSTR ; в EBX довжина рядка

PUSH 0

PUSH OFFSET LENS

PUSH EBX

PUSH OFFSET STR2

PUSH HANDL

CALL WriteConsoleA@20

; чекати виведення консолі

PUSH 0

PUSH OFFSET LENS

PUSH 200

PUSH OFFSET BUF

PUSH HANDL1

CALL ReadConsoleA@20

; виведення отриманої консолі

; задати атрибути кольору тексту, який буде виводитись

PUSH COL1

PUSH HANDL

CALL SetConsoleTextAttribute@8

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

PUSH 0

PUSH OFFSET LENS

PUSH [LENS] ; довжина рядка, що вводиться

PUSH OFFSET BUF

PUSH HANDL

CALL WriteConsoleA@20

; позиція курсора

MOV CRD.X,0

MOV CRD.Y,2

PUSH CRD

PUSH HANDL

CALL SetConsoleCursorPosition@8

; задати атрибути кольору видимого тексту

PUSH COL2

PUSH HANDL

CALL SetConsoleTextAttribute@8

; виведення рядка

PUSH OFFSET STR3

CALL LENSTR ; в EBX довжина рядка

PUSH 0

PUSH OFFSET LENS

PUSH EBX

PUSH OFFSET STR3

PUSH HANDL

CALL WriteConsoleA@20

; чекати виведення консолі

PUSH 0

PUSH OFFSET LENS

PUSH 200

PUSH OFFSET BUF

PUSH HANDL1

CALL ReadConsoleA@20

; виведення отриманої консолі

; задати атрибути кольору тексту, який буде виводитись

PUSH COL2

PUSH HANDL

CALL SetConsoleTextAttribute@8

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

PUSH 0

PUSH OFFSET LENS

PUSH [LENS] ; довжина рядка, що вводиться

PUSH OFFSET BUF

PUSH HANDL

CALL WriteConsoleA@20

; невелика затримка

MOV ECX,01FFFFFFFH

L1:

LOOP L1

; закрити консоль

;затримка

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]