アセンブリで円を描こうとしていますが、何らかの理由で動作しない場合、DOSBoxがフリーズしてしまい、その理由を理解できないようです。また、円は画面に表示されません。私はコードのほとんどをオンラインで見つけました。私はそれを使用しようとしていて、それが何をしているのか理解していますが、ここで何か間違いを見つけることはできません。ことができます誰にもアセンブリ - 円を描く
player1disccolor db 0Eh
Player1Disc:
push 0a000h
pop es
mov dx, 20
mov di, 20
mov al, [player1disccolor]
mov bx, 30
call Player1Disc
mov ah, 0
int 10h
mov bp,0
mov si,bx
Disc1:
call Set8pixels
sub bx,bp
inc bp
sub bx,bp
jg Disc2
add bx,si
dec si
add bx,si
Disc2:
cmp si,bp
jae Disc1
ret
Set8pixels:
call Set4pixels
Set4pixels:
xchg bp,si
call Set2pixels
Set2pixels:
neg si
push di
add di,si
add di,dx
mov [es:[di+bp]],al
sub di,bp
stosb
pop di
ret
ありがとう:ここ
はコードです。この最後の命令call Player1Disc
コード付き
によって与えられた理由を、あなたの元のコードがクラッシュした理由は、あなたは、デバッガでコードをステップ実行しようとしたことがありますか? –
このコードを見つけたページへのリンクを投稿できますか? –
アセンブラを学びたい場合は、アームなどの最新のCPUを選択してください。はるかに良く、プログラムしやすくなります。エミュレータとほとんどの携帯電話があり、ラズベリーはこのCPUを持っています。 (そして私は彼らがx86を約5対1で売っていると思う) –