それで機械語を使って 自作してしまえと 思い 一文字(1バイト)を表示するテストプログラムを
組んでみたのですが、機械語コード上の4・5バイト目である
CD 21 int 21h
のところで システムエラーが発生します。
考えられるミスは
・ファンクションコールの使用方法が間違っている。
・そもそもの機械語に間違いが在る (ハンドアセンブリングなので・・・可能性は無きにしも非ず)
・HSPのコンソールモード上ではファンクションコールなど割り込みが使用できない仕様になっている。
しかし上二つは重ね重ね見直したので無いと思います。
三つ目であった場合どうしようもないです。
↓ソースコード
協力お願いします。
#runtime "hsp3cl" #uselib "kernel32.dll" #func global VirtualProtect "VirtualProtect" var,int,int,var #module #defcfunc funcname funcsize=10 argsize=0 past=0 dim funcdata,funcsize dim arg,argsize VirtualProtect funcdata, funcsize*4,$40,past funcdata(0)=$02B441B2,$00C321CD /* B2 41 dl 41h ('A') B4 02 ah 02h CD 21 int 21h C3 ret */ eax=callfunc(arg,varptr(funcdata),argsize) return eax #global g=funcname()