Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2012, 15:20   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Аналог System('cls') в fasm

Добрый день. Столкнулся со следующей проблемой. Мне нужно в определенный момент очистить консоль. В c++ это делается следующим образом.
Код:
System('cls')
В asm под DOS
Код:
mov ax, 03
int 10h
В ОСx64 шестнадцати битные приложения не работают, следовательно, прерывания тоже. Как ни извращался, используя WinApi, не получается очистить консоль. Вот следующим образом
Код:
invoke System, 'cls'
не работает, т.к. fasm не знает этого System(регистр символов исключаем). Может какой-нибудь .inc ее содержит? В Win32ax.inc нет.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 30.04.2012, 15:52   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

27 раз вывести пустую строку пробовал?
rpy3uH вне форума Ответить с цитированием
Старый 30.04.2012, 16:24   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
27 раз вывести пустую строку пробовал?
А как же. Только курсор внизу находиться, а нужно, чтобы вверху. У меня будет как бы схема. В ней должны отображаться включенные и выключенные эл. приборы, например, лампочки. Т.е. по какому-нибудь событию все содержимое консоли стирается и перерисовывается заново. Только почему 27 раз? Обычно консоль 80 на 25, или что-то путаю. Можно, конечно, Scroll двигать, но это уже тяжеловато.
Есть вероятность того, что
Цитата:
invoke System,'cls'
существует?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 30.04.2012, 16:59   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

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

Цитата:
invoke System,'cls'
сам-то понял что сказал? нету конечно
rpy3uH вне форума Ответить с цитированием
Старый 30.04.2012, 17:21   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Код:
section '.data' data readable writeable
inputa db 'Input a ',0
empty_str db 80 dup (' '),13,10

InputHandle dd 0
OutputHandle dd 0

Writed dd 0
Readed dd 0

MAX_VALUE_LENGTH equ 30

message  db 'govno', 13, 10
a_str  db MAX_VALUE_LENGTH dup (0)

section '.code' code executable readable writeable

start:

    invoke GetStdHandle, STD_INPUT_HANDLE
    ;invoke CreateFile, cons, GENERIC_READ, 0,0, OPEN_EXISTING,0,0
    mov [InputHandle], eax

    invoke GetStdHandle, STD_OUTPUT_HANDLE
    ;invoke CreateFile, cons, GENERIC_WRITE, 0,0, OPEN_EXISTING,0,0
    mov [OutputHandle], eax

    invoke WriteConsole, [OutputHandle], message, 7,Writed,0
    invoke WriteConsole, [OutputHandle], message, 7,Writed,0
    invoke WriteConsole, [OutputHandle], message, 7,Writed,0
    invoke WriteConsole, [OutputHandle], message, 7,Writed,0
    invoke WriteConsole, [OutputHandle], message, 7,Writed,0
    invoke WriteConsole, [OutputHandle], message, 7,Writed,0
    invoke WriteConsole, [OutputHandle], inputa, 8,Writed,0
    invoke ReadConsole, [InputHandle], a_str, MAX_VALUE_LENGTH, Readed,0

    invoke SetConsoleCursorPosition, [OutputHandle], 0 ;ставим курсор в начало
    mov ebx, 24
   @@:                                                                ;24 пустные строки
    invoke WriteConsole, [OutputHandle], empty_str, 80, Writed,0
    dec ebx
    jnz @b

    invoke SetConsoleCursorPosition, [OutputHandle], 0 ;ставим курсор в начало

    invoke WriteConsole, [OutputHandle], inputa, 8,Writed,0
    invoke ReadConsole, [InputHandle], a_str, MAX_VALUE_LENGTH, Readed,0
    invoke WriteConsole, [OutputHandle], message, 7, Writed,0
    invoke ReadConsole, [InputHandle], a_str, 1,0,0


    invoke ExitProcess, 0
"спасибо" не надо
rpy3uH вне форума Ответить с цитированием
Старый 30.04.2012, 17:40   #6
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
"спасибо" не надо
Надо и еще как.
Цитата:
попробуй SetConsoleCursorPosition
Спасибо огромное. Вот это то, что мне нужно.
Цитата:
сам-то понял что сказал? нету конечно
Ну а почему бы и нет? Реализация на WinApi была бы как нельзя к стати. Что вообще в языках высокого уровня представляет из себя этот system()? Мне всегда казалось, что это WinAPI функция.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 30.04.2012, 17:52   #7
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Есть ещё:
FillConsoleOutputCharacter
можно за один вызов очистить весь буфер экрана консоли одним символом.
Кстати, буфер экрана не всегда равен размеру окна консоли и уж совсем не обязан быть равен 80*25.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 30.04.2012, 20:38   #8
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

FreeConsole, и следом- AllocConsole.
vadimych вне форума Ответить с цитированием
Старый 30.04.2012, 21:41   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
сам-то понял что сказал? нету конечно
Че это так категорично?
Вотъ:
Код:
format PE console
entry start
 
include 'D:\fasmw16726\INCLUDE\win32a.inc'
 
section '.data' data readable writeable
message db 'Привет мир',0
member dw ?
r db 'Russian',0
cls db 'cls',0
section '.code' code readable executable

start:

 cinvoke setlocale,1,r

; CINVOKE макрос в составе FASM.
; Позволяет вызывать CDECL-функции. 
  cinvoke system,cls
  cinvoke printf,message
  cinvoke getch
; INVOKE аналогичный макрос для STDCALL-функций. 
  invoke ExitProcess,0
section '.idata' import data readable
library kernel,'kernel32.dll',\
        msvcrt,'msvcrt.dll'
 
import kernel,\
       ExitProcess,'ExitProcess'
 
import msvcrt,\
       setlocale,'setlocale',\
       system,'system',\
       printf,'printf',\
       getch,'_getch'
Подумаешь зависимость от СИсястых библиотек... Когда это их цурались?
Цитата:
Мне всегда казалось, что это WinAPI функция.
Не совсем ВИН
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.05.2012, 01:05   #10
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Цитата:
Сообщение от vadimych Посмотреть сообщение
FreeConsole, и следом- AllocConsole.
изыди, сотона!
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка Ambiguity between '_fastcall System::operator +(int,const System::Variant &)' and '_fastcall System::opera Jawner C++ Builder 1 12.04.2012 09:58
Ошибка Unresolved external 'AVIA::AVIA(int, System::AnsiString, System::AnsiString, System::AnsiString, int) mexmexmex C++ Builder 3 27.12.2011 13:31
Чем отличаеться fasm от fasm editor&? TotKtoNado Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 07.11.2011 17:00
CLX Delphi аналог shellexecute, system(cmd) randomav Общие вопросы Delphi 0 23.05.2011 09:16
аналог system() NiCola999 Общие вопросы C/C++ 1 09.04.2010 18:31