Reading Windows ProductId from bios.
I put this hjwasm example to here too.
Only hjwasm is needed for this example.
; hjwasm64 -win64 -pe ReadProdId64hja.asm
.x64 ; -pe requires to set cpu, model & language
.model flat, fastcall
option casemap :none
option epilogue:none
option prologue:none
option dllimport:<kernel32.dll>
GetSystemFirmwareTable proto :dword,:dword,:qword,:dword
option dllimport:<msvcrt.dll>
;includelib msvcrt.lib
exit proto :dword
printf proto args:vararg
public mainCRTStartup
.data
msg db "ACPI not found",13,10,0
.code
mainCRTStartup proc
sub rsp, 428h ; local buffer
invoke GetSystemFirmwareTable,'ACPI','MDSM',addr [rsp+20h],400h
.if rax
invoke printf,addr [rsp+58h]
.else
invoke printf,offset msg
.endif
invoke exit,0
mainCRTStartup endp
;msg db "ACPI not found",13,10,0
end mainCRTStartup