Posts Tagged ‘汇编’

31st
七月

CPU如何读取、执行一条指令
马克龙 发布于: 2009年07月31日 开发与应用 标签: 评论 (0)

这几天迷上了王爽的《汇编语言》(第二版),前几章关于计算机系统方面的翔实生动的讲解令人印象深刻。
在第二章“寄存器(CPU的工作原理)”中,在逻辑结构、宏观过程的层面上,用图示的形式展示了8086CPU是如何读取、执行一条指令的。这一篇幅可以让你对CPU的工作原理有一个清晰、直观的认识,更容易理解各种程序在底层被解释或编译成二进制代码后是如何被计算机执行的。
8086CPU的工作过程可以简要描述如下:
从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;(CS:IP的内容为CPU提供了执行指令的地址)
IP=IP+所读指令的长度,从而指向下一条指令;
执行指令。然后转到步骤1,重复这个过程。
以下图示描述了8086CPU如何从内存2000H×16+0000H处读取指令并执行。

这几天迷上了王爽的《汇编语言》(第二版),前几章关于计算机系统方面的翔实生动的讲解令人印象深刻。

在第二章“寄存器(CPU的工作原理)”中,在逻辑结构、宏观过程的层面上,用图示的形式展示了8086CPU是如何读取、执行一条指令的。这一篇幅可以让你对CPU的工作原理有一个清晰、直观的认识,更容易理解各种程序在底层被解释或编译成二进制代码后是如何被计算机执行的。

8086CPU的工作过程可以简要描述如下:

  1. 从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;(CS:IP的内容为CPU提供了执行指令的地址)
  2. IP=IP+所读指令的长度,从而指向下一条指令;
  3. 执行指令。然后转到步骤1,重复这个过程。

以下图示描述了8086CPU如何从内存2000H×16+0000H处读取指令并执行。

(全文…)

27th
七月

认识和学习汇编
马克龙 发布于: 2009年07月27日 开发与应用 标签: 评论 (0)

程序设计语言可分为低级语言(Low-level Language)和高级语言(High-level Language)。机器语言(Machine Language)和汇编语言(Assembly Language)属于低级语言,直接用计算机指令编写程序,依赖于平台而缺乏移植性。而C、C++、Java、Python等属于高级语言,用语句(Statement)编写程序,语句是计算机指令的抽象表示。高级语言模拟了自然语言的词法(Lexical)规则和语法(Grammar)规则,具有高度抽象性,解除了低级语言对程序员抽象思维的束缚。但计算机只能识别和执行由二进制组成的机器程序,所以汇编或高级语言都需要经过解释或编译成机器程序,才能被计算机执行。

汇编语言是计算机系统提供给用户的最快、最有效的语言,也是能对硬件直接编程的语言。因此,对空间和时间要求很高的程序,或需要直接控制硬件的程序,必须使用汇编语言进行程序设计。一言以蔽之汇编语言是程序员的必修语言。

百度百科有这么一段描述:“至今为止,还没有程序员敢断定汇编语言是不需要学的,一个不懂汇编语言的程序员,只是三流的程序员,这是大部分人的共识,同时,技术精湛的汇编程序员,已经脱离软件开发,挤身于工业电子编程中……但是真正能学到精通的却不多,它难学,难用,适用范围小,虽然简单,但是过于灵活,学习过高级语言的人去学习汇编比一开始学汇编的人难得多,但是学过汇编的人学习高级语言却很容易,简从繁易,繁从简难。”

总之,汇编语言是程序员的必修语言。
目前国内最好的汇编网站是:http://www.aogosoft.com 其站点aogo,就是一个在工业方面有所成就的工程师,有意者可多参考。
其次就是罗云彬的汇编站点:http://asm.yeah.net 这个大概是国内建站时间最长的汇编站点,其编写的《Windows下汇编语言程序设计》一书。是站长十几年的经验的集合,不妨看看。
熟悉指令,可以尝试破解,加强兴趣,参考看雪学院:http://www.pediy.com,国内最好的破解组织,其中看雪与众高手打造的破解书《加密 解密完全方案》非常有名。豆瓣上有这么一点书评:“

(全文…)