Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как использовать printf на masm?

Копытов П.Г. Знаток (417), на голосовании 1 год назад
Всем привет, для программы нужно разобраться с тем, как использовать printf или с аналогами данной функции на ассемблере.
вот код:
 .386 
.model flat, stdcall
option casemap:none

include C:\WORUKE\masm32\include\windows.inc
include C:\WORUKE\masm32\include\user32.inc
include C:\WORUKE\masm32\include\kernel32.inc
include C:\WORUKE\masm32\include\masm32.inc
include C:\WORUKE\masm32\include\msvcrt.inc

include C:\WORUKE\masm32\examples\exampl05\enumkeys\macros.asm

includelib C:\WORUKE\mas\asm\LIB\user32.lib
includelib C:\WORUKE\mas\asm\LIB\masm32.lib
includelib C:\WORUKE\mas\asm\LIB\msvcrt.lib
includelib C:\WORUKE\mas\asm\LIB\kernel32.lib
bufsize equ 12

.data
cnt dd 0
hin dd 0
fName db "test.txt",0
buf dd 255 dup (0)

.code
MAIN:

call input_consol
call write_in_file
call read_file

invoke crt__getch
invoke ExitProcess, 0

input_consol:
invoke GetStdHandle, -10
mov hin, eax
lea eax, cnt
invoke ReadConsoleA, hin, ADDR buf, 255, eax, 0
invoke CloseHandle, hin
invoke lstrlen, offset [buf]
sub eax, 2
mov cnt, eax
ret

write_in_file:
lea ebx, [fName]
invoke CreateFile, ebx, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, 0
mov hin, eax
invoke WriteFile, hin ,ADDR buf, cnt 0, 0
invoke CloseHandle, hin
ret

read_file:
lea ebx, [fName]

invoke CreateFile, ebx, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0
mov hin, eax
invoke GetFileSize, hin, 0
mov cnt, eax
push cnt
invoke ReadFile, hin, ADDR buf, cnt, 0, 0
invoke CloseHandle, hin

invoke GetStdHandle, -11
mov hin, eax
pop cnt
printf ("len str - %d\n", cnt)
invoke WriteConsoleA, hin, ADDR buf, cnt, 0, 0
printf ("\n")
invoke CloseHandle, hin
ret

_TEXT ENDS

END MAIN

end start
А вот список ошибок:
lab3.asm(50) : error A2137: too few arguments to INVOKE
lab3.asm(50) : error A2206: missing operator in expression
lab3.asm(50) : error A2114: INVOKE argument type mismatch : argument : 3
lab3.asm(68) : error A2008: syntax error : printf
lab3.asm(70) : error A2008: syntax error : printf

Пожалуйста помогите с прогой.
Голосование за лучший ответ
SHRUASSAN (Рэпер) Мудрец (10318) 1 год назад
Кринж, https://dvsav.ru/console-win-fasm/ , в инете бы поискал
Копытов П.Г.Знаток (417) 1 год назад
спасибо, но не помогло
SHRUASSAN (Рэпер) Мудрец (10318) паша копытов, ну ты и лox, курсы бы заказал
Похожие вопросы