プロが教える店舗&オフィスのセキュリティ対策術

以下のように,コマンドプロンプトのDEBUGコマンドでアセンブリ言語を書いたのですが,COMファイルとして保存する方法(http://wisdom.sakura.ne.jp/programming/asm/assem …)が分かりません。お願いします!

debug
a 100
mov ah,a
mov dx,9100
mov byte ptr[9100],20
int 21
ret

a 200
sub bl,30
ret

a 300
mov bl,byte ptr[9103]
cmp bl,2b
je 318
cmp bl,2d
je 31a
cmp bl,2a
je 31a
cmp bl,2f
je 31a
add al,dl
ret

a 400
mov ah,0
mov dl,a
div dl
mov byte ptr[9200],0d
mov byte ptr[9201],0a
add al,30
mov byte ptr[9202],al
add ah,30
mov byte ptr[9203],ah
mov byte ptr[9204],24
mov ah,9
mov dx,9200
int 21
ret

a 9000
call 100
mov bl,byte ptr[9102]
call 200
mov al,bl
mov bl,byte ptr[9104]
call 200
mov dl,bl
call 300
call 400
mov ah,4c
mov al,0
int 21

g =9000 9021

A 回答 (1件)

> g =9000 9021



質問者さんが提示したサイトにあるように、

| COMファイルの生成は、まずオフセットアドレス 100 からプログラムを作ります

ですので、質問者さんの意図したようにはcomファイルに出来ません。
100番地から実行され、6行目のretで動作が不定になります。

しょっぱなで9000番地に飛ばすとかしては?


> COMファイルとして保存する方法

サイト内容を参考にすると、

-r bx
bx ????
:0
-r cx
cx ????
:8f21
-n file_name.com
-w

でカレントディレクトリに、file_name.comという実行形式のファイルが作成されるハズです。
余分にファイルサイズが大きいですが、最近だと32KBとか64KBなんてのは屁みたいな扱いです…。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!