はじめに
必要最低限の環境変数やコードを調べ、今後の土台とする。
環境
Windows 11 Pro (64bit)
Visual Studio Community 2022
MASM32 SDK
ソースなど
dev16.bat
@echo off
path %path%;D:\masm32\bin
path %path%;D:\etc\msdos\binary\i86_x64
cmd
ret.asm
comment *
ml /c ret.asm
link16 /t ret;
*
.model tiny
.code
org 0100h
start:
mov ax, 4c2ah
int 21h
end start
実行例
D:\Projects\etc\MASM32>ml /c ret.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.
Assembling: ret.asm
D:\Projects\etc\MASM32>link16 /t ret;
Microsoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994
Copyright (C) Microsoft Corp 1984-1993. All rights reserved.
LINK : warning L4045: name of output file is 'ret.com'
D:\Projects\etc\MASM32>msdos ret
D:\Projects\etc\MASM32>echo %errorlevel%
42
D:\Projects\etc\MASM32>certutil ret.com
b8 2a 4c cd 21 .*L.!
CertUtil: -dump コマンドは正常に完了しました。
D:\Projects\etc\MASM32>
VC++
ソースなど
devc.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
retc.c
/*
cl /MD retc.c
*/
int main(int argc, char *argv[])
{
return argc;
}
実行例
D:\Projects\msvc>cl /MD retc.c
Microsoft(R) C/C++ Optimizing Compiler Version 19.34.31935 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
retc.c
Microsoft (R) Incremental Linker Version 14.34.31935.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:retc.exe
retc.obj
D:\Projects\msvc>retc a b c
D:\Projects\msvc>echo %errorlevel%
4
D:\Projects\msvc>
MASM (x86)
ソースなど
devasm.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%;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x86
cmd
reta.asm
comment *
ml /c reta.asm
link /subsystem:console reta
*
includelib kernel32
.model flat
ExitProcess proto stdcall :dword
.code
start proc c
invoke ExitProcess, 42
start endp
end start
実行例
D:\Projects\msvc>ml /c reta.asm
Microsoft (R) Macro Assembler Version 14.34.31935.0
Copyright (C) Microsoft Corporation. All rights reserved.
Assembling: reta.asm
D:\Projects\msvc>link /subsystem:console reta
Microsoft (R) Incremental Linker Version 14.34.31935.0
Copyright (C) Microsoft Corporation. All rights reserved.
D:\Projects\msvc>reta
D:\Projects\msvc>echo %errorlevel%
42
D:\Projects\msvc>