1、8086CPU不支持将数据直接送入段寄存器,需要按照下面方式:数据——》通用寄存器——》段寄存器。

2、mov指令的几种形式:

  mov 寄存器,数据

  mov 寄存器,寄存器

  mov 寄存器,内存单元        mov ax,[0]   将段地址为DS,偏移地址为0的数据存到ax寄存器里。  

  mov 内存单元,寄存器  mov [0],ax  将ax寄存器里的数据存储到段地址为DS,偏移地址为0的内存地址。 

  mov 段寄存器,寄存器

  mov 寄存器,段寄存器

3、mov、add、sub是具有两个操作对象的指令,jmp只有一个操作对象。

4、入栈和出栈指令:

  push ax :将寄存器ax中的数据送入栈中

  pop ax :从栈顶取出数据送入ax

  ps:8086CPU的入栈和出栈操作都是以字为单位进行的。

5、8086CPU中,有两个寄存器与栈有关:

  段寄存器ss  存放栈顶的段地址

  寄存器sp  存放栈顶的偏移地址

  ps:任意时刻,SS:SP指向栈顶元素。push : sp=sp-2, pop: sp=sp+2

当栈里元素为空的时候,sp指向空间最高地址单元的下个单元。

 

6、字型数据用两个单元存放,高地址放高8位,低地址放低8位。

7、将10000H~1000FH这段空间当做栈,初始状态为空,设置AX=001AH,BX=001BH,将AX,BX中的数据入栈,然后将AX,BX清零,从栈中恢复AX,BX原本的内容。(注:main函数调用方法)

  mov ax,1000         初始化栈顶

  mov ss,ax              初始化栈顶

  mov sp,0010     初始化栈顶  

  mov ax,001A

  mov bx,001B

  push ax

  push bx

  mov ax,0

  mov bx,0

  pop bx

  pop ax

 

posted on 2018-10-28 11:58  slma  阅读(284)  评论(0编辑  收藏  举报