基本的に、NASM を使用して、使用する単純な .COM ファイルを作成しています。ファイルの 1 つ (ttcb.asm) では、画面をクリアすることから始めます。これは、別のファイルでルーチンを呼び出すことによって行われるため、%include 'video.asm'
. これには、期待どおりにファイルが含まれます。%include
このファイルをインクルードすると、別のルーチンを呼び出さなくても、元のファイル (インクルードされたファイル)のステートメントに続くものは何もvideo.asm
実行されません。また、video.asm のコードが自動的に実行されていることもわかります。しかし、%include
ステートメントを削除すると、すべてが正常に実行されます。video.asm のすべてを削除しようとしました、それでもうまくいきませんでした。次に、video.asm を空のファイルにしようとしましたが、うまくいきましたが、それは無意味です。次に、インクルードステートメントを移動しようとしましたが、それも失敗しました。これに対する解決策はありますか、それともサブルーチンを元のファイルに直接挿入する必要がありますか?
ttcb.asm:
[BITS 16]
section .text
%include 'video.asm'
call screen_clear
jmp $ ;should've frozen the .COM, but it didn't, meaning it failed to execute.
section .data
welcomeMsg db 'Welcome to the TitaniumCube ©.',13,10,0,'$'
section .bss
ビデオ.asm:
;===================================
;-----------------------------------
;Clears the screen to black
;No input or output
;-----------------------------------
screen_clear:
mov ah,0Fh
int 10h
push ax
mov ah,00
mov al,00
int 10h
pop ax
mov ah,00
int 10h
ret
;-----------------------------------
;===================================