汇编笔记(三)

2012/3/15 15-20

(1)mov的形式
 mov 段寄存器,寄存器  ds,ax
     mov 寄存器,数据      ax,2
        mov 寄存器,寄存器    ax,bx
 mov 寄存器,内存单元  ax,[0]
 mov 内存单元,寄存器  [0],ax
 mov 寄存器,段寄存器

(2)add和sub如mov一样

(3)将123b0h—123bah的内存定义为数据段,累加数据段的前三个单元的数据
     代码:
 mov ax,123bh
 mov ds,ax
 mov al,0     //al的初始化
 add al,[0]
 add al,[1]
 add al,[2]
     将123b0h—123bah的内存定义为数据段,累加数据段的前三个字型的数据
     代码:
 mov ax,123bh
 mov ds,ax
 mov ax,0(或者是mov ax,1000:0)
 add ax,[0]
 add ax,[2]
 add ax,[4]

(4)栈
 段寄存器ss 存放栈顶的段地址
 寄存器sp 存放栈顶的偏移地址
 任意时刻,ss:sp指向栈顶元素
 
 PUSH ax
 为SP=SP-2;
 将ax送入栈顶ss:sp

 POP ax
 将ax送入栈顶ss:sp
 为SP=SP+2;
 
 
 把10000h—1000fh为初始栈的时候ss=1000h sp=000eh
 当sp=0010h时栈为空

(5)栈溢出
 会导致其他用途的数据,代码破坏
 解决方法:在cpu中有记录上下限的寄存器,可以通过寄存器指定栈的空间的
 范围,然后执行push时靠栈顶上限寄存器,pop时则靠栈顶下限寄存器
 注意释放内存

(6)栈与内存
 栈是内存的一部分,
 push和pop操作和mov相似

原文地址:https://www.cnblogs.com/yuelingzhi/p/2400796.html