第1章 基礎(chǔ)知識(shí)_第1頁(yè)
第1章 基礎(chǔ)知識(shí)_第2頁(yè)
第1章 基礎(chǔ)知識(shí)_第3頁(yè)
第1章 基礎(chǔ)知識(shí)_第4頁(yè)
第1章 基礎(chǔ)知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章

基礎(chǔ)知識(shí)

1.1數(shù)與數(shù)制1.2內(nèi)存儲(chǔ)器的管理方式1.3寄存器1.4微型計(jì)算機(jī)的硬件結(jié)構(gòu)1.1數(shù)

數(shù)

制微型計(jì)算機(jī)亦稱(chēng)為微電腦,它僅能識(shí)別由0和1組成的機(jī)器語(yǔ)言和二進(jìn)制數(shù)。由于十六進(jìn)制表示的數(shù)更簡(jiǎn)短直觀,與二進(jìn)制數(shù)轉(zhuǎn)換也很方便,所以,十六進(jìn)制在計(jì)算機(jī)中也被廣泛使用。1.1.1位與字節(jié)微型計(jì)算機(jī)中使用二進(jìn)制數(shù)表示和存儲(chǔ)信息,位(bit)是微型計(jì)算機(jī)存儲(chǔ)信息的最小單位。一個(gè)位有兩種狀態(tài),分別為0狀態(tài)與1狀態(tài),可以表示二進(jìn)制數(shù)的0和1。8位二進(jìn)制數(shù)稱(chēng)為一個(gè)字節(jié)(byte,縮寫(xiě)為B),微型計(jì)算機(jī)中表示字母、符號(hào)的二進(jìn)制編碼的長(zhǎng)度就是一個(gè)字節(jié)。例如,字母“A”與星號(hào)“*”的二進(jìn)制編碼,分別為01000001與00101010。計(jì)算機(jī)怎么知道01000001代表字母“A”呢?它是以這樣的原理設(shè)計(jì)和工作的:當(dāng)你從鍵盤(pán)上鍵入“A”時(shí),系統(tǒng)會(huì)從鍵盤(pán)上收到一個(gè)二進(jìn)制數(shù),將這一二進(jìn)制數(shù)設(shè)定成01000001,存放于存儲(chǔ)器的一個(gè)存儲(chǔ)單元內(nèi)。通過(guò)程序中的指令你可以在存儲(chǔ)器中隨意地移動(dòng)此二進(jìn)制數(shù),而當(dāng)程序中的指令把它送往屏幕或從打印機(jī)輸出時(shí),應(yīng)為字母“A”。計(jì)算機(jī)就是以這樣的約定來(lái)工作并以此來(lái)編制程序的。為了便于說(shuō)明和使用,字節(jié)中的各位自右向左從0開(kāi)始編號(hào)到7,比如字母“A”的各位分別如下:字節(jié)的位編號(hào):76543210字節(jié)的位內(nèi)容:01000001或b7b6b5b4b3b2b1b001000001210等于1024,表示1K。例如,含有512KB的存儲(chǔ)器,是指計(jì)算機(jī)的存儲(chǔ)容量為512×1024×8位或512×1024個(gè)字節(jié)。由于PC機(jī)以及其兼容機(jī)型所用的微處理器是16位的CPU,因此它能在存儲(chǔ)器單元和寄存器中存取一個(gè)16位的二進(jìn)制數(shù)。16個(gè)位(2個(gè)字節(jié))稱(chēng)為一個(gè)字(word)。字中的各位自右向左從0開(kāi)始編號(hào)至15,如下面是表示字母“PC”的字:字的位編號(hào):15141312111098︱76543210字的位內(nèi)容:?01?01?0?0?00︱01000011b15b14b13b12b11b10b9b801010000b7b6b5b4b3b2b1b0010000111.1.2ASCII碼為了標(biāo)準(zhǔn)化,微型計(jì)算機(jī)采用ASCII(AmericanStandardCodeforInformationInterchange)碼。使用標(biāo)準(zhǔn)碼可以簡(jiǎn)化不同微型計(jì)算機(jī)之間的數(shù)據(jù)傳輸問(wèn)題。IBMPC所使用的8位延伸ASCII碼可以提供256個(gè)字符。ASCII碼的特點(diǎn)如下:(1)數(shù)字的ASCII碼按照0~9順序逐漸增大;(2)數(shù)字的ASCII碼小于字母的ASCII碼;(3)字母的ASCII碼按26個(gè)字母順序逐漸增大;(4)大寫(xiě)字母的ASCII碼小于小寫(xiě)字母的ASCII碼。第8章會(huì)告訴你如何在屏幕上顯示所有的256個(gè)ASCII碼字符。附錄A是ASCII碼表。1.1.3二進(jìn)制數(shù)及運(yùn)算由于微型計(jì)算機(jī)只能區(qū)分0與1,所以微型計(jì)算機(jī)使用二進(jìn)制數(shù)。位(bit)就是二進(jìn)制數(shù)(BinaryDigit)的縮寫(xiě)。一個(gè)十進(jìn)制數(shù)241=2×102+4×101+1×100,10稱(chēng)為基數(shù),102、101、100稱(chēng)為各位的“位權(quán)”。同理,一個(gè)二進(jìn)制數(shù)1101=1×23+1×22+0×21+1

×20,2稱(chēng)為基數(shù),23、22、21、20亦稱(chēng)為各位的“位權(quán)”。以8位二進(jìn)制數(shù)為例,當(dāng)每一位均為1時(shí),各位的“位權(quán)”為:字節(jié)位的位置值(位權(quán)):1286432168421字節(jié)位的值:1?11111118位二進(jìn)制數(shù)的“位權(quán)”從右至左依次為1,2,4,…,128,所有“位權(quán)”的和為1+2+4+…+128=255或(28-1)。前面的0100001可以表示字母“A”,但是,0100001也可以表示數(shù)值65(十進(jìn)制),所以在選用數(shù)據(jù)時(shí)必須確認(rèn)0100001究竟是表示數(shù)值65還是字母“A”,區(qū)分方法如下:(1)如果程序中所定義的數(shù)據(jù)項(xiàng)是作為算術(shù)運(yùn)算用的,則01000001表示的是二進(jìn)制數(shù)值,等于十進(jìn)制的65。(2)如果程序中所定義的數(shù)據(jù)項(xiàng)是作為說(shuō)明字符使用的,則01000001表示的是字母“A”。

當(dāng)你開(kāi)始寫(xiě)程序時(shí),由于你必須定義每一個(gè)數(shù)據(jù)項(xiàng)的用途,所以將會(huì)發(fā)現(xiàn)此種區(qū)別是十分明顯和重要的。二進(jìn)制數(shù)并不只限用于8位。由于個(gè)人微型計(jì)算機(jī)的微處理器8086是16位的CPU,所以它可以處理16位的二進(jìn)制數(shù),16位二進(jìn)制數(shù)的范圍是0~65535(即216-1)。而32位的CPU允許使用32位,其范圍是0~4294967295(即232-1)。1.二進(jìn)制的算術(shù)運(yùn)算微型計(jì)算機(jī)只能執(zhí)行二進(jìn)制數(shù)的算術(shù)運(yùn)算。因此,一個(gè)匯編語(yǔ)言程序設(shè)計(jì)員必須熟悉二進(jìn)制數(shù)的格式與二進(jìn)制數(shù)的運(yùn)算規(guī)則。二進(jìn)制加法:0+0=01+0=11+1=10(有進(jìn)位)1+1+1=11(有進(jìn)位)例如,練習(xí)做01000001與00101010的加法,此處它們分別代表十進(jìn)制數(shù)65與42。二進(jìn)制01000001+00101010

01101011十進(jìn)制65+42107將二進(jìn)制和為1的權(quán)相加,核對(duì)此二進(jìn)制數(shù)的和確實(shí)是等于107。下面再練習(xí)另外一個(gè)例子。二進(jìn)制00111100+00110101

01110001十進(jìn)制60

+531132.負(fù)數(shù)在微型計(jì)算機(jī)中數(shù)的正負(fù)號(hào)是用0和1表示的,0表示正號(hào),1表示負(fù)號(hào),并用最左邊(最高)的位表示數(shù)的正負(fù)號(hào)。前面所提到的二進(jìn)制數(shù),其最左邊(最高)的位都是零,所以均為正值。而負(fù)的二進(jìn)制數(shù),其最左邊(最高)的位必須為1,且負(fù)數(shù)是以2的補(bǔ)碼來(lái)表示的。二進(jìn)制負(fù)數(shù)補(bǔ)碼的求法是:將二進(jìn)制負(fù)數(shù)的絕對(duì)值,各位取反(0變1,1變0)再加1。例如,下面以-65為例。-65的絕對(duì)值+65:01000001?各位取反:10111110加1:10111111(等于-65的補(bǔ)碼)若直接將10111111的各位上1的“位權(quán)”值加起來(lái),將發(fā)現(xiàn)其結(jié)果并不是-65。事實(shí)上,在計(jì)算機(jī)內(nèi)如果一個(gè)二進(jìn)制數(shù)其最左邊的位是1,則我們可以判定它為負(fù)數(shù),并且是用補(bǔ)碼表示。若要得到一個(gè)負(fù)二進(jìn)制數(shù)的絕對(duì)值(稱(chēng)為真值),只要重復(fù)上述方法,即各位取反,再加1就可得到真值。例如:二進(jìn)制值:10111111(-65的補(bǔ)碼)各位取反:01000000加1:01000001(+65的補(bǔ)碼)微型計(jì)算機(jī)中的數(shù)都是用補(bǔ)碼表示和運(yùn)算的。采用補(bǔ)碼的好處是加法和減法都可以統(tǒng)一為加運(yùn)算。例如,將+65的補(bǔ)碼與-65的補(bǔ)碼相加,其結(jié)果將等于零。01000001(+65的補(bǔ)碼)+10111111(-65的補(bǔ)碼)(1)000000008個(gè)位均為0,而最左邊的進(jìn)位1將自動(dòng)丟棄。若有進(jìn)位進(jìn)入正負(fù)號(hào)位(最左面),且此正負(fù)號(hào)位又有進(jìn)位產(chǎn)生的話,即雙高位都有進(jìn)位,則結(jié)果是正確的。微型計(jì)算機(jī)中二進(jìn)制數(shù)的減法,是用加法實(shí)現(xiàn)的。方法是:將減數(shù)(補(bǔ)碼)再求2的補(bǔ)碼,即各位取反再加上1,然后將此結(jié)果與被減數(shù)相加。例如:65-42=65+(-42),-42的絕對(duì)值二進(jìn)制數(shù)表示為00101010,所以,(-42)2的補(bǔ)碼表示為11010110。

65

+(-42)2301000001+11010110(1)00010111其結(jié)果等于23是正確的。此次仍然有進(jìn)位進(jìn)入正負(fù)號(hào)位,而且也有最高位的進(jìn)位產(chǎn)生。

若你對(duì)2的補(bǔ)碼表示還不十分清楚,試考慮下面的問(wèn)題。對(duì)于二進(jìn)制數(shù)00000001,試加上何值才能使它等于00000000。就十進(jìn)制而言,答案是-1。在二進(jìn)制中,我們可以試用11111111:00000001+11111111(1)00000000丟失進(jìn)位1,結(jié)果為0正確,即可得知二進(jìn)制數(shù)11111111是-1的2的補(bǔ)碼,另有:0-?(+1)

-100000000

-?0000000111111111

00000000+1111111111111111

下面是二進(jìn)制數(shù)補(bǔ)碼按遞減順序排列的情況。+300000011+200000010+100000001000000000-111111111-211111110-3111111011.1.4十六進(jìn)制數(shù)及運(yùn)算假設(shè)現(xiàn)在你想要觀察存儲(chǔ)器中某些存儲(chǔ)單元的內(nèi)容,想知道由相鄰四個(gè)字節(jié)(也即兩個(gè)字)所組成的二進(jìn)制數(shù)值。由于四個(gè)字節(jié)是32個(gè)位的二進(jìn)制數(shù),如果用二進(jìn)制數(shù)表示,顯然位數(shù)太多,出現(xiàn)了難讀、難寫(xiě)、難記的問(wèn)題,現(xiàn)在分析如下:二進(jìn)制:01011001

00110101

10111001

11001110十進(jìn)制:59351191214

由于有些數(shù)需要用到兩個(gè)數(shù)字,如11,12,14,所以我們擴(kuò)展數(shù)字系統(tǒng),使得10=A,11=B,12=C,13=D,14=E,15=F。利用此種縮寫(xiě)方法,上述四個(gè)字節(jié)的內(nèi)容就可以簡(jiǎn)潔地表示為:5935B9CE這種數(shù)字系統(tǒng)使用了“數(shù)字”0到9、A到F,由于共有16個(gè)數(shù)字,所以我們稱(chēng)它為十六進(jìn)制表示法。表1-1列出了從0到15的二進(jìn)制、十進(jìn)制以及十六進(jìn)制的表示法。表1-1二進(jìn)制、十進(jìn)制和十六進(jìn)制表示法

二進(jìn)制十進(jìn)制十六進(jìn)制二進(jìn)制十進(jìn)制十六進(jìn)制000000100088000111100199001022101010A001133101111B010044110012C010155110113D011066111014E011177111115F匯編語(yǔ)言使用了十六進(jìn)制的格式。經(jīng)過(guò)匯編的目標(biāo)程序也是以十六進(jìn)制表示所有的地址、機(jī)器指令碼以及常數(shù)。在使用DOSDEBUG幫助調(diào)試程序時(shí),同樣也是使用十六進(jìn)制格式表示所有地址和存儲(chǔ)單元內(nèi)容的。下面是一些十六進(jìn)制算術(shù)運(yùn)算例子。在十六進(jìn)制中,是逢十六進(jìn)位的。6 5 F F 10FF+4

+8

+1

+F

+10

+1A D 10 1E 20 100

(1)十六進(jìn)制的20等于十進(jìn)制的32,十六進(jìn)制的100等于十進(jìn)制的256,而十六進(jìn)制的1000則等于十進(jìn)制的4096。(2)本書(shū)有關(guān)數(shù)的表示,通常是采用十六進(jìn)制,例如,4BH,其中,H表示十六進(jìn)制,或加前綴說(shuō)明寫(xiě)成Hex4B;在二進(jìn)制中寫(xiě)成Binary01001011或01001011B;十進(jìn)制中則寫(xiě)成75。以十進(jìn)制表示時(shí),通常前面不加前綴說(shuō)明,后面也不加后綴說(shuō)明。注意:在DEBUG狀態(tài)下數(shù)、地址都默認(rèn)為是十六進(jìn)制,而不允許加后綴說(shuō)明。1.2內(nèi)存儲(chǔ)器的管理方式8086/8088匯編語(yǔ)言對(duì)內(nèi)存儲(chǔ)器的管理是按段進(jìn)行的,段(Segment)是存儲(chǔ)器中的一塊區(qū)域,它的最大長(zhǎng)度為64KB(1KB等于1024×8)。段的起始位置可以出現(xiàn)在存儲(chǔ)器中的任一節(jié)邊界位置(ParagraphBoundary)上,節(jié)邊界位置是實(shí)際地址能被16整除的位置,例如,20000H,445F0H等,最后一位總是0H。

一般的程序均含有下列三個(gè)主要段。1.指令段(CodeSegment)指令段內(nèi)含有將要被執(zhí)行的機(jī)器指令。一般來(lái)說(shuō),第一條可執(zhí)行的指令通常位于指令段的起始位置。指令段寄存器(CS)則指示出指令段的起始位置。2.數(shù)據(jù)段(DataSegment)數(shù)據(jù)段內(nèi)含有已定義的數(shù)據(jù)欄、常數(shù)、以及程序中所需要的工作區(qū)(即存放中間結(jié)果和結(jié)果的區(qū)域)。數(shù)據(jù)段寄存器(DS)指示出數(shù)據(jù)段的起始位置。3.堆棧段(StackSegment)在堆棧段內(nèi)含有兩種返回位置(即返回地址),一種是程序返回系統(tǒng)的位置(地址),另一種則為被調(diào)用的子程序返回其主程序所需要的位置(地址)。堆棧段寄存器(SS)指示出堆棧段的起始位置。另外,還有一個(gè)段寄存器,稱(chēng)為附加段寄存器(ES),它具有特殊的用途。圖1-1是SS、DS與CS寄存器的示意圖,段與寄存器一般是以此順序,但不一定非要按此順序。圖1-1段與寄存器圖1-1中的三個(gè)寄存器分別含有每一個(gè)段的起始位置(地址),且各段都以節(jié)邊界位置開(kāi)始,即實(shí)際地址的最低位是Hex0。在一個(gè)程序中,存儲(chǔ)器的所有存儲(chǔ)單元的位置(地址)都是以相對(duì)于段的起始位置(地址)的差距來(lái)確定的。此種相對(duì)于段起始位置的差距稱(chēng)為偏移量或偏移地址,本教材以后均采用偏移地址來(lái)描述這個(gè)差距值。差距的長(zhǎng)度為兩個(gè)字節(jié)(16個(gè)位),偏移地址所表示的范圍可從Hex0000到HexFFFF,亦即十進(jìn)制的0到65535。所以在程序中出現(xiàn)的任何存儲(chǔ)單元的位置(地址),都是以段寄存器的值(段起始地址)與偏移地址二者共同確定的。例如,位于指令段的第一個(gè)字的偏移地址為0000H,第二個(gè)字的偏移地址為0002H,依次類(lèi)推,最大的偏移地址為FFFFH(即65535)。下面是一個(gè)計(jì)算存儲(chǔ)器實(shí)際位置(物理地址)的例子,假設(shè)數(shù)據(jù)段寄存器的內(nèi)容為045FH,且有一指令尋址到數(shù)據(jù)段中差距為0032H的位置。實(shí)際尋址到的位置(物理地址)如下所示:

DS值: 045F0H

差距值:+ 0032H(偏移地址)物理地址: 04622H

說(shuō)明:實(shí)際位置即實(shí)際地址,又稱(chēng)為物理地址,而差距值即偏移地址,又稱(chēng)為邏輯地址,今后指令中對(duì)存儲(chǔ)器的訪問(wèn)都采用邏輯地址,簡(jiǎn)稱(chēng)地址或位址。8086/8088CPU是如何產(chǎn)生1MB的存儲(chǔ)單元地址呢?一個(gè)寄存器僅有16位,由于一個(gè)段的位置總是在節(jié)邊界位置上,所以右邊的四個(gè)位都是0。設(shè)計(jì)者將那些為0的位充分利用并把0省略掉。所以段寄存器雖然用nnnn來(lái)表示,但實(shí)際上微型計(jì)算機(jī)在尋址時(shí)把它右邊再加上四個(gè)0而變成nnnn0。例如,十六進(jìn)制FFFF0就可產(chǎn)生1048576個(gè)字節(jié)的地址??梢詫⑹M(jìn)制的F化成二進(jìn)制1111,然后再將所有位置的1值按權(quán)加起來(lái)就可得出結(jié)果。由于80286微處理機(jī)使用的是24位的地址,所以它可尋址的范圍是224,也即16MB存儲(chǔ)單元。1.3寄

器8086/8088CPU總共有14個(gè)寄存器,用來(lái)控制指令的執(zhí)行、幫助存儲(chǔ)單元尋址以及提供算術(shù)運(yùn)算的環(huán)境。每一個(gè)寄存器具有一個(gè)字(16位)的長(zhǎng)度,并以寄存器名來(lái)訪問(wèn)。在系統(tǒng)中寄存器的位是由右向左順序排列的,如:

b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0

在80286與80386微處理器系統(tǒng)中,有些寄存器位數(shù)超過(guò)16位,在此我們并不討論它。1.段寄存器:CS,DS,SS與ES

段寄存器可提供64K存儲(chǔ)單元的尋址,稱(chēng)為“當(dāng)前的段”(CurrentSegment)。如前所述,段的起始位置是與內(nèi)存節(jié)邊界的地址對(duì)齊的,而且段寄存器所含的段起始位置(地址)省略了右邊的四個(gè)0。所以在計(jì)算實(shí)際地址時(shí),段寄存器的值最低位后要補(bǔ)四個(gè)0,然后與差距值(偏移地址)相加。

CS寄存器:指令段寄存器(CodeSegmentRegister),含有指令段的起始位置的地址。此段地址值低位補(bǔ)四個(gè)0,加上指令指針寄存器IP(InstructionPointer)的值,即差距值(偏移地址),就是將要被取出來(lái)執(zhí)行的機(jī)器指令碼在存儲(chǔ)器中的物理地址。

DS寄存器:數(shù)據(jù)段寄存器(DataSegmentRegister),含有數(shù)據(jù)段的起始位置的地址。此段地址值低位補(bǔ)四個(gè)0,加上指令中提供的差距值(偏移地址),可得到數(shù)據(jù)段中的某一個(gè)特指存儲(chǔ)單元的物理地址。

SS寄存器:堆棧段寄存器(StackSegmentRegister),含有堆棧段的起始位置的地址。

ES寄存器:某些字符串的運(yùn)算需使用附加段寄存器(ExtraSegmentRegister)尋址存儲(chǔ)單元,含義與功用和DS相同。ES寄存器是與DI寄存器配合使用,來(lái)尋址內(nèi)存的存儲(chǔ)單元的。若需要用ES時(shí),匯編語(yǔ)言程序必須先設(shè)定其初值。2.通用寄存器:AX,BX,CX與DX

按匯編語(yǔ)言程序編程的規(guī)則,通用寄存器是8086/8088CPU的工作主力。它們既可當(dāng)成完整的字使用,亦可分成兩個(gè)字節(jié)而單獨(dú)使用,左邊的字節(jié)為高字節(jié)(High),而右邊的字節(jié)則為低字節(jié)(Low),可以使用三種名稱(chēng)中的任何一種來(lái)指明所使用的寄存器。例如:

MOVCX,0000 ;0000送CX寄存器

MOVCH,00 ;00送CX寄存器的高字節(jié)CH

MOVCL,00 ;00送CX寄存器的低字節(jié)CL

AX寄存器:又稱(chēng)為累加器(PrimaryAccumulator),用于輸入/輸出操作、一些有關(guān)字符串的操作以及算術(shù)運(yùn)算。例如,乘法、除法和移位指令均使用AX寄存器。除此之外,有些指令若使用AX寄存器的話,速度則會(huì)更快。

AX:|AH|AL|BX寄存器:又稱(chēng)為基址寄存器(BaseRegister),因?yàn)樗俏ㄒ挥糜凇皩ぶ匪饕?Index)”

的通用寄存器,以擴(kuò)展尋址的方式進(jìn)行。除此之外,它也供計(jì)算用。

BX:|BH|BL|

CX寄存器:亦稱(chēng)為計(jì)數(shù)寄存器(CounterRegister),常用來(lái)控制循環(huán)重復(fù)的次數(shù)以及向左或向右移位的位數(shù)。CX也可以供計(jì)算用。

CX:|CH|CL|DX寄存器:又稱(chēng)為數(shù)據(jù)寄存器(DataRegister)。某些輸入/輸出操作需要使用它。除此之外,在乘法、除法的運(yùn)算中,當(dāng)涉及較大數(shù)值時(shí)則將DX與AX配對(duì)使用。3.指針寄存器:SP與BPSP與BP指針寄存器專(zhuān)門(mén)用來(lái)訪問(wèn)堆棧段內(nèi)的數(shù)據(jù),即專(zhuān)門(mén)提供堆棧段的差距值(偏移地址)。雖然它們也用來(lái)進(jìn)行加法與減法運(yùn)算,但很少這樣使用。

SP寄存器:堆棧指針(StackPointer)提供堆棧段的差距值(偏移地址)。SP是與SS配合使用來(lái)對(duì)堆棧段做尋址的。

BP寄存器:基址指針(BasePointer)提供堆棧段的差距值(偏移地址),使得堆棧段的數(shù)據(jù)查找更為方便。4.變址寄存器:SI與DI

變址寄存器(IndexRegister)可以用來(lái)延伸尋址范圍和方式,還可以進(jìn)行加法和減法運(yùn)算。

SI寄存器:又稱(chēng)為源變址(SourceIndex)寄存器,在進(jìn)行某些字符串操作時(shí)需要使用它。此時(shí),SI寄存器是與DS寄存器配合使用的。

DI寄存器:又稱(chēng)為目的變址(DestinationSource)寄存器,與SI寄存器一樣,也為某些字符串操作所必需,DI寄存器一般和ES寄存器配合使用。5.指令指針寄存器:IP

指令指針(InstructionPointer)寄存器含有將要執(zhí)行的指令在指令段的差距值(偏移地址)。在正常情況下,用戶一般不會(huì)使用它。但在使用DOSDEBUG來(lái)調(diào)試應(yīng)用程序時(shí),可以改變它的值。IP寄存器也稱(chēng)為程序計(jì)數(shù)器。6.標(biāo)志寄存器:PSW

標(biāo)志寄存器(FlagRegister),也稱(chēng)為狀態(tài)寄存器(StatusRegister)或程序狀態(tài)字(ProgramStatusWord)。許多有關(guān)比較與算術(shù)運(yùn)算的指令會(huì)改變標(biāo)志位的狀態(tài)。表1-2是標(biāo)志位的簡(jiǎn)介。表1-2標(biāo)志位符號(hào)及說(shuō)明標(biāo)志位符號(hào)說(shuō)明OF(Overflow)溢出表示在有符號(hào)算術(shù)運(yùn)算時(shí)是否發(fā)生溢出DF(Direction)方向在比較或搬移字符串?dāng)?shù)據(jù)時(shí),指示其地址操作方向?yàn)樵鲋祷驕p值IF(Interrupt)中斷指示中斷是否被允許或禁止TF(Trap)陷阱允許CPU以單步(SingleStep)的模式執(zhí)行。例如,DOSDEBUG能一次執(zhí)行一條指令。借此你可以很容易地檢查每一條指令對(duì)寄存器或存儲(chǔ)單元內(nèi)容的影響SF(Sign)符號(hào)為算術(shù)運(yùn)算結(jié)果的正負(fù)號(hào)(1=負(fù)號(hào),0=正號(hào))ZF(Zero)零指示出算術(shù)或比較運(yùn)算的結(jié)果(1=結(jié)果為0,0=結(jié)果不為0)AF(AuxiliaryCarry)輔助進(jìn)位從位3(b3)所產(chǎn)生的進(jìn)位(1=有進(jìn)位,0=無(wú)進(jìn)位)PF(Parity)奇/偶校驗(yàn)指示運(yùn)算結(jié)果中低8位的1奇/偶數(shù)校驗(yàn)(1=偶數(shù),0=奇數(shù))CF(Carry)進(jìn)位在算術(shù)運(yùn)算后最高位(最左)所產(chǎn)生的進(jìn)位(1=有進(jìn)位,0=無(wú)進(jìn)位),以及移位或循環(huán)移位運(yùn)算時(shí)所移出的位的狀態(tài)1.4微型計(jì)算機(jī)的硬件結(jié)構(gòu)

PC機(jī)硬件的主要部件有主機(jī)、鍵盤(pán)、顯示器、磁盤(pán)機(jī)、打印機(jī),以及通訊和游戲控制器配件等。系統(tǒng)主機(jī)包含主機(jī)板、電源以及擴(kuò)充槽。主機(jī)板的組成如下所示:(1)微處理器(CPU)。(2)只讀存儲(chǔ)器ROM(Read-OnlyMemory)。

(3)隨機(jī)存取存儲(chǔ)器RAM(RandomAccessMemory)。擴(kuò)充槽用來(lái)連接顯示器卡、磁盤(pán)驅(qū)動(dòng)卡、通訊通道、擴(kuò)充存儲(chǔ)器以及游戲卡等設(shè)施。鍵盤(pán)擁有自己的微處理器。當(dāng)電源啟動(dòng)時(shí),它會(huì)執(zhí)行自我測(cè)試、鍵盤(pán)掃描。1.4.18086/8088微處理器(CPU)

PC機(jī)的大腦是能執(zhí)行所有指令與數(shù)據(jù)處理的Intel8086/8088微處理器。8086/8088微處理器使用的是16位寄存器。所以,它一次可以執(zhí)行兩個(gè)字節(jié)?;旧希?088和8086是類(lèi)似的,但有一點(diǎn)不一樣,8088微處理器僅提供8位數(shù)據(jù)線(Bus)作為微處理器、存儲(chǔ)器與外部裝置之間的數(shù)據(jù)傳輸。此種限制增加了數(shù)據(jù)傳送的時(shí)間,但其設(shè)計(jì)方式較為簡(jiǎn)單。80286與80386是8086的高版本微處理器。微處理器可分成執(zhí)行單元EU(ExecutionUnit)和總線接口單元BIU(BusInterfaceUnit),如圖1-2所示。EU所扮演的角色是執(zhí)行指令,而B(niǎo)IU的角色則是提供指令和數(shù)據(jù)給EU。EU內(nèi)含一個(gè)算術(shù)、邏輯運(yùn)算單元ALU(ArithmeticandLogicUnit)、一個(gè)控制單元CU(ControlUnit)和十個(gè)寄存器,這些是用來(lái)提供幫助指令執(zhí)行算術(shù)運(yùn)算以及邏輯(大于、小于和等于的比較)運(yùn)算所需的部件。圖1-28088執(zhí)行單元與總線接口單元

BIU是由總線控制接口單元(BusControlUnit)、指令預(yù)取隊(duì)列以及段寄存器所組成的。此三種單元分別控制三個(gè)重要功能,第一是控制傳送數(shù)據(jù)給EU、存儲(chǔ)器以及外部輸入/輸出部件的總線;第二是四個(gè)段寄存器控制尋址的工作,可提供高達(dá)1?MB的存儲(chǔ)單元尋址空間;第三個(gè)功能是控制指令存取,由于所有程序指令均存放在存儲(chǔ)器中,BIU必須從存儲(chǔ)器中取得指令并將之存入指令預(yù)取隊(duì)列內(nèi)。因?yàn)橹噶铑A(yù)取隊(duì)列有4個(gè)字節(jié),所以BIU可以預(yù)先提取指令,使得指令預(yù)取隊(duì)列永遠(yuǎn)處于等待執(zhí)行狀態(tài)。

EU與BIU是以并行方式工作的,而B(niǎo)IU保持領(lǐng)先一個(gè)步驟。當(dāng)EU需要從存儲(chǔ)器或I/O設(shè)備存取數(shù)據(jù)時(shí),它會(huì)通知BIU。EU也向BIU指令隊(duì)列請(qǐng)求提供機(jī)器指令。當(dāng)前可執(zhí)行的指令則放在指令隊(duì)列的頂端。當(dāng)EU執(zhí)行指令時(shí),BIU同時(shí)也從存儲(chǔ)器中取出另一條指令,此種取指令與執(zhí)行指令重疊操作的方式可提高處理器的處理速度。1.4.2內(nèi)存儲(chǔ)器典型的微機(jī)系統(tǒng)均含有兩種內(nèi)部存儲(chǔ)器,第一種是只讀存儲(chǔ)器ROM(Read-OnlyMemory)。ROM是一種特殊芯片,它僅能進(jìn)行讀操作。因?yàn)閿?shù)據(jù)是永久性地“燒制在存儲(chǔ)器芯片”上的,所以無(wú)法改變。

ROM的主要目的是處理開(kāi)機(jī)程序,當(dāng)接通主機(jī)電源后,ROM就執(zhí)行各種核對(duì)事項(xiàng)(即自檢),并從系統(tǒng)磁盤(pán)將系統(tǒng)程序讀入內(nèi)存儲(chǔ)器(RAM)中。為了達(dá)到系統(tǒng)程序規(guī)范的目的,ROM還提供另一項(xiàng)重要功能——系統(tǒng)基本輸入/輸出BIOS(BasicInput/OutputSystem)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論