Intel 8086 について読み始めたばかりで、そのメモリについて質問があります。
アドレス バスは 20 ビット幅、つまりアドレス空間は 1MB であり、この空間はセグメントに分割されていると読みました。
質問は:
CS
、、、およびの 4 つのセグメント レジスタは読み取り専用ですかDS
、それとも値を設定できますか?また、それらのデフォルト値はどれですか?SS
ES
次のアセンブリ チュートリアルを見ました。
ORG 100h MOV AX, 0B800h ; set AX = B800h (VGA memory). MOV DS, AX ; copy value of AX to DS. MOV CL, 'A' ; CL = 41h (ASCII code). MOV CH, 01011111b ; CL = color attribute. MOV BX, 15Eh ; BX = position on screen. MOV [BX], CX ; w.[0B800h:015Eh] = CX. RET
最初の行に関しては、このコードが0x100
コード セグメント空間またはアドレス空間全体のアドレスに存在することを意味しますか?
と行:
MOV [BX], CX
命令でアドレスを参照するたびMOV
に、データセグメントの開始アドレスからアドレスを推定する必要があるということですか? (彼が書いたように、宛先は値+データセグメントregの値です)