次のアセンブリ コードに問題があります。
PROGX: MVI C, 10h
LOOP1: CALL SHOWX
DATAX: DB 80h, 01h, 40h, 02h
DB 20h, 04h, 10h, 08h
DB 08h, 10h, 04h, 20h
DB 02h, 40h, 01h, 80h
DB 02h, 40h, 04h, 20h
DB 08h, 10h, 10h, 08h
DB 20h, 04h, 40h, 02h
DCR C
JNZ LOOP1
ENDX: HLT
SHOWX: XTHL
MVI B, 0Eh
LOOP2: MOV A, M
OUT 3Eh
INX H
MOV A, M
OUT 3Fh
INX H
DCR B
JNZ LOOP2
CALL D500M ; Delay 500 msec.
XTHL
RET
Loop1 の 1 番目のループで ShowX を実行した後、DB ディレクティブを使用してメモリを予約する DATAX があります。
DBコマンドがメモリ内のバイトの割り当てを開始するメモリアドレスの開始を理解するのを手伝ってくれる人はいますか?
たとえば、以下のコードは、ORG コマンドによりアドレス C100H への割り当てを開始します。したがって、20h は C100h に格納され、10h は C100h + 1 に格納されます。
ORG C100h
DB 20h,10h
よろしくお願いいたします。