(3)寄存器(内存)

1、立即数不能与段寄存器相遇。(CS,DS,SS,ES)
   段寄存器不能作运算
      mov ds,1000 ;错误,不直接传送
      mov ax,3
      mov ds,ax
      add ds,ax ;错误,不能运算
    
    mov bx,1000
    mov ds,bx    ;通过bx来传送
    mov al,[0]
   注意:传送内存中的内容时,自动以DS为数据段地址,上例DS=1000H,偏移量为0的内存地址中的内容传给al

         CS是代码的段地址,DS是数据的段地址。


2、mov,add,sub指令形式
   目前,两元指令都必须有一个是寄存器。段寄存器不能接受立即数,且不能进行运算。


3、数据段:将内存中长度为N(<=64K)、地址连续、起始地址为16的倍数的内在单元专门存储数据的内存空间


4、栈:后进先出
   SS:SP  SS保存栈的段,SP保存栈段区的偏移量。SS:SP始终指向栈顶。
   压栈:第一步,向上退两字节sp=sp-2;第二步,压入数据push ax;
   出栈:与上相反,第一步先弹出数据pop ax 第二步下移指针sp=sp+2
         当空栈时,指针(栈顶)将指向栈底的下一个内存单元。



5、栈越界

      CPU只认SS:SP,即它只知道这个栈顶的位置,其它的,它就是一个傻瓜。因此它没法判断栈是不是越过“人为划定”的栈段。

      那么我们通过SS:SP,就知道两点:一是栈的最上部(栈段起始),二是栈的指针SP(栈顶)

      无论SP怎么增加,或者无限增加,它一直在栈段中循环(进位后,最终变成0,或者再增加,反正没负数,就一直在内)


6、栈指令:pop,push

      它只有一个操作数,寄存器,段寄存器,或内存单元。


7、栈段

      同数据段、代码码一样,它的大小都是人为规划,都是小于或等于64K(0-FFFF)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值