おそらくばかげた質問ですが、これは私の Machine Organization クラスでの最初のプロジェクトであり、問題が発生しています。以下のコードは、画面の中央に上から下に「*」を表示するためのものです。アセンブルしないコード行は次のとおりです。
MOV ES: [ numLoops * 80 * 2 + (40 * 2) ], BYTE PTR '*'
numLoops
これがアセンブルされない理由は理解していますが、コード行が実行されるたびnumLoops
にデクリメントされるように行を上に移動するように、その値を取得するために何を配置すればよいかわかりません。どんなアドバイスでも大歓迎です、ありがとう。
MyData SEGMENT
numLoops DB 25
MyData ENDS
;-------------------------------------------------------------------------------
MyCode SEGMENT
ASSUME CS:MyCode, DS:MyData
MainProg PROC
MOV AX, MyData
MOV DS, AX
MOV AX, 0B800h
MOV ES, AX
loop25:
CALL displayChar
DEC numLoops
CMP numLoops, 0
JNE loop25 ;if not equal to 0, numLoops - 1 and repeat
MOV AH, 4Ch
INT 21h
MainProg ENDP
displayChar PROC
MOV ES: [ numLoops * 80 * 2 + (40 * 2) ], BYTE PTR '*'
RET
displayChar ENDP
MyCode ENDS