汇编学习笔记(一)

基础知识

汇编语言,有 3 类指令组成:

  1. 汇编指令:机器码的助记符,有对应的机器码。
  2. 伪指令:没有对应机器码,由编译器执行,计算机并不执行。
  3. 其他符号:如+、-、*、\,由编译器识别,没有对应机器码。

核心是编译指令。每一种 cpu 都有自己的汇编指令集。

存储器就是内存,存储器被划分为多个存储单元,从 0 开始顺序编号,一个存储单元就是一个字节(Byte)。存储器中指令和数据没有任何区别,都是二进制信息。

cpu 有 3 类总线:地址总线、数据总线、控制总线。

一个 cpu 有 n 根地址总线,则可以寻找 2 的 n 次方个内存单元。
n 根数据总线一次能传输 n 位,即 n bit。

控制总线是一些不同控制线的集合,有多少根控制总线,就意味着 cpu 提供了对外部器件的多少种控制。

内存地址空间:对 cpu 来说,系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受 cpu 寻址能力的限制。这个逻辑存储器即是所说的内存地址空间。

寄存器

一个典型的 cpu 由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。前一章说的总线,相对于 cpu 内部来说是外部总线。

不同 cpu,寄存器的个数、结构都不同。

通用寄存器

8086cpu 所有寄存器都是 16 位。AX、BX、CX、DX 这 4 个寄存器通常用来存放一般性数据,被称为通用寄存器。都可分为类似 AH 和 AL,BH 和 BL...

由于 8086 有 20 位地址总线,但 8086 是 16 位的,即在内部一次性处理、传输、暂时存储的地址只有 16 位,所以 8086 采用在内部用 2 个 16 位地址合成的方法来形成一个 20 位的物理地址。

地址加法器采用 物理地址=段地址x16+偏移地址 来合成物理地址。(也即左移 4 位,也即 x10H)。本质就是基础地址+偏移地址=物理地址

cpu 可以用不同的段地址和偏移地址形成同一个物理地址。

段寄存器

段地址存放在段寄存器中,8086 有 4 个段寄存器:CS、DS、SS、ES

CS 和 IP 是 8086 中两个最关键的寄存器,它们共同表示了 cpu 当前要读取指令的地址。CS 为代码段寄存器,IP 为指令指针寄存器。

问:cpu 根据什么将内存中的信息看做是指令?
答:cpu 将 CS:IP 指向的内存单元中的内容看做是指令。

在 cpu 中,程序员能用指令读写的部件只有寄存器。8086 大部分寄存器的值,都可以用mov来修改,mov称为传送指令。但不能用来设置 CS、IP 的值。
若想修改 CS、IP,可以用jmp指令,形如jmp 段地址:偏移地址
若仅想修改 IP 的内容,可用形如jmp 某一合法寄存器,如jmp ax,可修改 IP 为 ax 中的值。
mov可以操作的有:寄存器和寄存器,立即数到寄存器,寄存器和段寄存器,寄存器和内存单元,段寄存器和内存单元

代码段

我们可以根据需要,将一组内存单元定义为一个段。我们可以将长度为 N(N<=64KB,因是 16 位)的一组代码,存在一组地址连续、起始地址为 16 的倍数的内存单元中,从而定义了一个代码段。那么代码段是如何被执行呢?只要将 CS:IP 指向代码段中第一条指令的首地址。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一.认识汇编语言 要认识汇编语言,还得从编程语言的发展说起,语言有以下几种分类,其发展都是为了让我们更容易去操纵计...
    WellsCai阅读 1,227评论 0 1
  • 汇编语言的种类 目前讨论比较多的汇编语言有:8086 汇编(8086处理器是16bit 的 CPU)Win32 汇...
    7c205247047d阅读 2,409评论 1 6
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,875评论 0 1
  • 编程语言的发展 机器语言由0和1组成 汇编语言(Assembly Language)用符号代替了0和1,比机器语言...
    阿凡提说AI阅读 4,609评论 0 15
  • 汇编总结 汇编的发展史 机械语言 由0和1组成的机器指令(如:0101 0001 1101 0110) 汇编语言(...
    iChuck阅读 1,417评论 1 8

友情链接更多精彩内容