匯編語言第1章預(yù)備知識(shí)_第1頁
匯編語言第1章預(yù)備知識(shí)_第2頁
匯編語言第1章預(yù)備知識(shí)_第3頁
匯編語言第1章預(yù)備知識(shí)_第4頁
匯編語言第1章預(yù)備知識(shí)_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、80X86匯編語言程序設(shè)計(jì)熊迎軍熊迎軍1377665552513776655525教學(xué)樓教學(xué)樓A509/A510A509/A510課程介紹專業(yè)基礎(chǔ)課、必修課計(jì)算機(jī)組成原理的一個(gè)部分軟件開發(fā)的一個(gè)組成部分一種低級(jí)語言的程序設(shè)計(jì)高級(jí)語言程序設(shè)計(jì)的擴(kuò)展先修課高級(jí)語言程序設(shè)計(jì)后續(xù)課微機(jī)原理及接口技術(shù)計(jì)算機(jī)組成原理2使用教材3王元珍等編著蔡啟先等編著參考教材4錢曉捷主編(第四版)王爽著(第3版)教學(xué)內(nèi)容第1章 預(yù)備知識(shí)第2章 尋址方式第3章 指令系統(tǒng)第4章 匯編語言程序格式第5章 基本匯編語言程序設(shè)計(jì)5教學(xué)要求課堂上注意聽講、重要的是理解部分補(bǔ)充例題等內(nèi)容需要筆記課堂外一定要看書復(fù)習(xí)或預(yù)習(xí)、完成作業(yè)充分

2、利用上機(jī)時(shí)間、多編程練習(xí)6考核要求考試成績:70平時(shí)成績:30(作業(yè)、上課表現(xiàn)、考勤等)7第第1 1章章 預(yù)備知識(shí)8主要內(nèi)容:計(jì)算機(jī)系統(tǒng)概述數(shù)據(jù)存儲(chǔ)方式數(shù)據(jù)表示8086寄存器組存儲(chǔ)器編址什么是匯編語言匯編語言程序舉例91.1 計(jì)算機(jī)系統(tǒng)概述硬件(Hardware)中央處理單元CPU控制器、運(yùn)算器、寄存器存儲(chǔ)器主存儲(chǔ)器:RAM和ROM輔助存儲(chǔ)器:磁盤、光盤、U盤外部設(shè)備輸入設(shè)備和輸出設(shè)備軟件(Software)系統(tǒng)軟件應(yīng)用軟件1011I/O接接口口主存儲(chǔ)器主存儲(chǔ)器系統(tǒng)總線系統(tǒng)總線CPU寄存器寄存器控制器控制器運(yùn)算器運(yùn)算器輔助存儲(chǔ)器輔助存儲(chǔ)器輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備程序員能看到的硬件中央處

3、理單元 CPU(Intel 80 x86)對(duì)匯編語言程序員,最關(guān)心其中的寄存器存儲(chǔ)器(主存儲(chǔ)器)呈現(xiàn)給匯編語言程序員的,是存儲(chǔ)器地址外部設(shè)備(接口電路)匯編語言程序員看到的是端口(I/O地址)12寄存器(Register)寄存器是CPU內(nèi)部的高速存儲(chǔ)單元它們?yōu)樘幚砥魈峁└鞣N操作所需要的數(shù)據(jù)或地址等信息匯編語言程序采用它們各自的符號(hào)名16位Intel 8086/80286 CPU中有AXBX CX DXSIDI BP SP32位80386/80486/Pentium系列 CPU中有EAX EBXECXEDXESI EDIEBPESP13存儲(chǔ)器地址(Address)存儲(chǔ)器是由大量存儲(chǔ)單元組成,需要

4、用編號(hào)區(qū)別每個(gè)單元:編號(hào)地址存儲(chǔ)器地址是存儲(chǔ)器中存儲(chǔ)單元的編號(hào)每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)量的數(shù)據(jù)一個(gè)字節(jié)B(Byte)8個(gè)二進(jìn)制位b(bit)采用十六進(jìn)制數(shù)來表達(dá)地址Intel 8086具有1兆字節(jié)(1MB)存儲(chǔ)器容量存儲(chǔ)器地址表示為:00000H FFFFFH其中大寫H(或小寫h)表示是十六進(jìn)制數(shù)1415端口(Port)I/O接口電路由接口寄存器組成,需要用編號(hào)區(qū)別各個(gè)寄存器:編號(hào)地址I/O地址是接口電路中寄存器的編號(hào)端口是I/O地址的通俗說法系統(tǒng)通過這些端口與外設(shè)進(jìn)行通信采用十六進(jìn)制數(shù)來表達(dá)端口Intel 8086支持64K個(gè)8位端口I/O地址可以表示為:0000H FFFFH161.2 數(shù)

5、據(jù)存儲(chǔ)方式17字:由2個(gè)字節(jié)組成,字地址由兩字節(jié)中地址較小的一個(gè)即低字節(jié)的地址決定。存放的方式是低8位存放低字節(jié),高8位存放高字節(jié)。雙字:雙字的地址也由四個(gè)字節(jié)中的最低地址確定18問題:一個(gè)字?jǐn)?shù)據(jù)該怎樣存入計(jì)算機(jī)主存呢? 雙字?jǐn)?shù)據(jù)呢?高-高 低-低字:要占有連續(xù)的兩個(gè)字節(jié). 16位中,低8位存放在低地址字節(jié),高8位存放在相鄰的高地址字節(jié)中。雙字:32位中,低16位存放在低地址字,高16位存放在相鄰的高地址字地址中。19201.3 數(shù)據(jù)表示數(shù)據(jù)在計(jì)算機(jī)中的表示形式進(jìn)制與編碼211.3.1 數(shù)據(jù)在計(jì)算機(jī)中的表示形式22真值與機(jī)器數(shù)真值:現(xiàn)實(shí)中真實(shí)的數(shù)值機(jī)器數(shù):計(jì)算機(jī)中用0和1數(shù)碼組合表達(dá)的數(shù)值無符

6、號(hào)數(shù):只表達(dá)0和正整數(shù)的定點(diǎn)整數(shù)有符號(hào)數(shù):表達(dá)負(fù)整數(shù)、0和正整數(shù)的定點(diǎn)整數(shù)符號(hào)位需要占用一個(gè)位常用機(jī)器數(shù)的最高位0表示正數(shù)、1表示負(fù)數(shù)定點(diǎn)數(shù):固定小數(shù)點(diǎn)的位置表達(dá)數(shù)值的機(jī)器數(shù)定點(diǎn)整數(shù):將小數(shù)點(diǎn)固定在機(jī)器數(shù)的最右側(cè)表達(dá)的整數(shù)定點(diǎn)小數(shù):將小數(shù)點(diǎn)固定在機(jī)器數(shù)的最左側(cè)表達(dá)的小數(shù)浮點(diǎn)數(shù):小數(shù)點(diǎn)浮動(dòng)表達(dá)的實(shí)數(shù)23無符號(hào)數(shù)表示范圍24n有符號(hào)數(shù)表示范圍有符號(hào)數(shù)表示范圍(1)數(shù)值數(shù)據(jù)的表示形式對(duì)于有符號(hào)數(shù),一律采用二進(jìn)制補(bǔ)碼形式25此處不是乘號(hào),僅表示“或”補(bǔ)碼補(bǔ)碼表示的幾個(gè)特點(diǎn):1.所有正數(shù)的補(bǔ)碼表示最左(高)位為0,其二進(jìn)制補(bǔ)碼表示為本身;2.所有負(fù)數(shù)的補(bǔ)碼表示最左(高)位為1,其補(bǔ)碼表示為:(原碼)除符

7、號(hào)位保持不變外,其它位取反加1。例如:設(shè)n=8,50補(bǔ) = 00110010B補(bǔ) = 00110010B-50補(bǔ) = -00110010B補(bǔ) =11001110B26 3.一個(gè)二進(jìn)制補(bǔ)碼的最高位向左延伸S位,所得到的仍 是此數(shù)的補(bǔ)碼表示。27(2)字符數(shù)據(jù)的表示形式鍵盤輸入的字母和數(shù)字、顯示器顯示的文字等都是字符信息。西文:常用的將字符與2進(jìn)制數(shù)對(duì)應(yīng)起來的編碼方法是美國信息標(biāo)準(zhǔn)交換代碼ASCII碼。漢字: GB2312編碼(1980)、GBK編碼(1990) 區(qū)位碼表:分94區(qū)*94位,包括一級(jí)漢字(最常用漢字 ,按拼音排序)和二級(jí)漢字(稍常用漢字,按部首排 序),均為簡體漢字,共約6700個(gè)

8、。28ASCII碼(美國標(biāo)準(zhǔn)信息交換碼)標(biāo)準(zhǔn)ASCII碼用7位二進(jìn)制編碼,有128個(gè)不可顯示的控制字符 前32個(gè)和最后一個(gè)編碼 回車CR:0DH 換行LF:0AH 響鈴BEL:07H可顯示和打印的字符:20H后的94個(gè)編碼數(shù)碼09:30H39H大寫字母AZ:41H5AH小寫字母az:61H7AH空格:20H擴(kuò)展ASCII碼:最高D7位為1,表達(dá)制表符29301.3.2 進(jìn)制與編碼二進(jìn)制十六進(jìn)制進(jìn)制轉(zhuǎn)換BCD碼31二進(jìn)制便于計(jì)算機(jī)存儲(chǔ)及物理實(shí)現(xiàn)特點(diǎn):逢二進(jìn)一,由0和1兩個(gè)數(shù)碼組成,基數(shù)為2,各個(gè)位權(quán)以2k表示二進(jìn)制數(shù):anan-1a1a0.b1b2bman2nan-12n-1a121a020 b

9、12-1b22-2bm2-m 其中ai,bj非0即132十六進(jìn)制用于表達(dá)二進(jìn)制數(shù),相互轉(zhuǎn)換簡單基數(shù)16,逢16進(jìn)位,位權(quán)為16k,16個(gè)數(shù)碼:0,1,2,3,4,5,6,7,8,9A,B,C,D,E,F(xiàn)十六進(jìn)制數(shù):anan-1a1a0.b1b2bman16nan-116n-1a1161 a0160b116-1b216-2bm16-m其中ai,bj是0F中的一個(gè)數(shù)碼33十進(jìn)制整數(shù)轉(zhuǎn)換為二或十六進(jìn)制數(shù)整數(shù)部分轉(zhuǎn)換:用除法十進(jìn)制數(shù)整數(shù)部分不斷除以基數(shù)2或16,并記下余數(shù),直到商為0為止由最后一個(gè)余數(shù)起逆向取各個(gè)余數(shù),則為轉(zhuǎn)換成的二進(jìn)制和十六進(jìn)制數(shù)12601111110B1267EH34十進(jìn)制小數(shù)轉(zhuǎn)換

10、為二或十六進(jìn)制數(shù)小數(shù)部分轉(zhuǎn)換:用乘法分別乘以各自的基數(shù),記錄整數(shù)部分,直到小數(shù)部分為0為止0.81250.1101B0.81250.DH小數(shù)轉(zhuǎn)換會(huì)發(fā)生總是無法乘到為0的情況可選取一定位數(shù)(精度)將產(chǎn)生無法避免的轉(zhuǎn)換誤差35二或十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)36n方法:按權(quán)展開方法:按權(quán)展開n二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)0011.1010B12112012-102-212-33.625n十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)1.2H116021611.125BCD碼(Binary Coded Decimal)二進(jìn)制編碼的十進(jìn)制數(shù)一個(gè)十進(jìn)制數(shù)位09用4位二進(jìn)制編碼來表示常用84

11、21 BCD碼:低10個(gè)4位二進(jìn)制編碼表示壓縮BCD碼:一個(gè)字節(jié)表達(dá)兩位BCD碼 0001 0000 =10 ,1000 1001 =89非壓縮BCD碼:一個(gè)字節(jié)表達(dá)一位BCD碼(低4位表達(dá)數(shù)值,高4位常設(shè)置為0) 0000 0000 = 0 ,0000 0001 = 1 ,0000 0010 = 2BCD碼很直觀BCD碼:0100 1001 0111 1000.0001 0100 1001十進(jìn)制真值:4978.149371.4 存儲(chǔ)器編址存儲(chǔ)器的編址實(shí)地址模式下的存儲(chǔ)器地址變換381.4.1 存儲(chǔ)器的編址8086 CPU有20條地址線最大可尋址空間為2201MB物理地址范圍從00000HFF

12、FFFH8086 將1MB空間分成許多邏輯段(Segment)這樣,一個(gè)存儲(chǔ)單元除具有一個(gè)唯一的物理地址外,還具有多個(gè)邏輯地址。物理地址:內(nèi)存單元在整個(gè)內(nèi)存空間中的惟一的20位地址00000HFFFFFH邏輯地址:段基地址 : 段內(nèi)偏移地址398086對(duì)邏輯段要求:段地址低4位均為0每段最大不超過64KB8086對(duì)邏輯段并不要求:必須是64KB各段之間完全分開(即可以重疊)1MB空間最多能分成多少個(gè)段?每隔16個(gè)存儲(chǔ)單元就可以開始一個(gè)段所以1MB最多可以有:2201621664K 個(gè)段1MB空間最少能分成多少個(gè)段?每隔64K個(gè)存儲(chǔ)單元開始一個(gè)段所以1MB最少可以有:22021616 個(gè)段每個(gè)物

13、理存儲(chǔ)單元有一個(gè)唯一的20位編號(hào),即物理地址:00000HFFFFFH分段后用戶編程時(shí),采用邏輯地址: 段基地址 : 段內(nèi)偏移地址44段地址說明邏輯段在主存中的起始位置 8086規(guī)定段地址必須是模16地址:xxxx0H 省略低4位0000B,段地址就可以用16位數(shù)據(jù)表示,就能用16位段寄存器表達(dá)段地址偏移地址說明主存單元距離段起始位置的偏移量每段不超過64KB,偏移地址也可用16位數(shù)據(jù)表示45物理地址物理地址=段基地址段基地址16+偏移地址偏移地址0 0 0 0段首地址段首地址 1904 偏移地址偏移地址+物物理理地地址址1.4.2 地址變換47邏輯地址邏輯地址 1460:1001460:10

14、0、1380:F001380:F00物理地址物理地址 14700H 14700H14700H 14700H146014600 0H H 100H100H14700H14700H138013800 0H H F00HF00H14700H14700H段地址左移段地址左移4 4位位加上偏移地址加上偏移地址得到物理地址得到物理地址 例:已知例:已知 CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0HCS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H, ,畫出各段在內(nèi)存中的分布。畫出各段在內(nèi)存中的分布。CS=1055Hl段首地址=10550HDS=250AHl段首

15、地址=250A0HES=2EF0HSS=8FF0H10550H250A0H2EF00H8FF00H代碼段代碼段數(shù)據(jù)段數(shù)據(jù)段附加段附加段堆棧段堆棧段 例:設(shè)某操作數(shù)存放在數(shù)據(jù)段,DS=250AH,數(shù)據(jù)所在單元的偏移地址=0204H。則該操作數(shù)所在單元的物理地址為:p250AH 16+0204H = 252A4H491.5 8086寄存器組8086微處理器8086寄存器組501.4.1 8086微處理器微處理器是微機(jī)的硬件核心,主要包含指令執(zhí)行的運(yùn)算和控制部件,還有多種寄存器對(duì)程序員來說,微處理器抽象為以名稱存取的寄存器8086可訪問主存空間為1MB,20條地址線,16條數(shù)據(jù)線。內(nèi)部結(jié)構(gòu)有兩個(gè)功能

16、模塊,完成一條指令的取指和執(zhí)行功能 總線接口單元BIU:負(fù)責(zé)讀取指令和操作數(shù) 執(zhí)行單元EU :負(fù)責(zé)指令譯碼和執(zhí)行518086的內(nèi)部結(jié)構(gòu)52內(nèi)部暫存器內(nèi)部暫存器 IP ES SS DS CS輸入輸入/輸出輸出控制電路控制電路外部總線外部總線執(zhí)行部分執(zhí)行部分控制電路控制電路1 2 3 4 5 6ALU標(biāo)志寄存器標(biāo)志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令隊(duì)列緩沖器指令隊(duì)列緩沖器執(zhí)行部件執(zhí)行部件 (EU)總線接口部件總線接口部件 (BIU)16位位20位位16位位8位位1.4.2 8086寄存器組538088/8086內(nèi)

17、部有14個(gè)16位的寄存器。按其功能可分為三大類:通用寄存器(8個(gè)),段寄存器(4個(gè))和控制寄存器(2個(gè))通用寄存器8086的16位通用寄存器是:AX BXCXDXSI DIBPSP其中前4個(gè)數(shù)據(jù)寄存器都還可以分成高8位和低8位兩個(gè)獨(dú)立的寄存器8086的8位通用寄存器是:AHBH CH DHALBL CL DL對(duì)其中某8位的操作,并不影響另外對(duì)應(yīng)8位的數(shù)據(jù)54數(shù)據(jù)寄存器數(shù)據(jù)寄存器用來存放計(jì)算的結(jié)果和操作數(shù),也可以存放地址每個(gè)寄存器又有它們各自的專用目的AX累加器,使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等;BX基址寄存器,常用做存放存儲(chǔ)器地址;CX計(jì)數(shù)器,作為循環(huán)和串操作等指令中的隱含

18、計(jì)數(shù)器;DX數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的高16位,或存放外設(shè)端口地址。55變址和指針寄存器變址寄存器常用于存儲(chǔ)器尋址時(shí)提供地址SI是源變址寄存器DI是目的變址寄存器指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)SP為堆棧指針寄存器,指示棧頂?shù)钠频刂?,不能再用于其他目的,具有專用目的BP為基址指針寄存器,表示數(shù)據(jù)在堆棧段中的基地址SI和DI在串操作指令有特殊用法SP和BP寄存器與SS段寄存器聯(lián)合使用確定堆棧段中的存儲(chǔ)單元地址56段寄存器8086有4個(gè)16位段寄存器,每個(gè)段寄存器確定一個(gè)邏輯段的起始地址,每種邏輯段均有各自的用途CS(Code Segment)指明代碼段的起始地址SS(Stack Se

19、gment)指明堆棧段的起始地址DS(Data Segment)指明數(shù)據(jù)段的起始地址ES(Extra Segment)指明附加段的起始地址57(1)代碼段代碼段用來存放程序的指令序列v代碼段寄存器CS存放代碼段的段地址v指令指針寄存器IP指示下條指令的偏移地址處理器利用CS:IP取得下一條要執(zhí)行的指令(2)堆棧段堆棧段確定堆棧所在的主存區(qū)域v堆棧段寄存器SS存放堆棧段的段地址v堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂诽幚砥骼肧S:SP操作堆棧頂?shù)臄?shù)據(jù)(3)數(shù)據(jù)段數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù)v數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址v各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址處理器

20、利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)(4)附加段附加段是附加的數(shù)據(jù)段,也用于數(shù)據(jù)的保存:v附加段寄存器ES存放附加段的段地址v各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址處理器利用ES:EA存取附加段中的數(shù)據(jù)串操作指令將附加段作為其目的操作數(shù)的存放區(qū)域如何分配各個(gè)邏輯段程序的指令序列必須安排在代碼段程序使用的堆棧一定在堆棧段程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中段超越前綴指令沒有指明時(shí),一般的數(shù)據(jù)訪問在DS段;使用BP訪問主存,則在SS段默認(rèn)的情況允許改變,需要使用段超越前綴指令;80

21、86指令系統(tǒng)中有4個(gè):CS:;代碼段超越,使用代碼段的數(shù)據(jù)SS: ;堆棧段超越,使用堆棧段的數(shù)據(jù)DS: ;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù)ES: ;附加段超越,使用附加段的數(shù)據(jù)沒有段超越的指令實(shí)例:MOV AX,2000H;AXDS:2000H;從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù)采用段超越前綴的指令實(shí)例:MOV AX,ES:2000H ;AXES:2000H;從指定的ES附加段取出數(shù)據(jù)段寄存器的使用規(guī)定訪問存儲(chǔ)器的方式訪問存儲(chǔ)器的方式默認(rèn)默認(rèn)可超越可超越偏移地址偏移地址取指令取指令CSCS無無IPIP堆棧操作堆棧操作SSSS無無SPSP一般數(shù)據(jù)訪問一般數(shù)據(jù)訪問DSDSCS ES SSCS ES SS有效地

22、址有效地址EAEABPBP基址的尋址方式基址的尋址方式SSSSCS ES DSCS ES DS有效地址有效地址EAEA串操作的源操作數(shù)串操作的源操作數(shù)DSDSCS ES SSCS ES SSSISI串操作的目的操作數(shù)串操作的目的操作數(shù)ESES無無DIDI指令指針I(yè)P指令指針寄存器IP,指示代碼段中指令的偏移地址它與代碼段寄存器CS聯(lián)用,確定下一條指令的物理地址計(jì)算機(jī)通過CS : IP寄存器來控制指令序列的執(zhí)行流程IP寄存器是一個(gè)專用寄存器66標(biāo)志寄存器67CF CF 進(jìn)位標(biāo)志(進(jìn)位標(biāo)志(Carry FlagCarry Flag):):有進(jìn)有進(jìn)/ /借位(字節(jié)運(yùn)算時(shí)時(shí)第借位(字節(jié)運(yùn)算時(shí)時(shí)第7 7

23、位,位,字運(yùn)算為第字運(yùn)算為第1515位)為位)為1 1,無進(jìn)借位為,無進(jìn)借位為0 0。另循環(huán)指令也使。另循環(huán)指令也使CF=1CF=1。AF AF 輔助進(jìn)位標(biāo)志(輔助進(jìn)位標(biāo)志(Auxiliary Carry FlagAuxiliary Carry Flag):):低低4 4位向高位有進(jìn)位向高位有進(jìn)/ /借位(即第借位(即第3 3位向第位向第4 4位進(jìn)位)為位進(jìn)位)為1 1,否則否則AF=0AF=0。PF PF 奇偶標(biāo)志(奇偶標(biāo)志(Parity FlagParity Flag):):運(yùn)算結(jié)果若低運(yùn)算結(jié)果若低8 8位(對(duì)于位(對(duì)于1616位數(shù)也位數(shù)也是檢查低是檢查低8 8位)所含位)所含1 1的個(gè)數(shù)

24、為偶數(shù),則的個(gè)數(shù)為偶數(shù),則PF=1PF=1,否則否則PF=0PF=0。ZF ZF 全零標(biāo)志(全零標(biāo)志(Zero FlagZero Flag):):當(dāng)運(yùn)算結(jié)果使有效位數(shù)的各位全為當(dāng)運(yùn)算結(jié)果使有效位數(shù)的各位全為零時(shí)零時(shí)ZF=1ZF=1,否則否則ZF=0ZF=0。SF SF 符號(hào)標(biāo)志(符號(hào)標(biāo)志(Sign FlagSign Flag):):當(dāng)運(yùn)算結(jié)果為負(fù)時(shí)當(dāng)運(yùn)算結(jié)果為負(fù)時(shí)SF=1SF=1,否則否則SF=0SF=0。SFSF的值就是有符號(hào)數(shù)的最高位的值就是有符號(hào)數(shù)的最高位( (符號(hào)位符號(hào)位) )。OF OF 溢出標(biāo)志(溢出標(biāo)志(Overflow FlagOverflow Flag):):當(dāng)運(yùn)算結(jié)果超出了

25、機(jī)器所能表當(dāng)運(yùn)算結(jié)果超出了機(jī)器所能表示的范圍時(shí),則示的范圍時(shí),則OF=1OF=1,表示溢出,否則表示溢出,否則OF=0OF=0。狀態(tài)標(biāo)志68DF DF 方向標(biāo)志(方向標(biāo)志(Direction FlagDirection Flag):):如果如果DFDF為為0 0,則串操作過程中地址,則串操作過程中地址會(huì)不斷增值,反之,如果為會(huì)不斷增值,反之,如果為1 1,則會(huì)不斷減值,則會(huì)不斷減值。IF IF 中斷允許標(biāo)志(中斷允許標(biāo)志(Interrupt Enable FlagInterrupt Enable Flag):):如果為如果為0 0,則,則CPUCPU不能不能響應(yīng)可屏蔽中斷請求,反之,可接受可屏

26、蔽中斷請求響應(yīng)可屏蔽中斷請求,反之,可接受可屏蔽中斷請求。TF TF 單步標(biāo)志(單步標(biāo)志(Trap FlagTrap Flag):):如果為如果為1 1,則,則CPUCPU按跟蹤方式執(zhí)行命令按跟蹤方式執(zhí)行命令。控制標(biāo)志0010 00110100 010100110010000110010101010101011110SF=0,ZF=0,PF=0,AF=0,OF=0, CF=0例:691. CF1. CF標(biāo)志位標(biāo)志位3AH + 7CH3AH + 7CHB6HB6H,沒有進(jìn)位:,沒有進(jìn)位:CF = 0CF = 0AAH + 7CHAAH + 7CH(1 1)26H26H,有進(jìn)位:,有進(jìn)位:CF =

27、 1CF = 1 2. ZF2. ZF標(biāo)志位標(biāo)志位3AH + 7CH3AH + 7CHB6HB6H,結(jié)果不是零:,結(jié)果不是零:ZF = 0ZF = 084H + 7CH84H + 7CH(1 1)00H00H,結(jié)果是零:,結(jié)果是零:ZF = 1ZF = 13. SF3. SF標(biāo)志位標(biāo)志位3AH + 7CH3AH + 7CHB6HB6H,最高位,最高位D D7 71 1:SF = 1SF = 184H + 7CH84H + 7CH(1 1)00H00H,最高位,最高位D D7 70 0:SF = 0SF = 0704.PF4.PF奇偶標(biāo)志位奇偶標(biāo)志位3AH + 7CH3AH + 7CHB6HB6

28、H10110110B10110110B結(jié)果中有結(jié)果中有5 5個(gè)個(gè)1 1,是奇數(shù):是奇數(shù):PF = 0PF = 05.OF5.OF溢出標(biāo)志位溢出標(biāo)志位3AH + 7CH3AH + 7CHB6HB6H,產(chǎn)生溢出:,產(chǎn)生溢出:OF = 1OF = 1AAH + 7CHAAH + 7CH(1 1)26H26H,沒有溢出:,沒有溢出:OF = 0OF = 0 6.AF6.AF輔助進(jìn)位標(biāo)志位輔助進(jìn)位標(biāo)志位3AH + 7CH3AH + 7CHB6HB6H,D D3 3有進(jìn)位:有進(jìn)位:AF = 1AF = 1“溢出”和“進(jìn)位”有所不同溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同的標(biāo)志進(jìn)位標(biāo)志表示無符號(hào)數(shù)運(yùn)算結(jié)果是

29、否超出范圍,超出范圍后加上進(jìn)位或借位運(yùn)算結(jié)果仍然正確;溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,超出范圍后運(yùn)算結(jié)果不正確。71例:3AH + 7CHB6H無符號(hào)數(shù)運(yùn)算:58124182 范圍內(nèi),無進(jìn)位有符號(hào)數(shù)運(yùn)算: 58124182 范圍外,有溢出72例:例:AAH + 7CHAAH + 7CH(1 1)26H26H無符號(hào)數(shù)運(yùn)算:無符號(hào)數(shù)運(yùn)算:170170124124294 294 范圍外,有進(jìn)位范圍外,有進(jìn)位有符號(hào)數(shù)運(yùn)算:有符號(hào)數(shù)運(yùn)算:868612412428 28 范圍內(nèi),無溢出范圍內(nèi),無溢出n“溢出溢出”和和“進(jìn)位進(jìn)位”的對(duì)比的對(duì)比溢出和進(jìn)位的運(yùn)用處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無符號(hào)

30、數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志CF;同時(shí),根據(jù)是否超出有符號(hào)數(shù)的范圍設(shè)置溢出標(biāo)志OF應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來決定。也就是說,如果將參加運(yùn)算的操作數(shù)認(rèn)為是無符號(hào)數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要注意是否溢出73“溢出”的判斷判斷運(yùn)算結(jié)果是否溢出的簡單規(guī)則:只有當(dāng)兩個(gè)相同符號(hào)數(shù)相加(減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算),而運(yùn)算結(jié)果的符號(hào)與原數(shù)據(jù)符號(hào)相反時(shí),產(chǎn)生溢出;因?yàn)椋藭r(shí)的運(yùn)算結(jié)果顯然不正確其他情況下(例如,兩個(gè)不同符號(hào)數(shù)相加),則不會(huì)產(chǎn)生溢出74例:設(shè)n=8 X1=-0101 0111B(-87), X2=-0011 0101B(-53),求X1+X2補(bǔ) 解:X1+X2補(bǔ) = X1補(bǔ)+X2補(bǔ)

31、 = 1010 1001B+1100 1011B = 1 0111 0100B(116) 0相加后,原本8位的二進(jìn)制數(shù)變成了9位,這多出的一位稱為進(jìn)位位。由于一個(gè)字節(jié)只能是8位,多出的一位(即進(jìn)位位)就被丟掉了,丟失了符號(hào)位使得結(jié)果成為一正數(shù),這種情況稱為溢出75例:設(shè)n=8,X1=-0100 0010B(-66),X2=0110 1101B(109),求X1補(bǔ)-X2補(bǔ)。X1補(bǔ)-X2補(bǔ) = X1補(bǔ)+X2補(bǔ)= 1011 1110B + 1001 0011B= 1 0101 0001B (81)0在用補(bǔ)碼作減運(yùn)算時(shí),負(fù)數(shù)減正數(shù),一定為負(fù)數(shù)(結(jié)果),而結(jié)果為正說明產(chǎn)生了溢出761.6 什么是匯編語言

32、計(jì)算機(jī)的程序設(shè)計(jì)語言什么是匯編語言匯編語言和高級(jí)語言的比較匯編語言的特點(diǎn)匯編語言的應(yīng)用場合771.6.1 計(jì)算機(jī)的程序設(shè)計(jì)語言機(jī)器語言(Machine Language) B8 64 00 05 00 01匯編語言(Assembly Language)mov ax,100;取得一個(gè)數(shù)據(jù)100(MOV是傳送指令)add ax,256;實(shí)現(xiàn)100+256(ADD是加法指令) 高級(jí)語言(High-level Language)100256781.6.2 什么是匯編語言以助記符形式表示計(jì)算機(jī)指令助記符(mnemonic)是便于人們記憶、并能描述指令功能和指令操作數(shù)的符號(hào)助記符是表明指令功能的英語單詞或

33、其縮寫匯編格式指令以及使用它們編寫程序的規(guī)則就形成匯編語言(Assembly Language)匯編語言程序:用匯編語言書寫的程序匯編程序:將匯編語言程序“匯編”成機(jī)器代碼目標(biāo)模塊的程序791.6.3 匯編語言的特點(diǎn)匯編語言的優(yōu)點(diǎn):直接控制計(jì)算機(jī)硬件部件編寫“時(shí)間”和“空間”兩方面最有效程序匯編語言的缺點(diǎn):與處理器密切有關(guān)需要熟悉計(jì)算機(jī)硬件系統(tǒng)、考慮許多細(xì)節(jié)編寫繁瑣,調(diào)試、維護(hù)、交流和移植困難801.6.4 匯編語言和高級(jí)語言的比較匯編語言與處理器密切相關(guān)匯編語言程序的通用性、可移植性較差高級(jí)語言與具體計(jì)算機(jī)無關(guān)高級(jí)語言程序是標(biāo)準(zhǔn)化語言,可在多種計(jì)算機(jī)上編譯后執(zhí)行81匯編語言功能有限、涉及硬件細(xì)節(jié)程序編寫比較繁瑣,調(diào)試比較困難高級(jí)語言提供了強(qiáng)大的功能,不必關(guān)心瑣碎問題類似自然語言的語法,易于掌握和應(yīng)用82匯編語言本質(zhì)上就是機(jī)器語言可以直接、有效地控制計(jì)算機(jī)硬件易于產(chǎn)生速度快、容量小的高效率目標(biāo)程序高級(jí)語言不針對(duì)具體計(jì)算機(jī)系統(tǒng)不易直接控制計(jì)算機(jī)的各種操作目標(biāo)程序比較龐大、運(yùn)行速度較慢831.6.5 1.6.5 匯編語言混合編程匯編語言混合編程匯編語言的優(yōu)點(diǎn)使得它在程序設(shè)計(jì)中占有重要的位置,不可被取代匯編語言的缺點(diǎn)使得人們主要采用高級(jí)語言進(jìn)行程序開發(fā)工作有時(shí)需要采用高級(jí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論