【汇编学习】汇编语言读书笔记(第三章)
来源:互联网 发布:cdn域名加速 编辑:程序博客网 时间:2024/05/17 04:10
汇编学习第三天:寄存器(内存访问)
内存中的字存储
- 字单元:存放一个字的内存单元,由0、1两个字节单元组成
- 字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节
- 我们称起始地址为N的字单元简称为N地址字单元
- 任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元
DS和[address]
- 8086CPU不支持将数据直接送入寄存器的操作。
mov、add、sub
- mov、add、sub指令
mov 寄存器,数据 mov 寄存器,寄存器 mov 寄存器,内存单元 mov 内存单元,寄存器
小结
- 字在内存中存储时,要用两个地址连续的内存单元来存放,字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。
- 用mov指令访问内存单元,可以再mov指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中。
- [address]表示一个偏移地址为address的内存单元。
- 在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应。
- mov、add、sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。
- 可以根据自己的猜测,是在Debug中实验指令的心格式。
栈
- 栈由两个基本的操作:入栈和出栈。入栈就是将一个新的元素放到栈顶,出栈就是从栈顶取出一个元素。栈的操作规则称为:LIFO(后进先出)。
CPU提供的栈机制
- 8086CPU提供入栈和出栈指令,最基本的两个是push和pop。
- 8086CPU的入栈和出栈操作都是以字为单位进行的。
- 由相应的寄存器来存放栈顶的地址,8086CPU中,由两个寄存器,段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任意时刻,SS:SP指向栈顶元素。
- SS:SP指向新的栈顶1000EH,pop操作前的栈顶元素,1000CH处的数据依然存在,但是,它已不在栈中。当再次执行push等入栈指令后,SS:SP移至1000CH,并在里面写入新的数据,它将被覆盖。
栈顶超界的问题
- 我们在编程的时候要自己操心栈顶超界的问题,要根据可能用到的最大栈空间,来安排栈的大小,防止入栈的数据太多而导致的超界;执行出栈操作的时候也要注意,以防栈空的时候继续出栈而导致的超界。
push、pop指令
- push指令的执行步骤:①SP=SP-2;②向SS:SP指向的字单元中送入数据
- pop指令的执行步骤:①从SS:SP指向的字单元中读取数据;②SP=SP+2。
- 8086CPU只记录栈顶,栈空间的大小我们要自己管理。
栈段
- 首先从栈操作指令所完成的功能的角度上来看,push、pop等指令在执行的时候只修改SP,所以栈顶的变化范围是0~FFFFH,从栈空的时候的SP=0,一直压栈,直到栈满时SP=0;如果再次压栈,栈顶将环绕,覆盖了原来栈中的内容。所以一个栈段的容量最大为64KB。
- 对于数据段,将它的段地址放在DS中;
- 对于代码段,将它的段地址放在CS中,将段中第一条指令的偏移地址放在IP中;
- 对于栈段,将它的段地址放在SS中,将栈顶单元的偏移地址放在SP中。
实验2 用机器指令和汇编指令编程
- debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。
检测点答案
略。
0 0
- 【汇编学习】汇编语言读书笔记(第三章)
- 【汇编学习】汇编语言读书笔记(第二章)
- 【汇编学习】汇编语言读书笔记(第一章)
- 【汇编】第三章 汇编语言程序结构
- 第三章 汇编语言和汇编软件
- 汇编语言(第三版)读书笔记 1 - 第1章 基础知识
- 汇编语言(第三版)读书笔记 2 - 第2章 寄存器
- 《汇编语言》读书笔记(1) 初识汇编
- LINUX汇编(汇编语言程序设计读书笔记)
- 汇编语言学习——第三章 寄存器(内存访问)
- 《汇编语言》学习笔记 第三章 寄存器(内存访问)
- [汇编语言学习笔记][第三章寄存器(内存访问)]
- Intel汇编语言程序设计学习-第三章 汇编语言基础-上
- Intel汇编语言程序设计学习-第三章 汇编语言基础-中
- Intel汇编语言程序设计学习-第三章 汇编语言基础-下
- 汇编学习笔记 第三章
- 汇编学习笔记 第三章
- 【读书笔记】学习OpenCV(中文版)第三章
- 第一个Java程序示例——Hello World!
- Android中Context详解 ---- 你所不知道的Context
- HDU 5876 Sparse Graph (补图找最短路/BFS)
- 欢迎使用CSDN-markdown编辑器
- 使用xinput_calibrator解决gtk程序无法校准的问题
- 【汇编学习】汇编语言读书笔记(第三章)
- tjut 3577
- HDU 5874 Friends and Enemies(二分图思想)——2016 ACM/ICPC Asia Regional Dalian Online
- opencv实现多图像读取并显示,sprintf_s函数,static_cast
- Bubble Cup 9 - Finals E. 搜索
- Android横竖屏切换
- 网络编程url,httpurlconnection,post,get
- java4_第一章_对象导论
- spark学习笔记3 spark应用程序之间的调度