《汇编语言》读书笔记(1) 初识汇编

来源:互联网 发布:软件开发行业 编辑:程序博客网 时间:2024/04/29 16:58

对我这样长期从事.Net开发的程序员而言,汇编是低级得不能再低级的语言,充满了神秘和艰涩。随着对汇编语言理解的深入,越来越领会到其中的魅力。下面是对汇编相关的一些基础知识的初步了解。


机器语言与汇编语言

计算机把各种指令用二进制格式保存在存储器里,并由CPU处理,就是机器语言。然而程序员直接阅读和编写机器语言的难度较大,而且容易错误,因此产生了汇编语言。汇编语言的主要部分是汇编指令,而汇编指令实质就是机器语言的别名、助记符,是便于程序员记忆的格式。
要注意不同的CPU有不同的机器指令集,对应汇编指令集也不同。


汇编语言的组成

汇编语言有3类指令组成:汇编指令、伪指令、其它符号。
汇编指令上面说了,是机器语言的助记符,每条汇编指令都有与之完全对应的机器码。
伪指令和其他符号都是由汇编编译器执行的指令,没有对应的机器码。


CPU对存储器的读写

CPU对存储器的读写通过地址总线、数据总线、控制总线共同完成。以读数据为例,CPU先通过地址总线发出要读取的存储单元地址,再通过控制总线发出读命令,存储器通过数据总线把对应的数据传送到CPU。
这是一个很简单的过程,但习惯了上层开发的我老觉得会不会有并发问题。呵呵,实际上CPU和内存总是配合的很好,值得学习。


我的系统是多少位?

CPU的位数决定了运算器可处理多少位的数据、寄存器的最大宽度、寄存器和运算器之间的数据传输位数。
地址总线的位数决定了系统的寻址能力。
数据总线的位数决定了CPU与外部进行数据交换时每次的数据传输量。
控制总线的位数决定了CPU对系统中其他器件的控制能力。
操作系统的位数呢?操作系统的位数是与CPU对应的,例如64位操作系统增加了一些64位CPU的指令,同时和32位CPU兼容。而如果用32位操作系统控制64位CPU,基本上操作系统就只把它当做32位CPU来用了。


8086CPU工作过程

  • 寄存器CS、IP保存指令的段地址、偏移地址;
  • 把CS、IP的内容送入地址加法器,计算出物理地址(段地址*16+偏移地址);
  • 地址加法器把物理地址送到输入输出控制电路;
  • 输入输出控制电路把物理地址送到地址总线;
  • 物理地址存放的机器指令通过数据总线送入CPU;
  • 输入输出控制电路把机器指令送入指令缓冲器;
  • 根据机器指令的长度,寄存器IP的值自动增加;
  • 执行控制器执行机器指令;
  • 重复整个过程


调试工具:Debug

Debug是Dos、Windows都提供的实模式调试工具,可用来查看寄存器和内存,跟踪汇编程序的执行。对Windows操作系统,在控制台下输入“debug”即可进入。
常用的Debug命令有R命令、D命令、U命令、A命令、E命令、T命令、P命令、Q命令等。