@(讀書(shū)筆記)[匯編語(yǔ)言泼橘,計(jì)算機(jī)]
基礎(chǔ)知識(shí)
為什么要有匯編語(yǔ)言
CPU——電平脈沖(高低平)——二進(jìn)制數(shù)字——機(jī)器指令——機(jī)器語(yǔ)言——難以人類(lèi)大腦的記憶與檢查——助記碼(匯編指令凝危,在機(jī)器指令中有對(duì)應(yīng))——再加上一些輔助語(yǔ)言(偽指令等,方便編譯器處理阔涉,沒(méi)有機(jī)器指令對(duì)應(yīng)缆娃,CPU也不處理)
計(jì)算機(jī)核心部分
- CPU
有計(jì)算單元及一系列寄存器(AX, BX, CX, DX, DS, CS, SS, ES, SP, IP) - 存儲(chǔ)器
內(nèi)存劃分為存儲(chǔ)單元(以1字節(jié)為一單元),每一個(gè)單元有一個(gè)編號(hào)瑰排。這就是內(nèi)存的地址贯要,方便CPU讀寫(xiě)信息。 - 總線
總線負(fù)責(zé)在CPU和其它芯片之間傳輸信息椭住。為了讓CPU知道哪一部分的信息要被看作指令崇渗,哪一部分要被看作數(shù)據(jù),又把總線邏輯上分為地址總線京郑、數(shù)據(jù)總線和控制總線宅广。
- 至于這些總線的傳輸信息能力,則是看這些總線有多少根些举,因?yàn)槊恳粋€(gè)導(dǎo)線都有兩種狀態(tài)(高壓和低壓)對(duì)應(yīng)二進(jìn)制的0和1跟狱。
- 存儲(chǔ)器芯片
我們都知道存儲(chǔ)器分為RAM(隨機(jī)存儲(chǔ)器)和ROM(只讀存儲(chǔ)器)。但是户魏,除了我們常規(guī)意義上說(shuō)的內(nèi)存和裝有電腦的BIOS的MBR驶臊。其實(shí)每一個(gè)硬件對(duì)應(yīng)的芯片也有BIOS,有些還有RAM叼丑。比如顯卡关翎。
所以我們可以這么認(rèn)為,對(duì)硬件的操作鸠信,在底層上來(lái)說(shuō)都是對(duì)存儲(chǔ)器的讀寫(xiě)操作纵寝。 - 內(nèi)存
為了不讓CPU有額外的控制變量的花銷(xiāo),整個(gè)計(jì)算機(jī)把所有的內(nèi)存邏輯上看作是一個(gè)整體星立。也就是說(shuō)爽茴,內(nèi)存地址空間是統(tǒng)一編號(hào)的,每一個(gè)地址對(duì)應(yīng)唯一的一個(gè)存儲(chǔ)單元贞铣。
總之闹啦,其實(shí)整個(gè)底層邏輯很簡(jiǎn)單,CPU充當(dāng)大腦管理計(jì)算機(jī)各個(gè)硬件設(shè)備(但不是直接管理辕坝,而是通過(guò)每一個(gè)硬件對(duì)用的芯片窍奋,管理芯片,也就管理了硬件)酱畅。方式就是通過(guò)地址總線定位要處理的芯片在內(nèi)存中的位置琳袄,然后從數(shù)據(jù)總線讀取要讀寫(xiě)的數(shù)據(jù),從控制總線來(lái)判斷是要讀還是寫(xiě)纺酸,還是別的操作窖逗。
寄存器
物理地址
由于8086(本書(shū)講解對(duì)象)是16位架構(gòu)的CPU,也就是說(shuō)其內(nèi)部總線是16位餐蔬,只能傳輸16位二進(jìn)制數(shù)字碎紊。但是我們的內(nèi)存比較大佑附,要求外部地址總線有20根,也就是說(shuō)對(duì)一個(gè)內(nèi)存地址的描述仗考,需要20位二進(jìn)制數(shù)字音同。所以我們引進(jìn)了段地址+偏移地址來(lái)解決這個(gè)問(wèn)題。于是20位的內(nèi)存地址就叫做物理地址秃嗜。在CPU中會(huì)根據(jù)段地址和偏移地址計(jì)算出物理地址权均。具體辦法就是:段地址*16+偏移地址
類(lèi)型
- CS+IP是一對(duì),cs是段地址锅锨,IP是偏移地址叽赊。用來(lái)存儲(chǔ)代碼段,也就是當(dāng)前的指令必搞。
- DS+[……]是一對(duì)必指,DS存儲(chǔ)某數(shù)據(jù)的段地址,其偏移地址就用方括號(hào)加上具體的數(shù)值給出恕洲。比如偏移地址是0取劫,表示為[0]。
- SS+SP是一對(duì)研侣,表示椘仔埃空間的段地址和偏移地址。検睿空間的SP是指向棧頂惦银,且其移動(dòng)是以字為單位,也就是2byte為單位末誓。一次移動(dòng)兩個(gè)存儲(chǔ)單元扯俱。