私はFASMの経験があり、それをよく学びました. 今、私はTASMの構文を学びたいと思っていました。私はTSRであるサンプルプログラムを書きました。これが私のコードです
.model tiny
.8086
.stack 200h
.data
Message db 'Example0 is loaded in memory',0,'$'
.code
main proc ;'main' is proc and code region
mov ax,@data ;Initialize data segment
mov ds,ax
push es
xor bx,bx
mov es,bx
;Check interrupt vector 0f5h
cmp word ptr es:[3d6h],0
je init ;If null initialize program and stay resident
int 0f5h
cmp ax,'ID' ;Check string in ax
jne init ;If AX != 'GG' initialize TSR
mov ah,9
mov dx,offset Message
int 21h
init:
;Set interrupt vector 0f5h
mov word ptr es:[3d4h],offset interruptroute
mov word ptr es:[3d6h],cs
pop es
mov ax,3100h
mov dx,64 ;Reserve 1KB (My .exe is lower than this)
int 21h
interruptroute proc far
shl bx,2
add bx,offset g0
call far [cs:bx] ;I assume this array is in code segment
;Here maybe fault in call far
iret
endp interruptroute
g0:
dw getID
dw @code
getID proc far
mov ax,'ID'
retf
endp getID
endp
end main
追加のコマンドラインを表示します:
tasm src\gdos.asm,bin\gdos.obj tlink bin\gdos.obj,bin\gdos.exe
注: GDOS は、ビルドする予定の OS です。