DOS からの OS 判定方法
(1999/06/05 [土])
DOS から OS を判定することができます。それには DOS5 以降から使用することができる Get True Version Number(ファンクション 3306h) を使用します。これを実行すると BL レジスタにメジャーバージョン番号が、BH レジスタにマイナーバージョン番号が返ってきます。Windows NT の場合、バージョン 5.50 が返ってきます。OS/2 v2.1 の場合には、20.10 が返ってきます。これを利用して OS を識別することができます。サンプルプログラムを nasm で書くと次のようになります。
;OS 判定プログラム (c)1999 seclan ; ;アセンブル&リンク方法 ; nasm -f obj osident.asm ; alink -oEXE osident.obj [segment _TEXT public align=1 class=CODE use16] ..start: mov ax, 3306h ;Get True Version Number int 21h ;NT? ver=5.50 mov dx, ntmes cmp bx, 3205h je dispmes ;OS/2 ? mov dx, os2mes cmp bl, 20 jae dispmes ;DOS mov dx, dosmes dispmes: mov ax, cs mov ds, ax mov ah, 9 int 21h ;term mov ax, 4c00h int 21h ntmes db 'NT',13,10,'$' os2mes db 'OS/2',13,10,'$' dosmes db 'DOS',13,10,'$' |
by seclan