版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第一章知識(shí)點(diǎn)微處理器是微型機(jī)的核心芯片,通常簡稱為MP(Micro Processor),它是將計(jì)算機(jī)中的運(yùn)算器和控制器集成在一個(gè)硅片上制作的集成電路。這樣的芯片也被稱為中央處理單元,一般簡稱為CPU(Central Processing Unit).第一代4位和低檔8位微處理器(1971年1973年)第二代中高檔8位微處理器(1974年1978年)第三代16位微處理器(1978年1981年)第四代32位高檔微處理器(1985年1993年)第五代64位高檔微處理器以后Intel又推出Pentium-II微處理器。Advanced Micro Device公司(簡稱ADM)的K6是與Pentiu
2、m-II性能相當(dāng)?shù)腃PU。一、無符號(hào)數(shù)的表示和運(yùn)算(一)進(jìn)位計(jì)數(shù)制人們?cè)谌粘I钪?,采用多種進(jìn)制的數(shù)字系統(tǒng)。最常用的是十進(jìn)制。例如 199811039109108100后綴B表示二進(jìn)制;后綴H表示十進(jìn)制;后綴D表示十進(jìn)制(也可不加后綴)例如:10011011B是二進(jìn)制數(shù);9BH是十六進(jìn)制數(shù);155D是十進(jìn)制數(shù);這些數(shù)都表示同一數(shù)值,即十進(jìn)制的155,只是使用的進(jìn)制不同而已。1二進(jìn)制和十六進(jìn)制間的相互轉(zhuǎn)換(1)十六進(jìn)制轉(zhuǎn)換為二進(jìn)制數(shù),不論是十六進(jìn)制的整數(shù)還是小數(shù),只要把每一位十六進(jìn)制的數(shù)用相應(yīng)的二進(jìn)制數(shù)來代替,就可以轉(zhuǎn)換為二進(jìn)制。例如9BA61001 1011 1010 0110 即9BA6H1
3、00110111010011B(2)二進(jìn)制轉(zhuǎn)換為十六進(jìn)制這種轉(zhuǎn)換,可分兩步進(jìn)行:對(duì)整部分,從小數(shù)點(diǎn)向左數(shù)每4位二進(jìn)制為一組,最后不足的前面補(bǔ)零。對(duì)小數(shù)部分,從小數(shù)點(diǎn)向右數(shù),每4位一組,最后不足4位的后面補(bǔ)0,然后把每4位二進(jìn)制數(shù)用相應(yīng)的十六進(jìn)制數(shù)代替,即可轉(zhuǎn)換為十六進(jìn)制數(shù)。例如1011011101010100 B 7 5 4 即10110111010101BB754H(2)二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),對(duì)所給的二進(jìn)制數(shù),只要按前述的式(22)展開,即可得到對(duì)應(yīng)的十進(jìn)制數(shù)。例如 10111010B1231211201201111625(3)十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),把十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),一般采用
4、除2取余法。例如 只要決定的值,就可寫出二進(jìn)制數(shù),因?yàn)?01,所以(21520)一定是2的整數(shù)倍,2152所得的余數(shù)即為X0。其轉(zhuǎn)換過程為 2152107(商),余數(shù)1x0;107253(商),余數(shù)1x1;53226(商),余數(shù)1x2;26213(商),余數(shù)1x3;1326(商),余數(shù)1x4;623 (商),余數(shù)1x5;321 (商),余數(shù)1x6;120 (商),余數(shù)1,商為0,轉(zhuǎn)換結(jié)束。故215D11010111B。(4)十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù),同轉(zhuǎn)換為二進(jìn)制數(shù)的道理一樣,也可采用除16取余例如215D轉(zhuǎn)換為十六進(jìn)制的過程為 2151613 (商),余數(shù)7x0; 1316=0 (商),余
5、數(shù)13x1; 商為0,轉(zhuǎn)換結(jié)束。故215DD7H;通常寫成0D7H,D前面的0字說明D不是英文字符D而是數(shù)字13。又如何2345D的轉(zhuǎn)換過程為1234516771(商),余數(shù)9x0;7711648 (商),余數(shù)3x1;48163 (商),余數(shù)0x2;3160 (商),余數(shù)3x3,商為0,結(jié)束。(二)原碼如上所示,正數(shù)的符號(hào)位用零表示,負(fù)數(shù)的符號(hào)位用1表示,符號(hào)位之后表示數(shù)值的大小這種表示方法稱為原碼。例如:x=+114,x原=01110010B x=+114,x原=11110010B(三)反碼正數(shù)的反碼與原碼相同。最高位一定為0,代表符號(hào),其余位為數(shù)值位。負(fù)數(shù)的反碼其符號(hào)位為1,與原碼相同,數(shù)
6、值位是將其負(fù)數(shù)的原碼的數(shù)值位按位取反。例如: x=4,x反11111011B x=0,x反11111111B x=127,x反10000000B顯然,反碼的0也有2個(gè),X0,x反0000000B(四)補(bǔ)碼正數(shù)的補(bǔ)碼表示與原碼相同,即最高位為符號(hào)位,用“0”表示,其余位為數(shù)值位。而負(fù)數(shù)的補(bǔ)碼為其反碼加1即在反碼的最低位加1形成補(bǔ)碼。例如:x=4,x補(bǔ)x反111111011B111111100BFCH三、8位與16位二進(jìn)制數(shù)的表示范圍(一)8位二進(jìn)制的范圍1)無符號(hào)數(shù)0255(或用0FFH表示)第三節(jié) 微型計(jì)算機(jī)系統(tǒng)的組成一、微型計(jì)算機(jī)系統(tǒng)的構(gòu)成微型計(jì)算機(jī)系統(tǒng)是由硬件和軟件兩部分組成的,它的層次結(jié)
7、構(gòu)如圖所示。 運(yùn)算器 CPU 控制器 主機(jī) 存儲(chǔ)器 寄存器 微型機(jī)硬件 輸入輸出接口 外圍設(shè)備 微型機(jī)系統(tǒng) 系統(tǒng)軟件 微型機(jī)軟件 應(yīng)用軟件圖1 微型計(jì)算機(jī)系統(tǒng)的組成示意圖(一)微型機(jī)硬件(1)微處理器,是微機(jī)系統(tǒng)的核心部件,簡稱為CPU,它包括運(yùn)算器、控制器和寄存器幾部分,運(yùn)算器也叫算邏單元ALU(Arithmetic and Logic Unit)。(2)存儲(chǔ)器(Memory)又叫主存或內(nèi)存,是微機(jī)的存儲(chǔ)和記憶部件,用以存放程序代碼和運(yùn)算需要的數(shù)據(jù)。內(nèi)存通常使用半導(dǎo)體存儲(chǔ)器。1)內(nèi)存容量,以80868088CPU為例,其地址總線為20根,尋址內(nèi)存的范圍為2201MB。這里B是字節(jié)(Byte)
8、,即每個(gè)內(nèi)存單元內(nèi)部存放的是一個(gè)字節(jié)(8位二進(jìn)制)程序代碼或數(shù)據(jù),其形式均為二進(jìn)制數(shù)(機(jī)器數(shù))。因?yàn)?086的地址總線是20根,其尋址范圍為1024KB,寫成十六進(jìn)制時(shí)就是5位,其地址范圍為00000HFFFFFH。2)內(nèi)存的操作 對(duì)內(nèi)存的操作是讀(?。┖蛯懀ù鎯?chǔ))。3)內(nèi)存的分類 按存儲(chǔ)器的工作性質(zhì)可將內(nèi)存分為只讀存儲(chǔ)器(ROM)和隨機(jī)讀寫存儲(chǔ)器(RAM)兩大類。(3)輸入輸出接口(IO Interface)和外部設(shè)備CPU要與很多外部設(shè)備進(jìn)行數(shù)據(jù)傳送,必須通過“IO接口”,所以輸入輸出接口是CPU與外設(shè)之間的橋梁。(4)總線 由上面敘述可以看到微型計(jì)算機(jī)主要是由微處理器、存儲(chǔ)器、IO接口和
9、IO設(shè)備所組成,這些部件是用系統(tǒng)總線連接起來的。(二)微型計(jì)算機(jī)軟件微型機(jī)的軟件是為運(yùn)行、管理和測試維護(hù)而編制的各種程序的總和,沒有軟件的計(jì)算機(jī)只是裸機(jī),計(jì)算機(jī)就無法工作。計(jì)算機(jī)軟件分為系統(tǒng)軟件和應(yīng)用軟件,系統(tǒng)軟件包括操作系統(tǒng)(DOS及WINDOWS、UNIX、LINUX等)和系統(tǒng)應(yīng)用程序。三、微型計(jì)算機(jī)的外圍設(shè)備一般的計(jì)算機(jī),配備有多種外圍設(shè)備。其輸入的外圍設(shè)備有:鍵盤、鼠標(biāo)、掃描儀、輸出的外部設(shè)備有:顯示器、打印機(jī)、繪圖儀。而軟盤和硬盤驅(qū)動(dòng)器既可作為輸入又可作為輸出設(shè)備,而大多數(shù)的光盤驅(qū)動(dòng)器(CDROM)是作為輸入設(shè)備使用的,它可以把CD或VCD光盤中的音樂送入聲卡放大,也可以把VCD光盤
10、的圖像通過解壓縮后的彩色圖像在CRT是顯示出來。目前,都采用全雙工的聲卡(AudioPCI混聲器)完成聲音的接收(有話簡接口)、錄音、聲音合成和聲音的播放(有一定功率的放大)。這樣,配上較大功率的有源單箱,就可以放送出美麗動(dòng)聽的音樂和歌聲。配置上網(wǎng)卡(一種是電話上網(wǎng)的調(diào)制解調(diào)器,例如56K的MODEM,一種是高速網(wǎng)卡),連接上INTERNET網(wǎng)絡(luò),就可以通過IDT NET2PHONE等軟件打網(wǎng)絡(luò)電話,發(fā)傳真(FAX),收發(fā)ENALL,通過WWW進(jìn)行網(wǎng)上瀏覽。第四節(jié) 微處理器一、Intel 8086/8088微處理器(一)80868088的功能結(jié)構(gòu)微處理器80868088微處理器結(jié)構(gòu)類似,都由算
11、術(shù)邏輯單元ALU、累加器、專用和通用寄存器、指令寄存器、指令譯碼器、定時(shí)器控制器等組成,后四部分相當(dāng)于控制器。不過按功能可以分為兩大部分總線接口單元BIU(Bus Interface Unit)和執(zhí)行單元EU(Execution Unit)。(二)80868088的內(nèi)部寄存器80868088內(nèi)部有14個(gè)16位寄存器,編程時(shí)都要用到,所以必須識(shí)記。按其功能,可分為三大類:第一類是通過寄存器(8個(gè)),第二類是段寄存器(4個(gè)),第三類是控制寄存器(2個(gè))。通用寄存器包括數(shù)據(jù)寄存器、地址寄存器和變址寄存器。1數(shù)據(jù)寄存器AX、BX、CX、DX2地址指針寄存器SP、BP3變址寄存器SI、DI4段寄存器CS
12、、SS、DS、ES5控制寄存器IP、FLAGSCF 進(jìn)位標(biāo)志位。當(dāng)進(jìn)行加法或減法運(yùn)算時(shí)。若最高位發(fā)生進(jìn)位或錯(cuò)位,則CF1,否則CF0;PF 奇偶標(biāo)志位。當(dāng)邏輯運(yùn)算結(jié)果中“1”的個(gè)數(shù)為偶數(shù)時(shí),PF1;為奇數(shù)時(shí),PF0。AF 輔助進(jìn)位位。在8(16)位加法操作中,低4(8)位有進(jìn)位、借位發(fā)生時(shí),AF1,否則AF0;ZF 零標(biāo)志位。當(dāng)運(yùn)算結(jié)果為零時(shí),ZF1。否則ZF0;SF 符號(hào)標(biāo)志位。當(dāng)運(yùn)算結(jié)果的最高位為1(即為負(fù)數(shù))時(shí),SF1,否則SF0;OF 溢出標(biāo)志位。當(dāng)算術(shù)運(yùn)算的結(jié)果超出了帶符號(hào)數(shù)的范圍,即溢出時(shí),OF1,否則OF0。8位帶符號(hào)數(shù)范圍是128127,16位帶符號(hào)數(shù)的范圍是327683276
13、7。下面三個(gè)是控制標(biāo)志位??刂茦?biāo)志位被設(shè)置后便對(duì)其后的操作產(chǎn)生控制作用。TF 跟蹤標(biāo)志位。TF1使CPU處于單步執(zhí)行指令的工作方式。這種方式便于進(jìn)行程序的調(diào)試。每執(zhí)行一條指令后,便自動(dòng)產(chǎn)生一次內(nèi)部中斷,從而使用戶能逐條地檢查程序。IF 中斷允許標(biāo)志位。IF1使CPU可以響應(yīng)可屏蔽中斷請(qǐng)求。IF0使CPU禁止響應(yīng)可屏蔽中斷請(qǐng)求。IF的狀態(tài)對(duì)不可屏蔽中斷及內(nèi)部中斷沒有影響。DF 方向標(biāo)志位。DF1使串操作按減地址方向進(jìn)行,也就是說,從高位地址開始,每操作一次地址減小一次。DF0使串操作按增地址方向進(jìn)行。(四)80868088的工作方式80868088有兩種工作方式:最小和最大模式,最小模式是單處理
14、器模式,最大模式是多處理器模式,一般接入8087協(xié)調(diào)處理器。現(xiàn)在,用戶使用的大部分都是486以上微處理器,均為最大模式。第二章知識(shí)點(diǎn)第一節(jié)指令系統(tǒng)計(jì)算機(jī)的指令系統(tǒng)。可以分為六大類:數(shù)據(jù)傳送指令;算術(shù)傳送指令;邏輯運(yùn)算和移位指令;串操作指令;控制轉(zhuǎn)移指令;處理器控制指令。一、指令格式指令是以二進(jìn)制代碼形式表示的操作命令,這種二進(jìn)制代碼稱為機(jī)器碼。尋址方式,通常是指CPU指令中規(guī)定的尋找操作數(shù)所在地址的方式,80868088CPU內(nèi)部設(shè)置了多個(gè)有關(guān)地址的寄存器,如各種地址指針寄存器以及變址寄存器等,因而使80868088的基本尋址方式有以下七種。二、立即尋址(Immediate Addrssing
15、)例如:MOV CL,28HMOV AX,3189H三、寄存器尋址(Register Addrssing)指令中指定某些CPU寄存器存放操作數(shù)。上述寄存器可能是通用寄存器(8位或16位)、地址指針或變址寄存器,以及段寄存器。例如: MOV SS,AX四、直接尋址(Direct Addrssing)直接尋址指令在指令的操作碼后面直接給出操作數(shù)的16位偏移地址。這個(gè)偏移地址也稱為有效地址EA(Effective Address),它與指令的操作碼一起,存放在內(nèi)存的代碼段,也是低8位在前,高8位在后。但是,操作數(shù)本身一般存放在內(nèi)存的數(shù)據(jù)段。例如: MOV AX,3100H五、寄存器間接尋址六、變址尋
16、址(Indexed Addressing)變址尋址指令將規(guī)定的變址寄存器的內(nèi)容加上指令中給出的位移量,得到操作數(shù)的有效地址。80868088CPU中變址寄存器有兩個(gè):源變址寄存器SI和目的變址寄存器DI。位移可以是8位或16位二進(jìn)制數(shù),一般情況下操作數(shù)在內(nèi)存的數(shù)據(jù)段,但也允許段超越。下面是一條變址尋址指令的例子。 MOV BX,SI1003H七、基址尋址(Based Addrssing)基址與變址相類似,不同之處在于指令中使用基址寄存器BX或基址指針寄存器BP,而不是變址寄存器SI和DI。需要指出一點(diǎn),當(dāng)使用BX寄存器實(shí)現(xiàn)基址時(shí),一般情況下操作數(shù)是在數(shù)據(jù)段,即段地址在DS寄存器;而當(dāng)使用BP時(shí)
17、操作數(shù)通常在堆棧段,即段地址在SS寄存器中。但是,同樣允許段超越。下面兩條指令是基址尋址的例子。 MOV SI,DATABX MOV BLOCKBP,AX八基址變址尋址(Based Indexed Addre88ing)這種尋址方式是前面已經(jīng)介紹的兩種尋址方式的結(jié)合。指令中規(guī)定一個(gè)基址寄存器(BX和BP二者之一)和一個(gè)變址寄存器(SI和DI二者之一),同時(shí)還給出一個(gè)8位或16位的位移量,將三者的內(nèi)容相加就得到操作的有效地址。至于段地址,通常由所用的基址寄存器決定。當(dāng)使用BX存放基址時(shí),段地址一般在DS寄存器;當(dāng)使用BP時(shí),段地址一般在堆棧段SS中,但當(dāng)指令中標(biāo)明是段超越時(shí)例外。以下是一條基址加
18、變址尋址指令的例子: MOV AX,COUNTBXSI第二節(jié) 80868088的指令系統(tǒng)一、數(shù)據(jù)傳送指令(Data transfer)數(shù)據(jù)傳送指令是程序中使用最多的指令,這是因?yàn)闊o論程序針對(duì)何種具體的實(shí)際問題,往往都需要將原始數(shù)據(jù)、中間結(jié)果、最終結(jié)果以及其他各種信息,在CPU的寄存器和存儲(chǔ)器之間傳送。數(shù)據(jù)傳送指令按其功能的不同,可以分為以下四組:通用數(shù)據(jù)傳送指令;輸入輸出指令;目標(biāo)地址傳送指令;標(biāo)志傳送指令。以下是MOV指令的幾個(gè)例子:MOV AX,CS;段寄存器至通用寄存器MOV AL,125;立即數(shù)至寄存器MOV MEM,15;立即數(shù)至存儲(chǔ)器,直接尋址MOV SI,BX;寄存器至寄存器MO
19、V DS,AX;通用寄存器至段寄存器MOV BX,50H;立即數(shù)至存儲(chǔ)器,寄存器間址MOV MEM,AX;寄存器至存儲(chǔ)器,直接尋址MOV MEM,DS;段寄存器至存儲(chǔ)器,直接尋址MOV DISPBX,CX;寄存器至存儲(chǔ)器,基址尋址MOV AX,DISPSI;存儲(chǔ)器至寄存器,變址尋址MOV DS,MEM;存儲(chǔ)器至段寄存器,直接尋址MOV AX,DISPBXSI;存儲(chǔ)器至寄存器,基址變址尋址PUSH(Push word onto stack)推入操作 POP(Pop word off stacks)彈出操作指令格式及操作:PUSH src;(SP) (SP)2,首先,堆棧指針2送給堆棧指針 (SP
20、)1:(SP)(src),再把源操作數(shù)(字)推入堆棧中POP dest;(dest) (SP)+1:(SP),首先,堆棧的內(nèi)容彈出到目的操作數(shù) (SP) (SP)+2,再使堆棧指針加2這是兩條堆棧操作指令,PUSH指令將寄存器或存儲(chǔ)器的內(nèi)容推入堆棧;POP指令將堆棧中的內(nèi)容彈出到寄存器或存儲(chǔ)器,但都是字操作。PUSH和POP指令的操作數(shù)可能有三種情況:1)寄存器2)段寄存器3)存儲(chǔ)器無論那種操作數(shù),其類型必須是字操作數(shù)(16位),如果推入或彈出堆棧的寄存器操作數(shù),則應(yīng)是一個(gè)16位寄存器。如果是存儲(chǔ)器操作數(shù),是兩個(gè)地址連續(xù)的存儲(chǔ)單元。如:PUSH AX;通用寄存器椎入堆棧PUSH BP;基址指針
21、寄存器推入堆棧PUSH DATASI;兩個(gè)連續(xù)的存儲(chǔ)單元推入堆棧POP DI;從堆棧彈出到變址寄存器POP ES;從堆棧彈出至段寄存器POP ALPHEBX;從堆棧彈出到兩個(gè)連續(xù)的存儲(chǔ)單元堆棧的用途很多,例如調(diào)用子程序(或過程),發(fā)生中斷時(shí)都用推入堆棧的辦法來保護(hù)斷點(diǎn)的地址,而當(dāng)子程序返回時(shí)再將斷點(diǎn)地址從堆棧中彈出到IP,以便繼續(xù)執(zhí)行主程序。輸入輸出指令共兩條。輸入指令I(lǐng)N用于從外設(shè)端口接收數(shù)據(jù),輸出指令OUT向端口發(fā)送數(shù)據(jù)。指令格式及操作:IN acc, port;(acc) (port)OUT port ,acc;(port) (acc)目標(biāo)地址傳送指令(Address object tr
22、ansfer)80868088CPU提供了三條把地址指針寫入寄存器或寄存器對(duì)的指令,它們可以用來寫入近地址指針和遠(yuǎn)地址指針。這三條指令是LDS、LES、LEA。LEA reg16 mem16LEA指令將一個(gè)近地址指針寫入到指定的寄存器。指令中的目標(biāo)寄存器必須是一個(gè)16位通用寄存器,源操作數(shù)必須是一個(gè)存儲(chǔ)器,指令的執(zhí)行結(jié)果是把源操作數(shù)的有效地址即16位偏移地址傳送到目標(biāo)寄存器。例如LEA BX,BUFFERLEA AX,BPDI二、算術(shù)運(yùn)算指令(Arithmetic)算術(shù)運(yùn)算指令共有以下五組:加法運(yùn)算指令減法運(yùn)算指令乘法運(yùn)算指令除法運(yùn)算指令轉(zhuǎn)換指令(一)加法指令(Addition)加法指令包括普
23、通加法(ADD)指令、帶進(jìn)位加法(ADC)指令和加1(INC)指令,另外還有兩條加法調(diào)整指令,即ASCII調(diào)整(AAA)和十進(jìn)制調(diào)整(DAA)指令。1ADD(Addition)指令格式及操作: ADD dest ,src;(dest) (dest)+(src)ADD指令將目標(biāo)操作數(shù)與源操作數(shù)相加,并將結(jié)果存回目標(biāo)操作數(shù)。加法指令將影響大多數(shù)標(biāo)志位。3INC(Increment by 1),加1指令指令格式及操作:INC dest(dest) (dest)1INC指令將目標(biāo)操作數(shù)加1,指令將影響大多數(shù)標(biāo)志位,如SF、ZF、AF、PF和OF但對(duì)進(jìn)位標(biāo)志CF沒有影響。(二)減法相令(Subtract
24、ion)8086/8088CPU共有七條減法指令,它們是普通減法(SUB)、帶借位減(SBB)、減1(DEC)、求補(bǔ)(NEG)、比較(CMP)指令,以及減法的ASCII調(diào)整(AAS)和十進(jìn)制調(diào)整(DAS)指令,重點(diǎn)是SUB、DEC、CMP指令。SUB(Subtraction)指令格式及操作:SUB dest,src;(desd) (desd) (src)SUB指令將目標(biāo)操作數(shù)減源操作數(shù),結(jié)果送回目標(biāo)操作數(shù)。指令對(duì)標(biāo)志位SF、ZF、AF、PF、CF和OF有影響操作數(shù)的類型與加法指令一樣,即目標(biāo)操作數(shù)可以是寄存器或存儲(chǔ)器,源操作數(shù)可以是立即數(shù)、寄存器或存儲(chǔ)器,但不允許兩個(gè)存儲(chǔ)器相減。既可以字節(jié)相減
25、,也可以字相減。例如,SUB AL,98H;寄存器減立即數(shù) SUB BX,CX;寄存器減寄存器 SUB DX,VAR1;寄存器減存儲(chǔ)器DEC(Decrement by 1)減指令指令格式及操作:DEC dest;(dest) (dest)1DEC指令將目標(biāo)操作數(shù)減1,指令對(duì)標(biāo)志位SF、ZF、AF、PF和OF有影響,但不影響進(jìn)位標(biāo)志CF。操作數(shù)的類型與INC指令一樣,可以是寄存器或存儲(chǔ)器(段寄存器不可)。字節(jié)操作或字操作均可。例如,DEC BL8位寄存器減:DEC CX;16位寄存器減1DEC BYTE PTR BX;存儲(chǔ)器減1,字節(jié)操作DEC WORD PTR BPDI;存儲(chǔ)器減1,字操作CM
26、P(Compare)比較指令指令格式及操作:CMP dest,src;(dest)(src)不把差值回送給目的的操作數(shù),影響標(biāo)志,這條比較指令經(jīng)常使用,并不把結(jié)果送給目的操作數(shù),兩個(gè)操作數(shù)不變,比較后影響標(biāo)志,使程序根據(jù)比較后的標(biāo)志轉(zhuǎn)移。(三)乘法指令(Multiplication)80868088CPU可以通過執(zhí)行一條指令完成乘法或除法運(yùn)算。乘法指令共有三條:無符號(hào)數(shù)乘法指令(MUL)、帶符號(hào)數(shù)乘法指令(IMUL)以及乘法的ASCII調(diào)整指令(AAM)。1MUL(Multiplication unsigned)無符號(hào)數(shù)乘法指令格式:MUL src指令操作為,字節(jié)乘法(AX)(src)(AL)
27、 字乘法(DX:AX)(src)(AX)MUL指令對(duì)標(biāo)志位CF和OF有影響,但SF、ZF、AF和PF不確定。80868088CPU有三條除法指令,它們是無符號(hào)數(shù)除法指令(DIV)、帶符號(hào)數(shù)除法指令(IDIV)以及除法的ASCII調(diào)整指令(AAD)。DIA(Division unsigned),無符號(hào)數(shù)除法指令指令格式: DIV srcDIA指令使大部分標(biāo)志位如SF、ZF、AF、PF、CF和OF的值不確定。例比較兩個(gè)字符串,找出其中第一個(gè)不相等字符的地址。如果兩字符串全部相同。則轉(zhuǎn)到ALLMATCH進(jìn)行處理。這兩個(gè)字符串長度均為20,首地址分別為STRING1和STRING2。LEA SI,ST
28、RING1;(SI)字符串1首地址LEA DI,STRING2;(DI)字符串2首地址MOV CX,20;(CX)字符串長度CLD;清方向標(biāo)志DFREPE CMPSB;如相等,重復(fù)進(jìn)行比較JCXZ ALLMATCH;若(cx)=0,跳至ALLMATCHDEC SI;否則(SI)1DEC DI;(DI)1INT 3;返回DEBUGALLMATCH:MOV SI,0MOV DI,0INT 3;返回DEBUG控制轉(zhuǎn)移指令(Control transfer)8086/8088CPU提供了很多指令用于控制程序的轉(zhuǎn)移。這類指令是以下四種:轉(zhuǎn)移指令、循環(huán)控制指令、過程調(diào)用指令和中斷指令,下面分別進(jìn)行討論。(
29、一)轉(zhuǎn)移指令轉(zhuǎn)移是一種將程序從一處改換到另一處的最方便的方法。在CPU內(nèi)部,轉(zhuǎn)移是通過將目標(biāo)地址傳送給指令指針寄存器IP來實(shí)現(xiàn)的。轉(zhuǎn)移指令包括無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令。1、無條件轉(zhuǎn)移指令JMP(JumP)JUMP指令的操作是無條件地將控制轉(zhuǎn)移到指令中規(guī)定的目的地址。另外,目標(biāo)地址可以用直接的方式給出,也可以用間接的方式給出,JMP指令對(duì)標(biāo)志位沒有影響。(1)段內(nèi)直接轉(zhuǎn)移 指令格式及操作:JMP near_label;轉(zhuǎn)移到近標(biāo)號(hào),(IP)(IP)disp(16位)例:在內(nèi)存的數(shù)據(jù)段中存放了若干個(gè)8位帶符號(hào)數(shù),數(shù)據(jù)塊的長度為COUNT(不超過255),首地址為TABLE,試統(tǒng)計(jì)其中正元素、負(fù)
30、元素及零元素的個(gè)數(shù),并分別將個(gè)數(shù)存入PLUS、MINUS和ZERO單元。為了統(tǒng)計(jì)正元素。負(fù)元素和零元素的個(gè)數(shù),可先將PLUS、MINUS和ZERO三個(gè)單元清零,然后將數(shù)據(jù)表中帶符號(hào)數(shù)逐個(gè)取入AL寄存器并使其影響標(biāo)志位,再利用前面介紹的JS、JZ等條件轉(zhuǎn)移指令測試該數(shù)是一個(gè)負(fù)數(shù)、零還是正數(shù),然后分別在相應(yīng)的單元中進(jìn)行計(jì)數(shù)。程序如下:XOR AL,AL ;(AL)0MOV PLUS,AL ;清PLUS單元MOV MINUS,AL ;清MINUS單元MOV ZERO,AL ;清ZERO單元LEA SI,TABLE ;(SI)數(shù)據(jù)表首址MOV CX,COUNT ;(CX)數(shù)據(jù)表長度CLD ;清標(biāo)志位D
31、FCHECK:LODSB ;取一個(gè)數(shù)據(jù)到AL中OR AL,AL;使數(shù)據(jù)影響標(biāo)志位JS XI ;如為負(fù),轉(zhuǎn)X1JZ X2 ;如為零,轉(zhuǎn)X2INC PLUS ;否則為正,PLUS單元加1JMP NEXTX1:INC MINUS ;MINUS單元加1JMP NEXTX2:INC ZERO ;ZERO單元加1NEXT:LOOP CHECK ;CX減1,不為零,轉(zhuǎn)CHECKINT 3上面的程序中LOOP指令是一條循環(huán)控制指令,它的操作是先將1(CX)1,然后判斷是否CX的內(nèi)容為0?如果不等于0,則轉(zhuǎn)移到所指的標(biāo)號(hào)CHECK,如果(CX)0,則執(zhí)行下一條指令。DEBUG調(diào)試程序的簡單應(yīng)用DEBUG調(diào)試程序
32、的功能DEBUGCOM或DEBUGEXE是隨DOS操作系統(tǒng)提供的。鍵入該程序(DEBUG)后,出現(xiàn)提示符,它具有如下命令:A為匯編命令;U為反匯編命令;T為跟蹤命令;D為顯示內(nèi)存命令;E為修改內(nèi)存命令;F為填充命令;R為檢查和修改寄存器命令;G為執(zhí)行程序命令;L為裝入內(nèi)存命令;N為給程序命名的命令;I為輸入,O為輸出命令;M為傳送內(nèi)存命令;W為存盤命令,Q為結(jié)束DEBUG,回到DOS命令。第三章知識(shí)點(diǎn)第一節(jié) 程序設(shè)計(jì)語言概述目前,有三種不同層次的計(jì)算機(jī)語言,這就是機(jī)器語言、匯編語言和高級(jí)語言。一、機(jī)器語言在機(jī)器語言(Machine Language)中,用二進(jìn)制數(shù)表示指令和數(shù)據(jù),它的缺點(diǎn)是不直
33、觀,很難理解和記憶。因此不用它編程。但是,機(jī)器語言程序是唯一能夠被計(jì)算機(jī)直接理解和執(zhí)行的程序,具有執(zhí)行速度快,占用內(nèi)存少等優(yōu)點(diǎn)。二、匯編語言一般來說,有兩種匯編程序,一種通常稱為匯編(ASM),另一種稱為宏匯編(MASM)。后者的功能更強(qiáng)。三高級(jí)語言高級(jí)語言(Highlevel Language)這針對(duì)某個(gè)具體的計(jì)算機(jī),所以通用性強(qiáng)。第二節(jié) 匯編語言源程序的格式一、分段結(jié)構(gòu)匯編語言源程序的結(jié)構(gòu)是分段結(jié)構(gòu)形式。一個(gè)匯編語言源程序由幾個(gè)段(Segment)組成,每個(gè)段都以SEGMENT語句開始,以ENDS結(jié)束,而整個(gè)源程序是以END語句結(jié)尾。匯編語言源程序中的語句主要有以下兩種類型:指令性語句;指
34、示性語句。指令性語句主要由CPU指令組成,編譯時(shí)能夠生成二進(jìn)制機(jī)器代碼;指示性語句又稱偽操作語句,主要由偽操作組成,編譯時(shí)并不生成二進(jìn)制機(jī)器代碼。那么,為什么還需要偽指令呢?這是因?yàn)閭尾僮髡Z句是給匯編使用的。一般情況下,匯編語言的語句可以有14個(gè)組成部分,如下所示:名字操作碼偽操作操作數(shù);注釋第三節(jié) 常用偽操作宏匯編程序MASM提供了大約幾十種偽操作,根據(jù)偽操作的功能,大致可以分以下幾類:處理器方式偽操作數(shù)據(jù)定義偽操作符號(hào)定義偽操作段定義偽操作過程定義白偽操作模塊定義白與連接偽操作宏處理偽操作條件偽操作列表偽操作其它偽操作一、段定義偽劣商品操作匯編語言程序的結(jié)構(gòu)是分段的形式,一個(gè)匯編語言源程序
35、若干個(gè)邏輯段組成,所有的指令、變量等都分別存放在各個(gè)邏輯段內(nèi)。段定義偽操作的用途是在匯編語言源程序中定義邏輯段。常用的段定義偽操作有SEGMENT、ENDS和ASSUME等。(一個(gè))SEGMENTENDS格式:段名 S EGMENT 定位類型 組合類型 類別段名 ENDS二、數(shù)據(jù)定義偽操作數(shù)據(jù)定義偽操作的用途是定義一個(gè)變量的龐大, 給存儲(chǔ)器賦初值,或者僅僅給變量分別存儲(chǔ)單元,而不賦予特定的值。下面介紹幾種常用的、簡單的數(shù)據(jù)定義偽操作。常用的數(shù)據(jù)定義偽操作有下列5種。BD 定義字節(jié)DW 定義字(2個(gè)字節(jié))DD 定義雙字(4個(gè)字節(jié))SQ 定義四字(8字節(jié))DT 定義十字節(jié)(10個(gè)字節(jié))上述5種數(shù)據(jù)
36、定義偽操作的一般格式為變量名 偽操作 操作數(shù) ,操作數(shù)三、符號(hào)定義偽操作符號(hào)定義偽操作的用途是給一個(gè)符號(hào)重新命名,或定義新的類型屬性等。常用的符號(hào)偽操作有:EQU、(等號(hào))和LABEL等。(一)EQU格式:名字 EQU 表達(dá)式四、過程定義偽操作PROCENDP 格式過程名 PROC NEARFAAARRET過程名 ENDP五、模塊定義與連接偽操作在編寫規(guī)模比較大的匯編語言程序時(shí),可以將整個(gè)程序劃分成為幾個(gè)獨(dú)立的源程序(或稱為模塊),然后將各個(gè)模塊分別匯編,生成各自的目標(biāo)程序,最后再連接成一個(gè)完整的可執(zhí)行程序各個(gè)模塊之間可進(jìn)行符號(hào)訪問,也就是說,在一個(gè)模塊中定義的符號(hào)可被另一個(gè)模塊引用。這類符號(hào)
37、稱為外部符號(hào),而將那些在一個(gè)模塊中定義,且只在同一模塊中引用的符號(hào)稱為局部符號(hào)。為了進(jìn)行連接以及這些將要連接在一起的模塊之間實(shí)現(xiàn)相互的符號(hào)訪問,以便進(jìn)行變量傳送,常使用以下偽操作:NAME、END、PUBLIC、EXTRN。(一)NAME偽操作該偽操作用于給源文件匯編以后得到的目標(biāo)程序指定一個(gè)模塊名,連接時(shí)要使用它。格式為NAME 模塊名第四節(jié) 匯編語言程序設(shè)計(jì)程序設(shè)計(jì)步驟(一)程序設(shè)計(jì)的基本步驟對(duì)于給定的課題進(jìn)行程序設(shè)計(jì),一般應(yīng)按如下步驟進(jìn)行:分析課題 分析課題就是對(duì)課題任務(wù)有明確認(rèn)識(shí),對(duì)復(fù)雜題目應(yīng)進(jìn)行抽象簡化,建立數(shù)學(xué)模型。并弄清已知條件、原始數(shù)據(jù)和應(yīng)得到的結(jié)果,以及課題任務(wù)對(duì)程序的功能、
38、運(yùn)算精度、執(zhí)行速度等方面的要求。確定算法 確定算法就是選擇解決問題的途徑和方法,對(duì)于一個(gè)具體問題,算法可能有多種,應(yīng)該選取簡單、高效,能在計(jì)算機(jī)上易于實(shí)現(xiàn)的算法。畫流程圖 流程圖是算法的一種圖形描述,由邏輯框和流程線組成。關(guān)于流程圖的畫法已經(jīng)在C語言部分講述。對(duì)于復(fù)雜的問題可分解為若干個(gè)程序模塊,然后確定各模塊的算法,畫出程序流程圖。對(duì)于大的程序可分別畫出分模塊流程圖和總的流程圖,這時(shí)總流程圖可設(shè)計(jì)得粗略一些,能反映出總體結(jié)構(gòu)即可。當(dāng)然,對(duì)于簡單的程序段,也可不畫流程圖,而直接按確定的算法編寫程序。存儲(chǔ)器資源分配 諸如各程序段的存放地址、數(shù)據(jù)區(qū)地址、工作單元分配等。編制程序、調(diào)試和修改DOS和
39、BIOS 調(diào)用(2)用戶如何使用一般說來,用戶可通過四種方式控制PC機(jī)的硬件,表示如下:使用高級(jí)語言提供的功能進(jìn)行控制,但提供的一些IO語句較少,執(zhí)行速度慢。使用DOS提供的程序來控制硬件,其中DOS為用戶提供的IO程序有近百種,而且都是在較高層次上提供的,不需要用戶對(duì)硬件有太多的了解。使用DOS調(diào)用的可移植性好,輸入輸出功能多,編程簡單,調(diào)試方便,但運(yùn)行效率低些。使用BIOS提供的程序控制硬件,這是一種底層控制方法,要求用戶對(duì)微機(jī)的硬件有深入的了解,BIOS駐留在ROM中,不依賴于操作系統(tǒng),這使得使用BIOS調(diào)用的匯編語言、C、PASCAL語言程序的可移植性差。因此,當(dāng)BIOS和DOS提供的
40、功能相同時(shí),首先要先用DOS。但BIOS運(yùn)行效率高,因此,在要求高速場合下,可選用BIOS調(diào)用。注意,BIOS的一部分功能,例如CRT顯示功能,是DOS所不具備的。直接訪問硬件,這就要求用戶對(duì)計(jì)算機(jī)的外部設(shè)備很熟悉,通常用于獲得高效率和DOS以及BIOS不支持的功能,但程序的可移植性更差。BIOS調(diào)用BIOS稱為基本輸入輸出系統(tǒng),是固化在ROM中的一組IO服務(wù)程序,除系統(tǒng)測試,初始化引導(dǎo)程序及部分中斷向量裝入程序外,還為用戶提供了常用的設(shè)備驅(qū)動(dòng)程序,如鍵盤輸入打印機(jī)及顯示輸出等。BIOS的調(diào)用方法同DOS系統(tǒng)功能調(diào)用類似,如下所示。置功能號(hào)n送AH 置入口參數(shù) 執(zhí)行INTn 分析出口參數(shù)(!)
41、鍵盤輸入(2)打印機(jī)輸出(3)時(shí)間中斷(4)CRT顯示 BIOS的INT 10H顯示功能很強(qiáng),主要包括設(shè)置顯示方式,設(shè)置光標(biāo)大小和位置,設(shè)置調(diào)色板號(hào),顯示字符和圖形等。例 下面的程序可顯示256個(gè)字符,但由于程序小,編寫成COM文件的形式。求多個(gè)同學(xué)年齡之和,但年齡和不超過9999歲。源程序如下:DATA SEGMNT;規(guī)范化形式NLIN DB 23H,3H,38H;年齡原始數(shù)據(jù),為BCD碼NUMEQUNLIN;人數(shù)SUMDW?;年齡和單元,定義為字,可能9876歲DATAENDS;規(guī)范化形式STACK;規(guī)范化形式 START:MOV AX,DATA;規(guī)范化形式MOV DX,AXMOV CX,
42、NUMXOR AX,AX;清AXMOV SI,OFFSET NLIN;原始數(shù)據(jù)首址(偏移地址)LP2:ADD AL,SI;(AL)(AL)SI,累加用ADDDAA;十進(jìn)制調(diào)整ADCAH,0(AH)(AH)0CYXCHGAH,AL;AH,AL交換ADDAL,0;對(duì)原AH十進(jìn)制調(diào)整DAA;DAA只能跟在加法后 XCHGAH,AL;調(diào)整后交換,也可設(shè)法用PUSH,POP指令I(lǐng)NCSI;指令下一個(gè)年齡LOOPLP2;循環(huán)累加MOVSUM,AX;存放在內(nèi)存DS:SUM單元,字操作MOVAH,4CH;規(guī)范化形式INT21HCODEENDSENDSTART;規(guī)范化形式第五節(jié) 匯編語言的上機(jī)過程一、工作環(huán)境目
43、前,由于個(gè)人計(jì)算機(jī)的普及,在PC機(jī)上學(xué)習(xí)匯編語言是非常容易的了,應(yīng)在磁盤上建立以下文件:MASMEXE;宏匯編程序,用50以上版本LINKEXE;為連接程序EXE2BINEXE;為轉(zhuǎn)換成COM文件所需要的程序DEBUGCOM;調(diào)試程序NECOM、QEXE或EDITCOM等任何一種全屏幕編輯程序以上程序最好安裝在硬盤。二、建立匯編語言源文件三、MASM和LINK程序的應(yīng)用(一)用MASM程序產(chǎn)生OBJ文件(二)用LINK程序進(jìn)行鏈接(三)用DEBUC調(diào)試程序進(jìn)行調(diào)試(四)COM文件的生成按照COM文件編寫的源程序(五)批處理文件的應(yīng)用為加快源程序的編輯、編譯、鏈接和轉(zhuǎn)換的速度,用戶可設(shè)計(jì)一個(gè)批處理文件,將實(shí)現(xiàn)以上命令的組織在批目理文件中。第四章知識(shí)點(diǎn)一、存儲(chǔ)的分類按存取速度和用途可把存儲(chǔ)器分為兩大類:把具有一定容量、存取速度快的存儲(chǔ)器稱
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 竺可楨《大自然的語言》課件
- 2021廣州市高考英語閱讀類訓(xùn)練(4)及答案【三月版】
- 【與名師對(duì)話】2022高考地理課標(biāo)版總復(fù)習(xí)課時(shí)跟蹤訓(xùn)練46環(huán)境保護(hù)-
- 2021廣東惠州市高考英語完形填空課外自練(9)就答案(解析)
- 【志鴻優(yōu)化】2021年人教版高中語文必修4學(xué)案-第11課-廉頗藺相如列傳-第二課時(shí)
- 20202021學(xué)年高中數(shù)學(xué)北師大版選修2-1課件第二章5夾角的計(jì)算
- 《生姜病蟲害防治》課件
- 【中學(xué)課件】信息技術(shù)教材培訓(xùn)
- 2024年高效工業(yè)設(shè)備采購與銷售合同協(xié)議
- 2024版路燈安裝工程承包合同模板
- 《心肺復(fù)蘇及電除顫》課件
- 體檢營銷話術(shù)與技巧培訓(xùn)
- 2023-2024學(xué)年浙江省杭州市西湖區(qū)五年級(jí)(上)期末數(shù)學(xué)試卷
- 五年級(jí)上冊(cè)數(shù)學(xué)計(jì)算題大全
- 系統(tǒng)解剖學(xué)(南方醫(yī)科大學(xué))智慧樹知到期末考試答案章節(jié)答案2024年南方醫(yī)科大學(xué)
- 《生物質(zhì)熱電聯(lián)產(chǎn)工程設(shè)計(jì)規(guī)范》
- 科研倫理與學(xué)術(shù)規(guī)范期末考試
- 腦惡性腫瘤的護(hù)理查房
- 2022公務(wù)員錄用體檢操作手冊(cè)(試行)
- 最新VTE指南解讀(靜脈血栓栓塞癥的臨床護(hù)理指南解讀)
- 你比我猜游戲大全
評(píng)論
0/150
提交評(píng)論