1. 字单元 : 存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。
N 字单元 = N 号单元和 N+1 号单元
2. (8086)内存地址由段地址和偏移地址组成。
3. 8086 CPU 中有一 DS 寄存器,即段寄存器,通常用来存放要访问数据的段地址。
4. [...] 表示一个内存单元, 0 表示内存单元的偏移地址。 8086 不支持将数据直接送入段寄存器操作。
1
mov
bx, 1000H
2 mov ds, bx
3 mov al, [ 0 ]
2 mov ds, bx
3 mov al, [ 0 ]
5. 读数据
1
mov
寄存器名, 内存单元地址
;
数据从内存单元到寄存器
2 mov 内存单元地址, 寄存器名 ; 数据从寄存器到内存单元
2 mov 内存单元地址, 寄存器名 ; 数据从寄存器到内存单元
将 al 中的数据送入内存单元 10000H
1
mov
bx, 1000H
2 mov ds, bx
3 mov [ 0 ], al
2 mov ds, bx
3 mov [ 0 ], al
6. 字传送
1
mov
bx, 1000H
2 mov ds, bx
3 mov ax, [ 0 ]
4 mov [ 0 ], cx
2 mov ds, bx
3 mov ax, [ 0 ]
4 mov [ 0 ], cx
7. mov 指令形式
1
mov
寄存器, 数据
;
mov ax, 8
2 mov 寄存器, 寄存器 ; mov ax, bx
3 mov 寄存器, 内存单元 ; mov ax, [0]
4 mov 内存单元, 寄存器 ; mov [0], ax
5 mov 段寄存器, 寄存器 ; mov ds, ax
2 mov 寄存器, 寄存器 ; mov ax, bx
3 mov 寄存器, 内存单元 ; mov ax, [0]
4 mov 内存单元, 寄存器 ; mov [0], ax
5 mov 段寄存器, 寄存器 ; mov ds, ax
8. add 指令形式
1
add
寄存器, 数据
;
add ax, 8
2 add 寄存器, 寄存器 ; add ax, bx
3 add 寄存器, 内存单元 ; add ax, [0]
4 add 内存单元, 寄存器 ; add [0], ax
2 add 寄存器, 寄存器 ; add ax, bx
3 add 寄存器, 内存单元 ; add ax, [0]
4 add 内存单元, 寄存器 ; add [0], ax
9. sub 指令形式
1
sub
寄存器, 数据
;
sub ax, 8
2 sub 寄存器, 寄存器 ; sub ax, bx
3 sub 寄存器, 内存单元 ; sub ax, [0]
4 sub 内存单元, 寄存器 ; sub [0], ax
2 sub 寄存器, 寄存器 ; sub ax, bx
3 sub 寄存器, 内存单元 ; sub ax, [0]
4 sub 内存单元, 寄存器 ; sub [0], ax
10. 数据段
1
mov
ax, 123BH
2 mov ds, ax ; 将 123BH 送入 ds 中,作为数据段的段地址
3 mov al, 0 ; 用 al 存放累加结果
4 add al, [ 0 ] ; 将数据段第一个单元(偏移地址为 0)中的数值加到 al 中
5 add al, [ 1 ] ; 将数据段第一个单元(偏移地址为 1)中的数值加到 al 中
6 add al, [ 2 ] ; 将数据段第一个单元(偏移地址为 2)中的数值加到 al 中
2 mov ds, ax ; 将 123BH 送入 ds 中,作为数据段的段地址
3 mov al, 0 ; 用 al 存放累加结果
4 add al, [ 0 ] ; 将数据段第一个单元(偏移地址为 0)中的数值加到 al 中
5 add al, [ 1 ] ; 将数据段第一个单元(偏移地址为 1)中的数值加到 al 中
6 add al, [ 2 ] ; 将数据段第一个单元(偏移地址为 2)中的数值加到 al 中
11. 入栈 出栈指令 : PUSH POP
段寄存器SS, 偏移寄存器SP, 栈顶元素 SS:SP
1
push
段寄存器
;
将一个段寄存器中的数据入栈
2 pop 段寄存器 ; 出栈,用一个段寄存器接收出栈的数据
3 push 内存单元 ; 将一个内存字单元处的字入栈
4 pop 内存单元 ; 出栈,用一个内存字单元接收出栈的数据
2 pop 段寄存器 ; 出栈,用一个段寄存器接收出栈的数据
3 push 内存单元 ; 将一个内存字单元处的字入栈
4 pop 内存单元 ; 出栈,用一个内存字单元接收出栈的数据