《汇编语言(王爽)》读书笔记

最近在读王爽版的《汇编语言》,把需要记录的内容记录在这里。

第一章 基础知识


  • 编译器:将汇编指令转换成机器指令的翻译程序。
  • 一个CPU可以引出3种总线的宽度标志了这个CPU的不同方面的性能:
  • 地址总线的宽度决定了CPU的寻址能力;
  • 数据总线的宽度决定了CPU与其他器件进行数据传送时的一次数据传送量;
  • 控制总线的宽度决定了CPU对系统中的其他器件的控制能力。
  • CPU对外部设备不能直接控制,直接控制这些设备进行工作的是插在扩展插槽上的接口卡。CPU通过总线向接口卡发送命令,接口卡根据CPU的命令控制外设进行工作。
  • 存储器分为两类:随机存储器(RAM)和只读存储器(ROM)。
    随机存储器可读可写,但是必须带电存储,关机后存储的内容丢失;
    只读存储器只能读取不能写入,关机后其中的内容不丢失。

第二章 寄存器


  • 8086cpu所有寄存器都是16位的。
  • 进行数据传送或运算时,指令的两个操作对象的位数应该是一致的。
  • 地址加法器将两个16位的段地址和偏移地址合成一个20位的物理地址,物理地址=段地址16+偏移地址*。
  • 段寄存器:CS、DS、SS、ES。
  • CS为代码段寄存器,IP为指令指针寄存器。8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。读取一条指令后,IP中的值自动增加,以使CPU可以读取下一条指令。
  • 在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFHIP=0000H,即在8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。
  • 修改CS:IP,使用jmp 段地址:偏移地址;修改IP,使用某一合法寄存器

第三章 寄存器(内存访问)


  • 字单元:存放一个字型数据(16位)的内存单元,起始地址为N的字单元简称为N地址字单元。
  • DS寄存器通常用来存放要访问的数据的段地址。
mov bx, 1000H
mov ds, bx
mov al, [0] ;将10000H(1000:0)中的数据读到al中
  • 8086CPU不支持将数据直接送入段寄存器,需要寄存器进行中转。
  • 段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任何时刻,SS:SP指向栈顶元素。
  • 8086CPU中,入栈时,栈顶从高地址低地址方向增长。
  • 栈空,SS:SP指向栈空间最高地址单元的下一个单元。
  • push ax的时候,CPU先将SP=SP-2,使得SS:SP指向新的栈顶单元,然后再将寄存器中的数据送入SS:SP指向的内存单元处;pop ax是先读取SS:SP处的数据,后改变SP=SP+2。
  • 如果使用10000H~1FFFFH这段空间当作栈段,初始状态是空的,此时SS=1000H,SP=0
    因为当栈中只有一个元素的时候SS=1000H,SP=FFFEH(2的倍数,8086CPU的入栈和出栈操作都是以字为单位进行的),唯一一个元素出栈后,SP=SP+2,SP=0。
  • 一个堆栈最大为64KB,因为SP的范围是0~FFFFH,从栈空时候SP=0,再到栈满SP=0。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,763评论 8 114
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 7,300评论 0 1
  • 第六章 断 “什么?一个怪物的叫声?”诺克萨斯行军营中,一个身着黑色长袍的人形站在前方,德莱厄斯则站立在下方。 很...
    枉算尽谁的心机阅读 2,507评论 0 0
  • 作为一个社区类的网站,我觉得它的核心价值是“方便,信任,实惠”,针对这些我想说说我的建议,纯属个人看法,不喜勿...
    b8744db0178b阅读 1,747评论 0 0
  • 我在沙发这头,母亲在那头,和母亲你一句我一言地聊着天,聊着聊着母亲竟然抹起了眼泪,母亲很少这样的,我顿时哑...
    彦渊阅读 4,381评论 2 2

友情链接更多精彩内容