汇编笔记_第三章

寄存器内存访问

内存器中字的存储

  • 大端方式:高位字节排放在内存的低地址端,低位字节存放在高地址端;(现在见到的都是大端方式)
  • 小端方式:低位字节存放在内存的低地址端,高位字节存放在高地址端;

DS和[address]

  • 执行指令时,8086CPU自动取DS中的数据作为内存单元的段地址;
  • 不能直接将数据送到DS中,必须 数据->一般的寄存器->段寄存器

例如:

mov bx,1000H

mov ds,bx

mov [0],al

字的传送

  • 8086CPU是16位结构,有16根数据线,一次可以传送16位的数据,也就是一次可以传送一个字;(P50的问题3.3、3.4)

mov、add、sub指令

mov指令的几种形式:

mov 寄存器,数据

mov 寄存器,寄存器

mov 寄存器,内存单元

mov 内存单元,寄存器

mov 段寄存器,寄存器

  • 8086CPU中的入栈和出栈操作都是以 为单位的;
  • 任意时刻,SS:SP指向栈顶元素;

push指令的执行过程

push ax

  • SP = SP - 2;
  • 将ax中的内容送入到SS:SP指向的内存单元处,SS:SP此时指向新栈顶;
  • 栈空时,SS:SP指向栈空间最高地址单元的下一个单元;

pop指令的执行过程

pop ax

  • 将SS:SP指向的内存单元出的数据送入ax中;
  • SP = SP + 2;

栈顶超界的问题

  • 栈满的时候再使用push指令入栈栈空的时候再使用pop指令出栈 都会发生栈顶超界问题;
  • 8086CPU不保证对栈的操作不会超界;

push、pop指令

  • push/pop 寄存器、段寄存器、内存单元

  • 栈可以保存寄存器的数据,恢复时出栈的顺序要和入栈的顺序相反;

  • 栈可以向一个地址处的内存单元写入数据,先设置ss,sp的值然后push;

  • 栈顶sp的变化范围为0~FFFFH;

段地综述

  • 对于数据段,段地址存放在DS中
  • 对于代码段,段地址存放在CS,段中的第一条指令的偏移地址在IP中;
  • 对于栈段,段地址存放在SS中,栈顶的偏移地址存放在SP中;
    https://www.cnblogs.com/31415926535x/p/10178927.html
posted @ 2018-12-26 14:21  31415926535x  阅读(197)  评论(0编辑  收藏  举报