Vladimir
Vitaliy ◀️TriΔng3l▶️
Anonymous
Ребят. Кому нибудь немного битков по дешевки надо? Через гаранта.
Yura
ребят
Yura
а int20 на 64 битной системе атк же работает?
Yura
в плане у меня досбокс залагивает когда прога уже должна завершиться
Vladimir
И адресуют 1 мегабайт ОЗУ
Vladimir
И 64 битные команды там недоступны.
Да там вообще доступны только 486 или даже 386 команды...
Vladimir
Ну почему, SSE даже доступны. AVX вроде нет, и все, что полагается на xsave. ЕМНИП.
Yura
Vladimir
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
Под 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
этоу меня в личке норм текст, а в этом канале кракозябры
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, ну щас продебажу
Aiwan \ (•◡•) / _bot
да, смотрел
Aiwan \ (•◡•) / _bot
чет каша, один раз норм было, поменял размер - уже ошибки
Aiwan \ (•◡•) / _bot
чего?
Aiwan \ (•◡•) / _bot
s54820
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
Aiwan \ (•◡•) / _bot
мож у мя что то с консолью?
Anonymous
@vladimir_32 , идея с перемещающим GC была интересна, спасибо
Disson
Привет всем
Aiwan \ (•◡•) / _bot
ку
Здравствуйте
Disson
Мааленький опросик: кто сколько лет знает ассемблер, со скольки лет и как вы о нем узнали?
Anonymous
малелетних хакеров ищет. к ним закон не так суров
Disson
Зачем тебе?
Ну чтобы понять, что я слишком поздно заинтересовался им
Disson
В 11