- •Idi_application equ 32512
- •Idc_cross equ 32515
- •X word ?
- •Invoke Sleep, 5000
- •X word ?
- •Idi_application equ 32512
- •Idc_cross equ 32515
- •X dword ?
- •Xm dword ?
- •Xp dword ?
- •Idi_icon1 icon "calculator.Ico"
- •Idi_bit1 bitmap "picture1.Bmp"
- •Idi_bit2 bitmap "picture2.Bmp"
- •Idi_icon1 icon "calculator.Ico"
- •Xm dword ?
- •Xp dword ?
- •Idi_icon1 icon "calculator.Ico"
- •Vk_f5, 4, virtkey, alt
- •Xm dword ?
- •Xp dword ?
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
; закрити консоль
;затримка
