Vladimir
А есть чатик про руби?
Про Руби и Йо-йо?
Vitaliy ◀️TriΔng3l▶️
Anonymous
Ребят. Кому нибудь немного битков по дешевки надо? Через гаранта.
Yura
ребят
Yura
а int20 на 64 битной системе атк же работает?
Yura
в плане у меня досбокс залагивает когда прога уже должна завершиться
­
а int20 на 64 битной системе атк же работает?
Использовать прерывания дос на x86_64? Май гад!
Vladimir
а int20 на 64 битной системе атк же работает?
А реальном режиме все процессоры x86 работают одинаково.
Vladimir
И адресуют 1 мегабайт ОЗУ
Vladimir
И 64 битные команды там недоступны.
­
Да там вообще доступны только 486 или даже 386 команды...
Vladimir
Ну почему, SSE даже доступны. AVX вроде нет, и все, что полагается на xsave. ЕМНИП.
Yura
А реальном режиме все процессоры x86 работают одинаково.
я понимаю но факт есть факт - программы не заврешаются
Yura
mov ah,09 mov dx,111
Yura
int 21
Yura
int 20
Vladimir
Для int 0x20 CS должен на PSP указывать, вроде
Yura
укаывает
Yura
там тайни модель
Yura
ds=ss=cs
Vladimir
Ну смотри, может стек где попортил
Vladimir
И нах тебе дос, еще и в эмуляторе? Тренируйся на линуксе
Vladimir
Там тоже системные вызовы, только плоская 32 или 64 память, без ебли с сегментами
Yura
у нас лабы на 86 асме в досбоксе в debug.exe
Yura
так то я прошаренный и пишу на фасме
Vladimir
Извращенцы
Yura
И нах тебе дос, еще и в эмуляторе? Тренируйся на линуксе
я кстати не писал ни разу в линуксе на асме...
Vladimir
Проще в разы и интереснее
Vladimir
Можно заюзать все возможность поцов
Vladimir
А если уж писать под дос, то под расширитель
Aiwan \ (•◡•) / _bot
что значит под расширитель?
Vladimir
что значит под расширитель?
Прослойка для 32-битного режима
Vladimir
Под 64 пока ни одного не видел, да
Vladimir
А все последние досовые игры писались под расширитель DOS/4GW
Yura
ну вообще debug.exe у меня в винде 7 32 был
Yura
и там можно было комы нормально пистаь
Aiwan \ (•◡•) / _bot
format PE64 Console 5.0 include 'win64wx.inc' struct COORD x dw ? y dw ? ends struct SMALL_RECT left dw ? top dw ? right dw ? bottom dw ? ends struct CONSOLE_SCREEN_BUFFER_INFO dwSize COORD dwCursorPosition COORD wAttributes dw ? srWindow SMALL_RECT ends macro SLE { .if rax=0 stdcall ShowLastError,0 .endif } ;------------------------------------------------------------------------------- MAX_WIDTH equ 50 MAX_HEIGHT equ 50 ;------------------------------------------------------------------------------- .data conTitle du 'Console',0 mes du 'Hello world!',13,10 mesLen = ($-mes)/2 hStdIn dq 0 hStdOut dq 0 chrsRead dq 0 chrsWritten dq 0 srect SMALL_RECT 0,0,MAX_WIDTH-1,MAX_HEIGHT-1 info_scr_bf CONSOLE_SCREEN_BUFFER_INFO readBuf db ? .code Start: invoke SetConsoleTitle,conTitle test rax,rax jz Exit invoke GetStdHandle,STD_OUTPUT_HANDLE mov [hStdOut],rax invoke GetStdHandle,STD_INPUT_HANDLE mov [hStdIn],rax ;------------------------------------------------------------------------ invoke GetConsoleScreenBufferInfo,[hStdOut],info_scr_bf mov rdx,MAX_WIDTH shl rdx,16 or rdx,MAX_HEIGHT invoke SetConsoleScreenBufferSize,[hStdOut],rdx ;вот здесь почему то неправильный параметр SLE invoke GetConsoleScreenBufferInfo,[hStdOut],info_scr_bf invoke SetConsoleWindowInfo,[hStdOut],1,srect ;invoke WriteConsole,[hStdOut],mes,mesLen,chrsWritten,0 invoke ReadConsole,[hStdIn],readBuf,1,chrsRead,0 Exit: invoke ExitProcess,0 ;=============================================================================== proc ShowLastError hWnd:qword local lpBuffer:QWORD local .hwnd:QWORD mov [.hwnd],rcx invoke GetLastError lea rbx,[lpBuffer] invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,rax,LANG_NEUTRAL,rbx,0,0 invoke MessageBox,qword[rbp+0x10],[lpBuffer],NULL,MB_ICONERROR+MB_OK invoke LocalFree,[lpBuffer] ret endp .end Start непойму почему пишет что неправильный параметр у SetConsoleScreenBufferSize, и само окно изменяется только на ширину
Aiwan \ (•◡•) / _bot
кто в winapi силен?
Aiwan \ (•◡•) / _bot
макрос SLE показывает название самой ошибки, если она имеется
Aiwan \ (•◡•) / _bot
этоу меня в личке норм текст, а в этом канале кракозябры
s54820
этоу меня в личке норм текст, а в этом канале кракозябры
Раскладку клавиатуры русскую включи перед тем, как копировать текст.
Aiwan \ (•◡•) / _bot
тоесть при смене раскладки меняется кодовая страница?
Aiwan \ (•◡•) / _bot
или как там по русски сказать
s54820
При копировании в буфер обмена кладётся два куска данных — CF_TEXT и CF_UNICODETEXT. А так как при копировании из окон, чей класс создан ANSI-шной версией RegisterClass(Ex) юникодный текст взять неоткуда, он генерируется с учётом раскладки клавиатуры. Как-то так.
s54820
format PE64 Console 5.0 include 'win64wx.inc' struct COORD x dw ? y dw ? ends struct SMALL_RECT left dw ? top dw ? right dw ? bottom dw ? ends struct CONSOLE_SCREEN_BUFFER_INFO dwSize COORD dwCursorPosition COORD wAttributes dw ? srWindow SMALL_RECT ends macro SLE { .if rax=0 stdcall ShowLastError,0 .endif } ;------------------------------------------------------------------------------- MAX_WIDTH equ 50 MAX_HEIGHT equ 50 ;------------------------------------------------------------------------------- .data conTitle du 'Console',0 mes du 'Hello world!',13,10 mesLen = ($-mes)/2 hStdIn dq 0 hStdOut dq 0 chrsRead dq 0 chrsWritten dq 0 srect SMALL_RECT 0,0,MAX_WIDTH-1,MAX_HEIGHT-1 info_scr_bf CONSOLE_SCREEN_BUFFER_INFO readBuf db ? .code Start: invoke SetConsoleTitle,conTitle test rax,rax jz Exit invoke GetStdHandle,STD_OUTPUT_HANDLE mov [hStdOut],rax invoke GetStdHandle,STD_INPUT_HANDLE mov [hStdIn],rax ;------------------------------------------------------------------------ invoke GetConsoleScreenBufferInfo,[hStdOut],info_scr_bf mov rdx,MAX_WIDTH shl rdx,16 or rdx,MAX_HEIGHT invoke SetConsoleScreenBufferSize,[hStdOut],rdx ;вот здесь почему то неправильный параметр SLE invoke GetConsoleScreenBufferInfo,[hStdOut],info_scr_bf invoke SetConsoleWindowInfo,[hStdOut],1,srect ;invoke WriteConsole,[hStdOut],mes,mesLen,chrsWritten,0 invoke ReadConsole,[hStdIn],readBuf,1,chrsRead,0 Exit: invoke ExitProcess,0 ;=============================================================================== proc ShowLastError hWnd:qword local lpBuffer:QWORD local .hwnd:QWORD mov [.hwnd],rcx invoke GetLastError lea rbx,[lpBuffer] invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,rax,LANG_NEUTRAL,rbx,0,0 invoke MessageBox,qword[rbp+0x10],[lpBuffer],NULL,MB_ICONERROR+MB_OK invoke LocalFree,[lpBuffer] ret endp .end Start непойму почему пишет что неправильный параметр у SetConsoleScreenBufferSize, и само окно изменяется только на ширину
Ну для начала ты перепутал ширину и высоту. В старших битах должна быть высота.
Aiwan \ (•◡•) / _bot
не суть, там по 50 значения
s54820
не суть, там по 50 значения
“The specified width and height cannot be less than the width and height of the console screen buffer's window. The specified dimensions also cannot be less than the minimum size allowed by the system.”
Aiwan \ (•◡•) / _bot
тоесть сначало надо окно уменьшить, а потом буфер?
s54820
Именно.
Aiwan \ (•◡•) / _bot
Tempesta Torres запутал только
Aiwan \ (•◡•) / _bot
все равно в высоту окно больше чем 50, ну щас продебажу
s54820
все равно в высоту окно больше чем 50, ну щас продебажу
Нет, оно работает, просто высота символа примерно вдвое больше его ширины. Посмотри в свойствах консоли, там будут твои честные 50x50.
Aiwan \ (•◡•) / _bot
да, смотрел
Aiwan \ (•◡•) / _bot
чет каша, один раз норм было, поменял размер - уже ошибки
s54820
чет каша, один раз норм было, поменял размер - уже ошибки
У меня работает вроде. На каком размере ошибки? (И, кстати, добавь uses ebx в ShowLastError, а то напорешься когда-нибудь — его сохранять нужно).
Aiwan \ (•◡•) / _bot
чего?
Aiwan \ (•◡•) / _bot
Именно.
а конгад буфер уже маленькийпочле последнего выполнения программы, то не могу больше увеличивать окно. в памяти остается значение предыдущих размеров буфера
Aiwan \ (•◡•) / _bot
убрав все функции изменения буфура и окна, то консоль остается как при последнем выполнении, а не стандартного размера
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
format PE64 Console 5.0 include 'win64wx.inc' struct COORD x dw ? y dw ? ends struct SMALL_RECT left dw ? top dw ? right dw ? bottom dw ? ends struct CONSOLE_SCREEN_BUFFER_INFO dwSize COORD dwCursorPosition COORD wAttributes dw ? srWindow SMALL_RECT ends macro SLE { .if rax=0 stdcall ShowLastError,0 .endif } ;------------------------------------------------------------------------------- MAX_WIDTH equ 40 MAX_HEIGHT equ 25 ;------------------------------------------------------------------------------- .data conTitle du 'Console',0 mes du 'Hello world!',13,10 mesLen = ($-mes)/2 hStdIn dq 0 hStdOut dq 0 chrsRead dq 0 chrsWritten dq 0 srect SMALL_RECT 0,0,MAX_HEIGHT-1,MAX_WIDTH-1 info_scr_bf CONSOLE_SCREEN_BUFFER_INFO readBuf db ? .code Start: invoke SetConsoleTitle,conTitle test rax,rax jz Exit invoke GetStdHandle,STD_OUTPUT_HANDLE mov [hStdOut],rax invoke GetStdHandle,STD_INPUT_HANDLE mov [hStdIn],rax ;------------------------------------------------------------------------ ; invoke GetConsoleScreenBufferInfo,[hStdOut],info_scr_bf ;invoke SetConsoleWindowInfo,[hStdOut],1,srect SLE mov rdx,MAX_HEIGHT shl rdx,16 or rdx,MAX_WIDTH ;invoke SetConsoleScreenBufferSize,[hStdOut],rdx ;вот здесь почему то неправильный параметр SLE ; invoke GetConsoleScreenBufferInfo,[hStdOut],info_scr_bf ;invoke WriteConsole,[hStdOut],mes,mesLen,chrsWritten,0 invoke ReadConsole,[hStdIn],readBuf,1,chrsRead,0 Exit: invoke ExitProcess,0 ;=============================================================================== proc ShowLastError uses rbx, hWnd:qword local lpBuffer:QWORD local .hwnd:QWORD mov [.hwnd],rcx invoke GetLastError lea rbx,[lpBuffer] invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,rax,LANG_NEUTRAL,rbx,0,0 invoke MessageBox,qword[rbp+0x10],[lpBuffer],NULL,MB_ICONERROR+MB_OK invoke LocalFree,[lpBuffer] ret endp .end Start
s54820
а конгад буфер уже маленькийпочле последнего выполнения программы, то не могу больше увеличивать окно. в памяти остается значение предыдущих размеров буфера
Ну это все означает, что буфер должен быть больше или равен размеру окна, правильно? Можно нагородить условий, чтобы при увеличении окна увеличивался буфер сначала, а при уменьшении окна сначала уменьшалось именно окно. Выглядит, как костыли, но логично. А как правильно, я не знаю.
Aiwan \ (•◡•) / _bot
мож у мя что то с консолью?
Anonymous
@vladimir_32 , идея с перемещающим GC была интересна, спасибо
Disson
Привет всем
Aiwan \ (•◡•) / _bot
ку
Здравствуйте
Disson
Мааленький опросик: кто сколько лет знает ассемблер, со скольки лет и как вы о нем узнали?
Anonymous
малелетних хакеров ищет. к ним закон не так суров
Disson
Зачем тебе?
Ну чтобы понять, что я слишком поздно заинтересовался им
Disson
В 11