Страница: 1 |
Страница: 1 |
Вопрос: Assembler
Добавлено: 26.05.08 11:39
Автор вопроса: Bonapart | Web-сайт:
Помогите кто может срочно. Надо заменить в Pascal оператор writeln или readln асмовской вставкой. Знаю что можно но я не знаю assembler. Спасибо всем кто поможет
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 26.05.08 14:56
WriteLn proc lpString: dword
local dwReserved: dword
call AllocConsole
push -11 ;STD_OUTPUT_HANDLE
call GetStdHandle
push 0
lea edx, dwReserved
push edx
push eax
push lpString
call lstrlen
pop edx
push eax
push lpString
push edx
call WriteConsole
ret
WriteLn endp
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 26.05.08 14:56
local dwReserved: dword
call AllocConsole
push -11 ;STD_OUTPUT_HANDLE
call GetStdHandle
push 0
lea edx, dwReserved
push edx
push eax
push lpString
call lstrlen
pop edx
push eax
push lpString
push edx
call WriteConsole
ret
WriteLn endp
Номер ответа: 3
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #3
Добавлено: 26.05.08 14:57
пля, все равно форматирование улетает.... =(
Номер ответа: 4
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #4
Добавлено: 26.05.08 15:22
local dwReaded: dword
call AllocConsole
push -10 ;STD_INPUT_HANDLE
call GetStdHandle
push eax
push 4 ;PAGE_READWRITE
push 1000h ;MEM_COMMIT
push 255 ;MAX string size
push 0
call VirtualAlloc
pop edx
push eax
push 0
lea ecx, dwReaded
push ecx
push 255 ;MAX string size
push eax
push edx
call ReadConsole
pop esi
push esi
mov edi, lpString
mov ecx, dwReaded
inc ecx
rep movsb
call VirtualFree
ret
ReadLn endp
Номер ответа: 5
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #5
Добавлено: 26.05.08 15:24
Прога на асме:
http://domkratt.com/samples/vbnet/166915.rar
Номер ответа: 6
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #6
Добавлено: 27.05.08 00:43
В функции WriteLn у меня недочет, там надо к полученной строке прибавить 0Ah, 0Dh еще, чтоб перевод строки был. Ну там просто - выделяешь память под новую строку и приляпываешь эти два байта. Если не разберешься - говори, я тебе напишу.