汇编语言跳转指令
计算机是怎样跑起来的pdf_计算机是怎样跑起来的--程序像河
⽔⼀样流动着
⾃然界中河流的三种流动⽅式?
向着⼀个⽅向流淌;流着流着产⽣⽀流;卷成漩涡。与河流的流动⽅式⼀样,程序的流程也分为三种。“顺序执⾏”,“条件分⽀”, “循环”。
为什么说“程序是流动着的”呢?因为作为计算机⼤脑的CPU在同⼀时刻基本上只能够解释、执⾏⼀条指令。把指令和作为指令操作对象的数据排列起来就形成了程序。
程序的流程分成三种
内存中存储着程序,也是就是指令和数据。CPU配合着由时钟发⽣器发出的滴答滴答的时钟信号,从内存中读出指令,然后再依次对其进⾏解释和执⾏。
CPU中有各种各样的各司其职寄存器,其中有⼀个被称为PC寄存器,负责存储内存地址,该地址指向下⼀条即将执⾏的指令。每解决执⾏完⼀条指令,PC寄存器的值就会⾃动更新为下⼀条指令的地址。
顺序执⾏是按照指令记录在内存中的先后顺序依次执⾏的⼀种流程。⽽循环则是在程序的特定范围内反复执⾏若⼲次的⼀种流程。条件分⽀是根据若⼲条件的成⽴与否,在程序的流程中产⽣若⼲个分⽀的⼀种流程。⽆论规模多么⼤多么复杂的程序,都是通过把以上三种流程组合起来实现的。
程序的三种流程正像是河流本⾝。从⾼⼭的泉眼中涌出的清泉开形成了河流的源头(程序执⾏的起点)。
结构化程序设计
结构化程序设计是指“为了把程序编写得具有结构性,仅使⽤顺序执⾏、条件分⽀和循环表⽰程序的流程即可,⽽不再使⽤跳转指令”。
这种设计只是针对⾼级语⾔来设计的。因为跳转指令所带来的危害不⼩,会使程序陷⼊到流程错综复杂的状态,就像意⼤利⾯条那样缠绕在⼀起。
不过需要注意的是,即使使⽤了结构化处理, 在硬件上使⽤也还是跳转指令,只是说在⾼级语⾔中不⽤再写相当于跳转指令的语句了。
特殊的程序流程———中断处理
中断处理是指计算机使程序的流程突然跳转到程序中的特定地⽅,这样的地⽅被称为中断处理例程或是中断处理程序,⽽这种跳转是通过CPU所具备的硬件功能实现的。
中断处理以硬件发⽣的请求为条件,使程序的流程产⽣分⽀,因此可以说它是⼀种特殊的分⽀。可是,在诸位编写的程序中并不需要编写有关中断处理的代码。
因为处理中断请求的程序,或是内置于被烧录在计算机ROM中的BIOS系统中,或是内置于Windows等操作系统中。只要记住,计算机具有硬件上处理中断的能⼒。
特殊的程序流程———事件驱动
通常把⽤户在应⽤程序中点击⿏标或者敲击键盘这样的操作称为事件。负责检测事件的是windows。windows通过调⽤应⽤程序的WndProc()函数通知应⽤程序事件的发⽣。⽽应⽤程序则根据事件类型做出相应的处理。这种机制就是事件驱动。
可以说事件驱动也是⼀种特殊的条件分⽀,它以从Windows送来的通知为条件,根据通知的内容进⾏下⼀步的流程。要实现事件驱动,就必须把应⽤程序的WndProc()函数的起始内存地址告诉windows。
事件驱动是⼀种适⽤于GUI环境的编程风格。
读完本节后可能会觉得有点乱,不过程序的流程还是只有顺序执⾏、条件执⾏和循环这三种,这⼀点是没有改变的。
其中的顺序执⾏是最基本的程序流程,这是因为CPU中的PC寄存器的值会⾃动更新。条件分⽀和循环,在⾼级语⾔中⽤程序块表⽰,在机器语⾔和汇编语⾔中⽤跳转指令表⽰,在硬件上是通过把PC寄存器的值设为要跳转到的⽬的地的内存地址来实现。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。