環境
Windows 11 Pro (64bit)
Visual Studio Community 2022
ソースなど
バッチファイル
dev32crt.bat
@echo off
path %path%;D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\bin\Hostx64\x86
set lib=%lib%;D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\lib\x86
set lib=%lib%;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x86
set lib=%lib%;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x86
cmd
アセンブリ ソース
printf.asm
comment *
ml /c printf.asm
link /subsystem:console printf
*
includelib msvcrt
includelib legacy_stdio_definitions
.model flat
printf proto c :dword,:vararg
.const
fmt1 db 'argc=[%d]',0ah,0
fmt2 db 'argv[%d]=[%s]',0ah,0
.data
i$ dd ?
p$ dd ?
.code
argc$ = 8
argv$ = 12
main proc c
push ebp
mov ebp, esp
mov eax, argc$[ebp]
invoke printf, addr fmt1, eax
mov i$, 0
@@:
mov edx, i$
mov eax, argv$[ebp]
mov ecx, [eax+edx*4]
mov p$, ecx
cmp p$, 0
je @f
invoke printf, addr fmt2, i$, p$
inc i$
jmp @b
@@:
mov eax, 0
pop ebp
ret
main endp
end
実行例
D:\Projects\msvc>ml /c printf.asm
Microsoft (R) Macro Assembler Version 14.34.31935.0
Copyright (C) Microsoft Corporation. All rights reserved.
Assembling: printf.asm
D:\Projects\msvc>link /subsystem:console printf
Microsoft (R) Incremental Linker Version 14.34.31935.0
Copyright (C) Microsoft Corporation. All rights reserved.
D:\Projects\msvc>printf tako ika manbo
argc=[4]
argv[0]=[printf]
argv[1]=[tako]
argv[2]=[ika]
argv[3]=[manbo]
D:\Projects\msvc>