寄存器:
一、 cs、ip

       8086有这两个寄存器的原因:8086是16位结构的CPU,这也就是说,在8086内部,能够一次性处理、传输、暂时存储的信息最大长度是16位的,然而对内存的地址总线是20位的。   物理地址=段地址*16+偏移地址(16进制表示的)
Mark: 内存中的地址是不分段的,段是在CPU中分的
        一个地址可能有多种段:偏移地址表达方式的
        段的起始地址是16的倍数
Mark:内存中的地址是绝对的,但是程序加载到内存中地址肯定是变动的?如何得到真实的地址?
        使用相对地址/逻辑地址---地址加载每次从新计算的。
        偏移地址本身相对于段地址就是相对地址,
        段地址的初始化我很好奇?

       cs:段寄存器

       ip:地址偏移寄存器            程序执行时自增长

     1.修改方法

        例子: jmp 2ae3:3        cs=2ae3       ip=3

                  -----------------------------------------------------------------------

                   jmp 合法寄存器

                  jmp ax              ax=1000h               ip=1000h;cs不变

                  -----------------------------------------------------------------------

二、ds和[address]

        ds:通常存放要访问数据的段地址

        不支持直接数据送入段寄存器中

三、栈寄存器 ss:sp

 

Mark:栈段中的SP数据初始化应该怎么算?

        堆栈的大小如何初始化?

        sp初始化 的时候指向堆栈中的最后一个元素的下一个元素        
        出问题 覆盖数据单元      所以要小心使用 栈空间大小跟    

 

       ss:sp  栈顶地址

      push      入栈的时候 sp-2 一个字

      pop        出栈sp+2

================================================

Mark:数据段、堆栈段如果声明了,大小如何定义?

                                                 不可能是个段我就声明64K吧。