CPU中,用16位寄存器来存储一个字。高八位存放高位字节,低八位存放低位字节。
字单元概念,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。
mov bx,1000H
mov ds,bx
mov al,[0]
CPU自动取ds中的数据为内存单元的段地址。
CPU不支持直接将数据送入段寄存器的操作。
mov bx,1000H
mov ds,bx
mov ax,[0] ;1000:0处的字型数据送入ax
mov [0]cx ;cs中的16位数据送到1000:0处
mov 段寄存器,寄存器
mov 寄存器,段寄存器
mov 内存单元,段寄存器.
mov 段寄存器,内存单元

将123B0H~123B9的内存单元定义为数据段。现在要累加这个数据段中的前3个单元中的数据,代码如下:
mov ax,123BH
mov ds,ax ;将123BH送入ds中,作为数据段的段地址
mov al,0 ;用al存放累加结果
add al,[0] ;将数据段第一个单元(偏移地址为0)中的数值加到al中
add al,[1] ;将数据段第二个单元(偏移地址为1)中的数值加到al中
add al,[2] ;将数据段第三个单元(偏移地址为2)中的数值加到al中
数据和程序在计算机中都是以二进制的形式存放的,
在区别程序和数据时,关键是看段地址,如果段地址是ds
段,说明该内存存放的是数据,如果段地址是cs段,说明该内存
存放的是指令。
可以将栈看做一个只有一个开口的盒子。
栈有两个基本操作:入栈和出栈。
PUSH(入栈)POP(出栈)。
任何时刻SS:SP指向栈顶元素。
关于栈越界问题,CPU只考虑当前的栈在何处、当前执行的命令是哪一条。
当一个段中存放数据,那么就是“数据段”,存放代码,就是“代码段”,存放栈,那么就是“栈段”。
(1)关于D命令。

(2)在E、A、U命令中使用段寄存器。
在这些命令中,,也可以同D命令一样,用段寄存器表示内存单元的段地址。
(3)Debug的T命令在执行修改寄存器SS的指令时,下一条命令也紧接着被执行。