freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

微機原理2ppt課件(編輯修改稿)

2025-03-21 00:11 本頁面
 

【文章內容簡介】 其中, 標號 (LABEL)指示程序開始執(zhí)行的起始地址 。如果多個程序模塊相連接,則 只有主程序要使用標號,其他子程序模塊只用 END而不必指定標號 。匯編程序將在遇到 END時結束匯編,而程序則將從主模塊的第一個標號處開始執(zhí)行。 第 4章 匯編語言程序設計 第 4章第 44頁共 256頁 指令集選擇偽指令 由于 80x86的所有處理器都支持 8086/8088指令系統(tǒng),而且每一種高檔的機型又都增加了一些新的指令,因此,在編寫程序時要對所用處理器有一個確切的選擇。也就是說,要告訴匯編程序應該選擇哪一種指令系統(tǒng)。指令集選擇偽指令的功能就是確定作用指令系統(tǒng)。 第 4章 匯編語言程序設計 第 4章第 45頁共 256頁 此類偽指令主要有以下幾種 : (1) .8086:選擇 8086指令系統(tǒng)。 (2) .286:選擇 80286指令系統(tǒng)。 (3) .286P:選擇保護方式下的 80286指令系統(tǒng)。 (4) .386:選擇 80386指令系統(tǒng)。 (5) .386P:選擇保護方式下的 80386指令系統(tǒng)。 (6) .486:選擇 80486指令系統(tǒng)。 (7) .486P:選擇保護方式下的 80486指令系統(tǒng)。 (8) .586:選擇 Pentium指令系統(tǒng)。 (9) .586P:選擇保護方式下的 Pentium指令系統(tǒng)。 第 4章 匯編語言程序設計 第 4章第 46頁共 256頁 有關 “ 選擇保護方式下的 XXXX指令系統(tǒng) ” 的含義是指包括 特權指令在內的指令系統(tǒng)。此外,上述偽指令均支持相應的協(xié)處理器指令。 這類偽指令一般放在整個程序的最前面,如不給出,則匯編程序默認值為 .8086指令系統(tǒng)。它們可放在程序中,如程序中使用了一條 80486所增加的指令,則可以在該指令的上一行加上 .486。 第 4章 匯編語言程序設計 第 4章第 47頁共 256頁 地址計數(shù)器與對準偽操作 1. 地址計數(shù)器 ——$ 在匯編程序對源程序匯編的過程中,使用地址計數(shù)器(LOCATION COUNTER)來保存當前正在匯編的指令的偏移地址。 當開始匯編或在每一段開始時,把地址計數(shù)器初始化為零,以后在匯編過程中,每處理一條指令,地址計數(shù)器就增加一個值,此值為該指令所需要的字節(jié)數(shù) 。地址計數(shù)器的值可用 $來表示,匯編語言允許用戶直接用 $來引用地址計數(shù)器的值,因此指令 : JNE $+6 的 轉向地址是 JNE指令的首地址加上 6。 第 4章 匯編語言程序設計 第 4章第 48頁共 256頁 當 $用在指令中時,它表示本條指令的第一個字節(jié)的地址 。在這里, $+6必須是另一條指令的首地址,否則,匯編程序將指示出錯信息。 當 $用在偽操作的參數(shù)字段時,則和它用在指令中的情況不同,它所表示的是地址計數(shù)器的當前值。 第 4章 匯編語言程序設計 第 4章第 49頁共 256頁 【 例 46】 $用法示例。 ARRAY DW 1, 2, $+4, 3, 4, $+4 如匯編時 ARRAY分配的偏移地址為0074, 則匯編后的存儲區(qū)將如圖 。 注意: ARRAY數(shù)組中的兩個 $+4得到的結果是不同的,這是由于 $的值是在不斷變化的緣故。 當在指令中用到 $ 時,它只代表該指令的首地址,而與 $本身所在的字節(jié)無關。 圖 例 46的匯編結果 010002007C000300040082000074A R R A Y0075 0076 0077 0078 0079 007A 007B 007C 007D 007E 007F 第 4章 匯編語言程序設計 第 4章第 50頁共 256頁 2. ORG偽操作 ORG偽操作用來設置當前地址計數(shù)器的值 ,其格式為 ORG CONSTANT EXPRESSION 如常數(shù)表達式的值為 N,則 ORG偽操作可以使下一個字節(jié)的地址成為常數(shù)表達式的值 N。例如: VECTORS SEGMENT ORG 10 VECT1 DW 47A5H ORG 20 VECT2 DW 0C596H VECTORS ENDS 第 4章 匯編語言程序設計 第 4章第 51頁共 256頁 則 VECT1的偏移地址值為 0AH, 而 VECT2的偏移地址值為 14H。 常數(shù)表達式也可以表示從當前已定義過的符號開始的位移量,或表示從當前地址計數(shù)器值 $開始的位移量,如: ORG $+8 可以表示跳過 8個字節(jié)的存儲區(qū),亦即建立了一個 8字節(jié)的未初始化的數(shù)據(jù)緩沖區(qū)。如程序中需要訪問該緩沖區(qū),則可用LABEL偽操作來定義該緩沖區(qū)的如下變量名 : 第 4章 匯編語言程序設計 第 4章第 52頁共 256頁 BUFFER LABEL BYTE ORG $+8 當然,其完成的功能和 BUFFER DB 8 DUP(?) 是一樣的。 第 4章 匯編語言程序設計 第 4章第 53頁共 256頁 3. EVEN偽操作 EVEN偽操作使下一個變量或指令開始于偶數(shù)字節(jié)地址 。一個字的地址最好從偶地址開始,所以對于字類型數(shù)組 ,為保證其從偶地址開始,可以在其前用 EVEN偽操作來達到這一目的。 例如: DATA_SEG SEGMENT EVEN ;保證地址從偶地址開始 WORD_ARRAY DW 100 DUP(?) DATA_SEG ENDS … … 第 4章 匯編語言程序設計 第 4章第 54頁共 256頁 4. ALIGN偽操作 ALIGN偽操作為保證雙字類型數(shù)組邊界從 4的倍數(shù)開始創(chuàng)造了條件,其格式為 ALIGN BOUNDARY 其中, BOUNDARY必須是 2的冪,例如: .DATA ALIGN 4 ARRAY DB 100 DUP(? ) 就可保證 ARRAY的值為 4的倍數(shù)。當然, ALIGN 2和 EVEN是等價的。 … … 第 4章 匯編語言程序設計 第 4章第 55頁共 256頁 匯編語言源程序結構 1. 完整段定義的程序結構 存儲器的物理地址 是由 段地址 和 偏移地址 組合而成的,匯編程序在把 源程序 轉換為 目標程序 時,必須確定 標號和變量 (代碼段和數(shù)據(jù)段的符號地址 )的 偏移地址 ,并且需要把有關信息通過目標模塊傳送給 連接程序 ,以便連接程序把不同的段和模塊連接在一起,形成一個 可執(zhí)行程序 。為此,需要用段定義偽操作,其格式如下: 第 4章 匯編語言程序設計 第 4章第 56頁共 256頁 SEGMENT_NAME SEGMENT 段 體 SEGMENT_NAME ENDS 其中,刪節(jié)號部分對于數(shù)據(jù)段、附加段和堆棧段來說,一般是存儲單元的定義、分配等偽操作;對于代碼段則是指令及偽操作。 … … 第 4章 匯編語言程序設計 第 4章第 57頁共 256頁 此外,還必須明確段和段寄存器的關系,這可用ASSUME偽操作來實現(xiàn),其格式為: ASSUME 段寄存器名 :段名 [, 段寄存器名 :段名 ,...] ASSUME 段寄存器名 : NOTHING 其中,段寄存器名必須是 CS、 DS、 ES和 SS(對于 386及其后繼機型還有 FS和 GS)中的一個,而段名則必須是由SEGMENT定義的段中的段名。 ASSUME NOTHING則可取消前面由 ASSUME所指定的段寄存器。 第 4章 匯編語言程序設計 第 4章第 58頁共 256頁 例如,下面是一個較為完整的匯編源程序段定義。 DATE_SEG1 SEGMENT ;定義數(shù)據(jù)段 DATE_SEG1 ENDS DATA_SEG2 SEGMENT ;定義數(shù)據(jù)附加段 DATA_SEG2 ENDS CODE_SEG SEGMENT ;定義代碼段 ASSUME CS:CODE_SEG , DS:DATA_SEG1 , ES:DATA_SEG2 ;開始執(zhí)行的入口地址設置 DS寄存器為當前數(shù)據(jù)段 … … 第 4章 匯編語言程序設計 第 4章第 59頁共 256頁 START: MOV AX, DATA_SEG1 ;將數(shù)據(jù)段地址賦予 DS MOV DS, AX ;設置 ES寄存器為當前附加段 MOV AX, DATA_SEG2 ;將附加數(shù)據(jù)段地址賦予 ES MOV ES, AX CODE_SEG ENDS ;代碼段定義結束 END START ;源程序結束 … 第 4章 匯編語言程序設計 第 4章第 60頁共 256頁 由于 ASSUME偽操作只是指定某個段分配給哪一個段寄存器,它并不能把段地址裝入段寄存器中 ,要把段地址裝入段寄存器中,就必須在代碼段中有對段地址裝入相應的段寄存器中的指令。如在上面的程序中,分別用兩條 MOV指令完成這一操作。如果程序中有堆棧段,也需要把段地址裝入 SS中。但是,代碼段 CS不需要這樣做,這一操作是在程序初始化時完成的。 第 4章 匯編語言程序設計 第 4章第 61頁共 256頁 為了對段定義作進一步地控制, SEGMENT偽操作添加有類型及屬性的說明,其格式如下: 段名 SEGMENT [定位類型 ][組合類型][使用類型] [類別 ] 段名 ENDS 在一般情況下,這些說明可以不用。但是,如果需要用連接程序把本程序與其他程序模塊相連接時,就需要使用這些說明。 … 第 4章 匯編語言程序設計 第 4章第 62頁共 256頁 2. 定位類型 (ALIGN_TYPE) 定位類型 用于說明 段的起始地址應有怎樣的邊界值 ,其取值可以是: PARA: 指定段的起始地址必須從一個 節(jié) 的邊界開始,通常 16個字節(jié)稱為一個節(jié),故本段的開始地址應為 XXXX0H。 BYTE: 該段可以從任何地址開始,這樣,起始偏移地址可能不是 0。 WORD: 該段必須從 字 的邊界開始,即段起始地址必須為偶數(shù) 。 第 4章 匯編語言程序設計 第 4章第 63頁共 256頁 DWORD: 該段必須從雙字邊界開始,即段起始地址的最低位必須為 4的倍數(shù) 。 PAGE: 該段必須從頁的邊界開始,即段起始地址的最低兩個十六進制數(shù)位必須為 0(該地址能被 256整除 ),即 XXX00H。 定位類型的默認項是 PARA,即若未指定定位類型時,則匯編程序默認為 PARA。 第 4章 匯編語言程序設計 第 4章第 64頁共 256頁 3. 組合類型 (COMBINE_TYPE) 組合類型用于說明程序連接時段的合并方法 ,其取值可以是: PRIVATE: 該段為私有段,在連接時將不與其他模塊中的同名段合并。 PUBLIC: 該段連接時可以把不同模塊中的同名段相連接而合并為一個段,其連接次序由連接命令指定。 每一分段都從節(jié) 的邊界開始 ,因此,各模塊的原有段之間可能存在小于 16個字節(jié)的間隙。 第 4章 匯編語言程序設計 第 4章第 65頁共 256頁 COMMON: 該段在連接時可以把不同模塊中的同名段重疊而形成一個段,由于各同名段有相同的起始地址,所以會產(chǎn)生覆蓋。 COMMON的連接長度是各分段中的最大長度。重疊部分的內容取決于排列在最后一段的內容 。 AT EXPRESSTION: 使段地址為表達式所計算出來的 16位值,但它不能用來指定代碼段。 MEMORY: 表示當幾個邏輯段連接時,本邏輯段定位在地址最高的地方。如果被連接的邏輯段中有多個段的組合類型都是 MEMORY,則匯編程序只將首先遇到的段作為 MEMORY段,其余的段均當做 COMMOM段處理。 第 4章 匯編語言程序設計 第 4章第 66頁共 256頁 STACK: 把不同模塊中的同名段組合而形成一個堆棧段,該段的長度為原有各堆棧段長度的總和 ,原有各段之間并無PUBLIC所連接段中的間隙,而且 棧頂可自動指向連接后形成的大堆棧段的(最終地址 +1)處 。 組合類型的默認項是 PRIVATE。 第 4章
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1