【笔记】【汇编语言】第3章 寄存器(内存访问)

3.1 内存中字的存储
  CPU中,用16位寄存器来存储一个字,高8位存放高位字节,低8位存放低位字节。
  由于内存单元是字节单元,则一个字要用两个地址连续的内存单元来存放。低位字节存放在低地址单元中,高位字节存放在高地址单元中。

3.2 DS和[Address]
  [address] 即 DS:address
  注:8086CPU不支持将数据直接送入段寄存器的操作。
 
3.3 字的传送
  8086CPU是16位结构,可以一次传送一个字。
 
3.4 mov,add,sub指令
  mov指令的几种形式
  mov reg,idata
  mov reg,reg
  mov reg,[address]
  mov [address],reg
  mov sreg,reg
  注:add,sub指令也有与mov指令一样的格式
 
3.5 数据段
  将一段内存当作数据段,是我们在编程时的一种安排,可以在具体操作的时候,用DS存放数据段的段地址,再根据需要,用相关指令访问数据段中的具体单元。
 
3.6 栈
  一种特殊的存储结构,遵循LIFO或FILO的操作规则。
 
3.7 CPU提供的栈机制
  8086CPU提供入栈和出栈指令,PUSH和POP。
  CPU中有两个寄存器,SS和SP,SS指示栈的段地址,SP指示栈的偏移地址。  >>>>任意时刻,SS:SP指向栈顶元素<<<<
 
  push reg 操作过程:
  1) SP=SP-2
  2) 将数据送入SS:SP指示的地址
 
  pop reg 的操作过程正好相反:
  1) 从SS:SP指示的地址读取数据
  2) SP=SP+2
 
3.8 栈顶超界的问题
  8086CPU并没有提供预防栈顶超界的机制,需要我们自己注意。
 
3.9 push,pop指令
  push/pop reg/sreg/[address]
 
  tips: 清零操作,可以使用"sub ax,ax"指令,大小为2个字节,而使用"mov ax,0"的大小为3个字节
 
3.10 栈段
  8086CPU中,一个栈段最大的容量为64KB
 
实验2 用机器指令和汇编指令编程
  略

原文地址:https://www.cnblogs.com/AzikPhil/p/note_asm2_3.html