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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

13、理存儲單元有一個唯一的20位編號,即物理地址:00000HFFFFFH分段后用戶編程時,采用邏輯地址: 段基地址 : 段內(nèi)偏移地址44段地址說明邏輯段在主存中的起始位置 8086規(guī)定段地址必須是模16地址:xxxx0H 省略低4位0000B,段地址就可以用16位數(shù)據(jù)表示,就能用16位段寄存器表達段地址偏移地址說明主存單元距離段起始位置的偏移量每段不超過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微處理器微處理器是微機的硬件核心,主要包含指令執(zhí)行的運算和控制部件,還有多種寄存器對程序員來說,微處理器抽象為以名稱存取的寄存器8086可訪問主存空間為1MB,20條地址線,16條數(shù)據(jù)線。內(nèi)部結(jié)構(gòu)有兩個功能

16、模塊,完成一條指令的取指和執(zhí)行功能 總線接口單元BIU:負責讀取指令和操作數(shù) 執(zhí)行單元EU :負責指令譯碼和執(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標志寄存器標志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令隊列緩沖器指令隊列緩沖器執(zhí)行部件執(zhí)行部件 (EU)總線接口部件總線接口部件 (BIU)16位位20位位16位位8位位1.4.2 8086寄存器組538088/8086內(nèi)

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

18、計數(shù)器;DX數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的高16位,或存放外設(shè)端口地址。55變址和指針寄存器變址寄存器常用于存儲器尋址時提供地址SI是源變址寄存器DI是目的變址寄存器指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)SP為堆棧指針寄存器,指示棧頂?shù)钠频刂罚荒茉儆糜谄渌康?,具有專用目的BP為基址指針寄存器,表示數(shù)據(jù)在堆棧段中的基地址SI和DI在串操作指令有特殊用法SP和BP寄存器與SS段寄存器聯(lián)合使用確定堆棧段中的存儲單元地址56段寄存器8086有4個16位段寄存器,每個段寄存器確定一個邏輯段的起始地址,每種邏輯段均有各自的用途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ù)段存放運行程序所用的數(shù)據(jù)v數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址v各種主存尋址方式(有效地址EA)得到存儲器中操作數(shù)的偏移地址處理器

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

21、86指令系統(tǒng)中有4個:CS:;代碼段超越,使用代碼段的數(shù)據(jù)SS: ;堆棧段超越,使用堆棧段的數(shù)據(jù)DS: ;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù)ES: ;附加段超越,使用附加段的數(shù)據(jù)沒有段超越的指令實例:MOV AX,2000H;AXDS:2000H;從默認的DS數(shù)據(jù)段取出數(shù)據(jù)采用段超越前綴的指令實例:MOV AX,ES:2000H ;AXES:2000H;從指定的ES附加段取出數(shù)據(jù)段寄存器的使用規(guī)定訪問存儲器的方式訪問存儲器的方式默認默認可超越可超越偏移地址偏移地址取指令取指令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)用,確定下一條指令的物理地址計算機通過CS : IP寄存器來控制指令序列的執(zhí)行流程IP寄存器是一個專用寄存器66標志寄存器67CF CF 進位標志(進位標志(Carry FlagCarry Flag):):有進有進/ /借位(字節(jié)運算時時第借位(字節(jié)運算時時第7 7

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論