説明5.1 [BX]とメモリユニット
メモリセルの記述を完了するためには、2つのタイプの情報を必要とします。
- メモリアドレスの手段:
- することができる[0]は、デフォルトのセグメントのアドレスのメモリセル、0は単位を表すオフセットアドレスを示してDSにします。
- 使用することも同様缶[BX]意味でオフセットされたメモリセル、BX ;及び
- メモリセル(タイプ)の長さ:
- メモリユニットの内容AXは、このメモリセルの長さワードが格納され、2バイト(ワード単位)です。
- メモリユニットの内容アルこのメモリセルの長さは、1バイト(バイト単位)、ストア・バイトです。
5.2ループ命令
ループ命令およびCX循環機能を実現するように協働する、CXサイクル数が記憶されます。
ループ命令フォーマットは次のとおりループラベル、CPUが実行するループ命令は、2つの操作を実行します
- (CX)=(CX) - 1。
- 分析CXの値を、ゼロが下向きに行われた場合、ラベルでプログラムの実行に行き、その後はゼロではありません。
そのフレームワーク:
mov cx, 循环次数
s:
循环执行的程序段
loop s
5.3プログラムの複数のセグメントを含みます
スペースの制限データ、以上64キロバイトよりスタックとコードニーズは、セグメントに配置することができない場合にモード8086において、データは、あるべきであるスタックとに対応するコードのコードセグメント、スタックセグメント、データセグメント ;
例:
assume cs:code,ds:data,ss:stack
data segment
dw 0001h,0002h,0003h,0004h,0005h,0006h,0007h,0008h ;dw定义字形数据
data ends
stack segment
db 0,0,0,0,0,0,0,0 ;定义字节型数据
stack ends
code segment
start:
mov ax,data ;把数据段地址放入ax
mov ds,ax
mov ax,stack ;把栈段地址放入ax
mov ss,ax
mov sp,18h ;设置栈顶指向18h ,18h = 数据段8个字+栈段8个字节共24字节换成16进制。
mov ax,4c00h
int 21h
code ends
end start ;end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。在这指明了程序的入口在标号 start 处。