Top.Mail.Ru
Ответы

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

Всем привет, для программы нужно разобраться с тем, как использовать printf или с аналогами данной функции на ассемблере.
вот код:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
 .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

Пожалуйста помогите с прогой.

По дате
По рейтингу
Аватар пользователя

Кринж, https://dvsav.ru/console-win-fasm/ , в инете бы поискал

Аватар пользователя
Ученик

спасибо, но не помогло



Видео по теме