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

正文內(nèi)容

第4章16位和32位微處理器的指令系統(tǒng)及匯編語言編程(編輯修改稿)

2024-11-17 08:09 本頁面
 

【文章內(nèi)容簡介】 功能:將匯編地址計數(shù)器設(shè)置成數(shù)值表達(dá)式的值 。 其中 , 數(shù)值表達(dá)式的值應(yīng)為非負(fù)的整數(shù) , 其值在 0~ 65535之間 例 【 415】 匯編地址計數(shù)器和偽指令 ORG舉例 DATA SEGMENT ORG 4 BUF DB 39。readme39。 ORG $+5 NUM DB 2 DATA ENDS 匯編語言中的常量、變量及標(biāo)號 一 、 常量 常量是指在程序執(zhí)行期間不變的量 。 在8086/8088宏匯編語言中可使用的常量見表 414。常量主要用于偽指令中給變量賦初值 , 或者用作機(jī)器指令語句中的立即操作數(shù) 、 變址尋址和基址變址尋址中的位移量 。 常量一般可以直接以數(shù)值形式出現(xiàn)在匯編語句中 , 這種常量稱數(shù)值常量 。但對經(jīng)常使用的數(shù)值常量 , 可以事先為它定義一個名字 , 然后在語句中用名字來表示該常量 , 這種常量稱符號常量 。 偽指令 EQU和等號 “ =”可用來實(shí)現(xiàn)將數(shù)值常量定義成符號常量 匯編語言中的常量、變量及標(biāo)號 表 414 8086/8088宏匯編語言中所使用的常量 常量分類 格式 X的取值 舉例 二進(jìn)制常量 XX… XB 0或 1 01000001B 八進(jìn)制常量 XX… XO XX… XQ 0~ 7 1234Q 十進(jìn)制常量 XX… X XX… XD 0~ 9 123, 123D 十六進(jìn)制常量 XX… XH 0~ 9 A~ F 1234H, 0A12FH 字符常量 39。XX… X39。 XX… X ASCII字符 39。012339。 readme 匯編語言中的常量、變量及標(biāo)號 二、變量 在匯編語言中 , 變量是一個數(shù)據(jù)單元的名字 , 即數(shù)據(jù)存放地址的符號表示 。 它有 3個屬性: ① 變量的段屬性 。 指變量所在段的首地址 ,當(dāng)需要訪問該變量時 , 它所在段的首地址一定要在某一段寄存器中 ② 變量的偏移屬性 。 指變量所在段的首地址到變量所在的存儲單元之間的距離 , 用字節(jié)數(shù)表示 。 它表示變量在某段的相對位置 , 也就是我們所說的偏移地址 ( 或有效地址 ) EA ③ 變量的類型 。 指存取某變量所需要的字節(jié)數(shù) 變量的定義格式如下: [變量名 ] 數(shù)據(jù)定義偽指令 表達(dá)式 [, … ] 匯編語言中的符號常量名 、 變量名 、 段名 、 過程名 、 標(biāo)號都稱為標(biāo)識符 。 標(biāo)識符是由字母 、 數(shù)字 ( 0~ 9) 、 特殊字符 ( ? 、 .、 @、 _、 $) 等組成的字符串 , 但該字符串不能以數(shù)字或下劃線 ‘ _’作為開始字符 。 標(biāo)識符最大長度不能超過 31個字符 , 并且匯編語言對字母的大寫和小寫沒有統(tǒng)一要求 , 也就是說 , 匯編語言對標(biāo)識符中字母的大寫和小寫不作區(qū)分 , 如 ABC、 aBc、 Abc和 aBC都認(rèn)為是同一個標(biāo)識符 。 注意不能使用匯編語言的保留字如算術(shù)運(yùn)算指令名 ADD、 SUB等做標(biāo)識符 : ① 數(shù)值表達(dá)式 ② ASCII字符串 ( 只有用 DB定義變量時 , 才允許字符串長度超過 2個字符 ) ③ 地址表達(dá)式 。 如果該地址表達(dá)式為一變量 ( 或標(biāo)號 ) 名 , 用 DW偽指令是取它的偏移地址來初始化變量 , 用 DD偽指令是取它的段首址和偏移地址來初始化變量 表達(dá)式的幾種方式 ④ ?(表示所定義的變量初值不確定) ⑤ 重復(fù)子句 格式: n DUP(表達(dá)式) 其中, n是重復(fù)因子,只能取正整數(shù),它表示定義了 n個存儲單元,其類型由它前面的數(shù)據(jù)定義偽指令確定。而每個存儲單元中的初值由 DUP后面圓括號中的表達(dá)式給定,如果是 “ ? ” ,則表示變量的初值不確定 ⑥ 可以是以上表達(dá)式組成的序列,各表達(dá)式之間用逗號隔開 例 【 416】 有下面的數(shù)據(jù)段 , 畫出其內(nèi)存分配圖 DATA SEGMENT TABLE DB 1, 2, 3, 2 DUP(6, 2) COUNTER EQU $TABLE VARY DW 1234H CHAR DB ’123’, 3 DUP(1) POINTER1 DW VARY POINTER2 DD CHAR DATA ENDS 標(biāo)號是機(jī)器指令語句存放地址的符號表示 , 也可以是過程名 。 過程名實(shí)際上是過程入口地址的符號表示 , 即過程第一條機(jī)器指令語句的存放地址 標(biāo)號的用法有兩種: ① 在代碼段某一指令的前面 , 是當(dāng)前一條指令語句地址的符號表示 , 用來提供一個轉(zhuǎn)移地址 ,讓其他的指令向此指令轉(zhuǎn)移 , 一般的機(jī)器指令語句前不需要標(biāo)號 ② 用來表示過程入口地址 三、標(biāo)號 匯編語言中的運(yùn)算符號和表達(dá)式 數(shù)值表達(dá)式是利用算術(shù) 、 邏輯 、 移位或關(guān)系運(yùn)算符將常量連結(jié)在一起構(gòu)成的表達(dá)式 , 它的運(yùn)算結(jié)果是一個數(shù)值 ① 算術(shù)運(yùn)算符共有 +、 、 *、 /、 MOD 5個 ,其中 *、 /、 MOD優(yōu)先級相同 , +、 優(yōu)先級相同 ,并且 *、 /、 MOD優(yōu)先級高于 +、 。 可利用括號改變一個表達(dá)式某一部分的優(yōu)先級 。 MOD是取余數(shù) ,如 7 MOD 3的值是 1 ② 邏輯運(yùn)算符有 AND、 OR、 XOR、 NOT 4個 ,分別是邏輯與 、 邏輯或 、 邏輯異或 、 邏輯非 。 邏輯運(yùn)算是按位進(jìn)行的 , 所以運(yùn)算的結(jié)果仍是整數(shù)常量 一、數(shù)值表達(dá)式 ③ 移位運(yùn)算符有左移 SHL和右移 SHR 2個運(yùn)算符 。 SHL表示將常量左移運(yùn)算符右邊常量規(guī)定的次數(shù) , SHR表示將常量右移運(yùn)算符右邊常量規(guī)定的次數(shù) , 所空的位補(bǔ) 0 ④ 關(guān)系運(yùn)算符有 EQ、 NE、 GT、 LT、 GE、LE共 6個運(yùn)算符 , 分別是等于 、 不等于 、 大于 、小于 、 大于或等于 、 小于或等于 。 關(guān)系運(yùn)算的結(jié)果是兩個特殊的量 , 若關(guān)系不成立 , 則結(jié)果為 0;否則為 0FFFFH 地址表達(dá)式的值是段內(nèi)偏移地址 , 它具有段 、 偏移地址及類型三個屬性 。 地址表達(dá)式是由變量 、 常量 、 標(biāo)號 、 寄存器和運(yùn)算符組成的有意義的式子 地址表達(dá)式除可使用數(shù)值表達(dá)式的運(yùn)算符外 , 還可根據(jù)需要使用一些特殊運(yùn)算符 二、地址表達(dá)式 用來指明某個變量 、 標(biāo)號或地址表達(dá)式的類型屬性 , 或者使它臨時兼有與原定義所不同的類型屬性 , 但保持它們原來的段屬性和偏移地址屬性不變 。 其格式是: 類型 PTR 地址表達(dá)式 根據(jù)地址表達(dá)式的不同值 , 類型可以是 BYTE、 WORD、 DWORD、 NEAR、FAR 1.類型運(yùn)算符 PTR 為了將源程序中的指令正確地翻譯成目標(biāo)代碼 ,匯編程序要求每個語句中操作數(shù)的類型要明確 , 如果是雙操作數(shù)指令 , 還要求源操作數(shù)和目的操作數(shù)類型一致 , 既同時為字節(jié)類型或同時為字類型 。 下面分 4種情況說明: ① 對于單操作數(shù)指令 , 操作數(shù)的類型必須明確 ② 對于雙操作數(shù)指令 , 只要有一個操作數(shù)類型明確就可以了 ③ 如果兩個操作數(shù)類型都明確 , 則它們的類型必須一致 ④ 如果兩個操作數(shù)類型都不明確 , 就要用 PTR來指定類型了 跨段前綴 “ :”用于臨時給變量 、 標(biāo)號或地址表達(dá)式指定一個段屬性 , 且只能在所出現(xiàn)的語句中有效 , 它并不改變地址表達(dá)式的偏移地址和類型屬性 , 它的格式是: ① 段寄存器名:地址表達(dá)式 , ② 段名:地址表達(dá)式 MOV AX, [SI]等價于 MOV AX, DS:[SI], 默認(rèn)從數(shù)據(jù)段中取數(shù)據(jù) 。 若改為 MOV AX, ES:[SI], 則從附加數(shù)據(jù)段中取數(shù)據(jù) 2.跨段前綴 “ :” 屬性分離運(yùn)算符可分離出變量、標(biāo)號的段、偏移地址及類型的屬性值。其格式是:分離運(yùn)算符 變量或標(biāo)號,運(yùn)算結(jié)果是一個數(shù)值常量 3. 屬性分離運(yùn)算符 ① 段屬性分離運(yùn)算符 SEG。 該運(yùn)算符分離出其后變量或標(biāo)號所在段的首地址 ② 偏移屬性分離運(yùn)算符 OFFSET。 該運(yùn)算符分離出其后變量或標(biāo)號的偏移地址 ③ 類型分離運(yùn)算符 TYPE 該運(yùn)算符取其后變量或標(biāo)號的類型 。 如果是變量 ,其類型值由變量的類型確定 , 某一變量類型的類型值和該變量在內(nèi)存中所占的字節(jié)數(shù)相同 ① 取變量所含的數(shù)據(jù)存儲單元個數(shù)運(yùn)算符LENGTH, 格式: LENGTH 變量 。 它的取值根據(jù)定義該變量時 , 數(shù)據(jù)定義偽指令后面第一個表達(dá)式的形式而定 , 如果第一個表達(dá)式為重復(fù)子句 “ n DUP( 表達(dá)式 ) ” , 則取值為前面的重復(fù)因子 n,如果為其他形式的表達(dá)式 , 則取值為 1 ② 取變量所含的數(shù)據(jù)存儲區(qū)大小運(yùn)算符 SIZE,格式: SIZE 變量 。 它的取值為: LENGTH變量 * TYPE 變量 , 也就是說 , 它的取值是一個變量所占內(nèi)存的實(shí)際字節(jié)數(shù) ③ 字節(jié)分離運(yùn)算符 HIGH和 LOW 格式: HIGH 常量或地址表達(dá)式; LOW 常量或地址表達(dá)式 其中 , HIGH分離出其后常量或地址表達(dá)式的高 8位 ,LOW分離出其后常量或地址表達(dá)式的低 8位 。 匯編語言中的常用的運(yùn)算符的優(yōu)先級見表 417。 順序與分支程序的設(shè)計 順序型結(jié)構(gòu)程序的特征是在程序的指令中無轉(zhuǎn)移指令 , 計算機(jī)從程序的第一條指令開始順序執(zhí)行 , 直到程序的最后一條指令為止 例 【 429】 在一個表中存放著 0到 9十個數(shù)字的立方值 ,編程從鍵盤輸入 0到9之間的任意一個數(shù) ,查表找出這個數(shù)的立方值 順序與分支程序的設(shè)計 有分支控制的程序結(jié)構(gòu)稱為分支型結(jié)構(gòu) ( 或稱選擇結(jié)構(gòu) ) 。 分支型結(jié)構(gòu)可分為二分支型結(jié)構(gòu)和多分支型結(jié)構(gòu) 。 在分支程序中 , 不同的條件往往是通過標(biāo)志寄存器中條件標(biāo)志的不同狀態(tài)反映的 。因此分支程序設(shè)計中一個至關(guān)重要的問題是根據(jù)各標(biāo)志的不同狀態(tài)選用合適的轉(zhuǎn)移指令 。 轉(zhuǎn)移指令分條件轉(zhuǎn)移指令和無條件轉(zhuǎn)移指令兩大類 一、條件轉(zhuǎn)移 語句格式: [標(biāo)號 :]操作符 短標(biāo)號 功能:如果條件滿足,則 (IP)+位移量→ IP 順序與分支程序的設(shè)計 在轉(zhuǎn)移指令中 , 位移量為當(dāng)前 (IP)到轉(zhuǎn)移目的地址處的字節(jié)距離 。 如果當(dāng)前 (IP)到某標(biāo)號 (即轉(zhuǎn)移的目的地址 )的位移量在 128~ 127之間 , 則該標(biāo)號稱為短標(biāo)號 。 當(dāng)位移量為正時 , 表示向前轉(zhuǎn);當(dāng)位移量為負(fù)時 , 表示向后轉(zhuǎn) , 條件轉(zhuǎn)移指令的目的地址均是短標(biāo)號 條件轉(zhuǎn)移指令共有 18條,分成以下三類 1.簡單條件轉(zhuǎn)移指令 共有 10條,根據(jù)單個標(biāo)志的狀態(tài)決定是否轉(zhuǎn)移 共有 4條 , 根據(jù)多個標(biāo)志的狀態(tài)決定是否轉(zhuǎn)移 , 這類指令將比較對象視為無符號數(shù) 共有 4條 , 根據(jù)多個標(biāo)志的狀態(tài)決定是否轉(zhuǎn)移 ,這類指令將比較對象視為帶符號數(shù) 順序與分支程序的設(shè)計 二 、 無條件轉(zhuǎn)移 無條件轉(zhuǎn)移指令使 CPU無條件地轉(zhuǎn)移到指令中指明的目的地址處執(zhí)行 , 在程序中用它將各分支的出口重新匯集到一起構(gòu)成多分支結(jié)構(gòu) , 特別是當(dāng)條件轉(zhuǎn)移指令的轉(zhuǎn)移范圍超過 128~ 127個字節(jié)時 , 往往要借助無條件轉(zhuǎn)移指令實(shí)現(xiàn) 順序與分支程序的設(shè)計 無條件轉(zhuǎn)移指令和要轉(zhuǎn)移的目的地址可以在同一段 , 也可以在另一段 。 前者稱為段內(nèi)轉(zhuǎn)移 , 后者稱為段間轉(zhuǎn)移 。 段內(nèi)轉(zhuǎn)移指令只改變指令指針 IP的內(nèi)容 , 而段間轉(zhuǎn)移指令則要同時改變指令指針 IP和代碼段寄存器的內(nèi)容 。 無條件轉(zhuǎn)移指令可通過各種尋址方式得到要轉(zhuǎn)移的目的地址 , 常用的有直接尋址和間接尋址兩種 , 表 418列出了無條件轉(zhuǎn)移指令的格式和功能說明 無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令有兩點(diǎn)重要區(qū)別:一是前者的轉(zhuǎn)移是無條件的,不做任何判斷便轉(zhuǎn)向目的單元;二是前者的轉(zhuǎn)移范圍不受限制,而后者只能在 128~ 127個字節(jié)范圍內(nèi)轉(zhuǎn)移 順序與分支程序的設(shè)計 例 【 430】 編程實(shí)現(xiàn)符號函數(shù) 例【4 3 0 】程序 順序與分支程序的設(shè)計 對于多路分支的程序 , 如果直接用條件轉(zhuǎn)移指令實(shí)現(xiàn) , 那么 N路分支 , 就需要 N1條條件轉(zhuǎn)移指令 , 程序顯得冗長繁瑣 , 可用跳轉(zhuǎn)表來實(shí)現(xiàn)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1