アセンブリ言語 - [BX]、および命令およびループ複数のセグメント

説明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 处。

おすすめ

転載: www.cnblogs.com/chengmf/p/12454670.html