官术网_书友最值得收藏!

1.3 決定程序流程的程序計(jì)數(shù)器

只有1行的有用程序是很少見的,機(jī)器語言的程序也是如此。在對(duì)CPU有了一個(gè)大體印象后,接下來我們看一下程序是如何按照流程來運(yùn)行的。

圖1-4是程序啟動(dòng)后內(nèi)存內(nèi)容的模型。用戶發(fā)出啟動(dòng)程序的指示后,Windows等操作系統(tǒng)操作系統(tǒng)(operating system)是指管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序。關(guān)于操作系統(tǒng)的功能,第9章有詳細(xì)說明。會(huì)把硬盤中保存的程序復(fù)制到內(nèi)存中。示例中的程序?qū)崿F(xiàn)的是將123和456兩個(gè)數(shù)值相加,并將結(jié)果輸出到顯示器上。正如前文所介紹的那樣,存儲(chǔ)指令和數(shù)據(jù)的內(nèi)存,是通過地址來劃分的。由于使用機(jī)器語言難以清晰地表明各地址存儲(chǔ)的內(nèi)容,因此這里我們對(duì)各地址的存儲(chǔ)內(nèi)容添加了注釋。實(shí)際上,一個(gè)命令和數(shù)據(jù)通常被存儲(chǔ)在多個(gè)地址上,但為了便于說明,圖1-4中把指令、數(shù)據(jù)分配到了一個(gè)地址中。

圖1-4 內(nèi)存中配置的程序示例(顯示相加的結(jié)果)

地址0100是程序運(yùn)行的開始位置。Windows等操作系統(tǒng)把程序從硬盤復(fù)制到內(nèi)存后,會(huì)將程序計(jì)數(shù)器(CPU寄存器的一種)設(shè)定為0100,然后程序便開始運(yùn)行。CPU每執(zhí)行一個(gè)指令,程序計(jì)數(shù)器的值就會(huì)自動(dòng)加1。例如,CPU執(zhí)行0100地址的指令后,程序計(jì)數(shù)器的值就變成了0101(當(dāng)執(zhí)行的指令占據(jù)多個(gè)內(nèi)存地址時(shí),增加與指令長(zhǎng)度相應(yīng)的數(shù)值)。然后,CPU的控制器就會(huì)參照程序計(jì)數(shù)器的數(shù)值,從內(nèi)存中讀取命令并執(zhí)行。也就是說,程序計(jì)數(shù)器決定著程序的流程。

主站蜘蛛池模板: 青川县| 麦盖提县| 武城县| 砚山县| 永新县| 柯坪县| 巴青县| 永兴县| 阜新市| 基隆市| 文成县| 武隆县| 永嘉县| 奉节县| 华安县| 陇川县| 彭山县| 浪卡子县| 南投县| 湖南省| 河西区| 南澳县| 钟山县| 商洛市| 达拉特旗| 海阳市| 金乡县| 汝州市| 仁寿县| 班玛县| 朝阳区| 当阳市| 都匀市| 乐至县| 广德县| 斗六市| 小金县| 准格尔旗| 靖远县| 娄烦县| 遵义县|