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

正文內(nèi)容

第4章16位和32位微處理器的指令系統(tǒng)及匯編語言編程(存儲版)

2024-11-21 08:09上一頁面

下一頁面
  

【正文】 OM中的程序 , 一部分是 BASIC語言解釋程序 , 另一部分是基本輸入 /輸出系統(tǒng) BIOS。 此法的優(yōu)點是每個子程序要處理的數(shù)據(jù)或送出的結(jié)果都有獨立的存儲單元 , 編寫程序時不易出錯 。 這種主程序為子程序準備入口參數(shù) 、 子程序為主程序提供處理結(jié)果的過程稱為主程序和子程序間的參數(shù)傳遞 。 因此 , 子程序調(diào)用指令 CALL共有 4種組合 , 見表 421 子程序設(shè)計 對于段間間接調(diào)用 , 需要雙字單元存放子程序的入口地址信息 , 第一個字單元中放子程序入口的偏移地址 , 第二個字單元中放子程序所在段的段首址 , 見表 422 2. 返回指令 RET RET指令通常作為子程序的最后一條指令,用來控制 CPU返回到主程序的斷點處繼續(xù)向下執(zhí)行, RET指令的語句格式及功能見表 423 子程序設(shè)計 無論是段內(nèi)返回還是段間返回 , 當 RET指令執(zhí)行后 , 主程序的斷點地址信息已送回到IP、 CS中 , 堆棧恢復(fù)了轉(zhuǎn)子前的狀態(tài) RET指令的另一種格式是: RET N, 其中 N是偶數(shù) 。然后 AX邏輯右移 1位,左邊補 0,在某一時刻 AX必然為 0。例如利用計數(shù)來控制的循環(huán),每循環(huán)一次,計數(shù)值都要調(diào)整(增加或減少),控制部分根據(jù)計數(shù)器的值來決定是否退出循環(huán)。 當位移量為正時 , 表示向前轉(zhuǎn);當位移量為負時 , 表示向后轉(zhuǎn) , 條件轉(zhuǎn)移指令的目的地址均是短標號 條件轉(zhuǎn)移指令共有 18條,分成以下三類 1.簡單條件轉(zhuǎn)移指令 共有 10條,根據(jù)單個標志的狀態(tài)決定是否轉(zhuǎn)移 共有 4條 , 根據(jù)多個標志的狀態(tài)決定是否轉(zhuǎn)移 , 這類指令將比較對象視為無符號數(shù) 共有 4條 , 根據(jù)多個標志的狀態(tài)決定是否轉(zhuǎn)移 ,這類指令將比較對象視為帶符號數(shù) 順序與分支程序的設(shè)計 二 、 無條件轉(zhuǎn)移 無條件轉(zhuǎn)移指令使 CPU無條件地轉(zhuǎn)移到指令中指明的目的地址處執(zhí)行 , 在程序中用它將各分支的出口重新匯集到一起構(gòu)成多分支結(jié)構(gòu) , 特別是當條件轉(zhuǎn)移指令的轉(zhuǎn)移范圍超過 128~ 127個字節(jié)時 , 往往要借助無條件轉(zhuǎn)移指令實現(xiàn) 順序與分支程序的設(shè)計 無條件轉(zhuǎn)移指令和要轉(zhuǎn)移的目的地址可以在同一段 , 也可以在另一段 。 它的取值為: LENGTH變量 * TYPE 變量 , 也就是說 , 它的取值是一個變量所占內(nèi)存的實際字節(jié)數(shù) ③ 字節(jié)分離運算符 HIGH和 LOW 格式: HIGH 常量或地址表達式; LOW 常量或地址表達式 其中 , HIGH分離出其后常量或地址表達式的高 8位 ,LOW分離出其后常量或地址表達式的低 8位 。 其格式是: 類型 PTR 地址表達式 根據(jù)地址表達式的不同值 , 類型可以是 BYTE、 WORD、 DWORD、 NEAR、FAR 1.類型運算符 PTR 為了將源程序中的指令正確地翻譯成目標代碼 ,匯編程序要求每個語句中操作數(shù)的類型要明確 , 如果是雙操作數(shù)指令 , 還要求源操作數(shù)和目的操作數(shù)類型一致 , 既同時為字節(jié)類型或同時為字類型 。而每個存儲單元中的初值由 DUP后面圓括號中的表達式給定,如果是 “ ? ” ,則表示變量的初值不確定 ⑥ 可以是以上表達式組成的序列,各表達式之間用逗號隔開 例 【 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 標號是機器指令語句存放地址的符號表示 , 也可以是過程名 。 指變量所在段的首地址 ,當需要訪問該變量時 , 它所在段的首地址一定要在某一段寄存器中 ② 變量的偏移屬性 。 常量一般可以直接以數(shù)值形式出現(xiàn)在匯編語句中 , 這種常量稱數(shù)值常量 。 因此 , 段內(nèi)定義的所有標號和變量的偏移地址就是當前匯編地址計數(shù)器的值 。 ③ 數(shù)據(jù)段 ( 或附加數(shù)據(jù)段 ) 中一般定義常量和變量 , 是為程序的代碼段提供數(shù)據(jù)和保存計算結(jié)果的 。 如果一個常量在程序中使用非常頻繁可以用一個符號來表示它,這就是符號常量。字符串操作指令在使用格式和使用方法上有許多類似的地方,它們隱含使用的寄存器、標志位和符號見表 410 8086指令系統(tǒng) 五、字符串操作指令 (續(xù) 1) 表 410 字符串操作指令使用中的一些隱含約定 源串指示器 DS:SI 目的串指示器 ES:DI 重復(fù)次數(shù)計數(shù)器 CX SCAS指令的搜索值 在 AL/AX中 LODS指令的目的地址 AL/AX 8086指令系統(tǒng) 五、字符串操作指令 (續(xù) 2) 表 410 字符串操作指令使用中的一些隱含約定 STOS指令的源地址 AL/AX 傳送方向 DF=0, SI、 DI自動增量 (用 CLD指令實現(xiàn) ) DF=1, SI、 DI自動減量 (用 STD指令實現(xiàn) ) … SB 不帶操作數(shù)的字節(jié)操作指令 … SW 不帶操作數(shù)的字操作指令 8086指令系統(tǒng) 五、字符串操作指令 (續(xù) 3) 系統(tǒng)規(guī)定:源串一定要在當前數(shù)據(jù)段中,目的串只允許在當前附加數(shù)據(jù)段中。 立即尋址所提供的操作數(shù)直接放在指令中 , 它是緊跟在指令操作碼后面的一個可用 8位或 16位二進制補碼表示的有符號數(shù) 。尋找操作數(shù)地址的方式稱為尋址方式 表 41 8086/8088的 6種尋址方式 尋址方式 匯編格式 操作數(shù)位置 寄存器尋址 R 寄存器 寄存器間接尋址 [R] 內(nèi)存 變址尋址 X[R] 內(nèi)存 基址變址尋址 X[BR+IR] 內(nèi)存 直接尋址 [EA] 內(nèi)存 立即尋址 n 內(nèi)存代碼段 一、寄存器尋址 匯編格式: R( R是寄存器名 ) 說明:尋找的操作數(shù)在寄存器 R中 例 【 41】 INC AX 二、寄存器間接尋址 匯編格式: [R]( R是寄存器名 ) 說明:寄存器 R的內(nèi)容是操作數(shù)在內(nèi)存的 EA, 先從寄存器 R中取出操作數(shù)在內(nèi)存的 EA, 再根據(jù) EA和某段寄存器生成 PA尋找操作數(shù) , 所以稱為間接尋址 。 ? 指令的操作碼在機器中的表示比較簡單 , 只要對每一種操作指定相應(yīng)的二進制代碼即可;而指令的操作數(shù)字段的情形就比較復(fù)雜 。 雙操作數(shù)指令 , 如: ADD AX, BX 大多數(shù)運算型指令都是雙操作數(shù)指令 , 對這種指令 , 有的機器 ( 大中型 ) 使用 “ 三地址 ”指令:除給出參加運算的兩個操作數(shù)外 , 還要指出運算結(jié)果的存放地址 操作指令 ? 現(xiàn)代微型計算機中多采用二地址指令 , 兩個操作數(shù)分別稱為 “ 源操作數(shù) ” 和 “ 目的操作數(shù) ” , 指令執(zhí)行后 , 把運算結(jié)果放到目的操作數(shù)的地址之中 。指令根據(jù)一定的方式,找到操作數(shù)或操作數(shù)的地址,然后取出操作數(shù)進行處理。基址寄存器只能用 BX或 BP,變址寄存器只能用 SI或 DI 四、基址變址尋址 (續(xù) ) 表 43基址變址尋址方式物理地址生成 段 段寄存器 EA PA 數(shù)據(jù)段 DS [BX]+ [SI] +X (DS)左移4位 +EA [BX]+ [DI] +X 附加數(shù)據(jù)段 ES [BX]+ [SI] +X (ES)左移 4位 +EA [BX]+ [DI] +X 堆棧段 SS [BP] + [SI] +X (SS)左移 4位 +EA [BP] + [DI] +X 五、立即尋址 匯編格式: n( n是一個常數(shù) , 稱為立即數(shù) ) 說明:指令操作碼后面單元的內(nèi)容為操作數(shù) ( 常數(shù)n) , 操作數(shù)在內(nèi)存代碼段 。只要按規(guī)定設(shè)置好初始條件,選用正確的字符串操作指令,就可完成規(guī)定的操作,這些指令的前面可加重復(fù)前綴,能在條件滿足的情況下反復(fù)執(zhí)行,而不用考慮指針如何移動、循環(huán)次數(shù)如何控制等問題,從而簡化了程序設(shè)計。而可執(zhí)行指令經(jīng)匯編程序匯編后,變成機器可以識別并執(zhí)行的目標碼 一 、 數(shù)據(jù)定義偽指令 數(shù)據(jù)定義偽指令見表 413 格式: [變量名 ] 數(shù)據(jù)定義偽指令 表達式[, … ] 功能:定義數(shù)據(jù)存儲區(qū),其類型由所使用的數(shù)據(jù)定義偽指令指定 偽指令 表 413 數(shù)據(jù)定義偽指令 偽指令 所申請的字節(jié)數(shù) DB 1 DW 2 DD 4 DF 6 DQ 8 DT 10 偽指令 二、符號定義偽指令 ① 等價偽指令 格式 : 符號名 EQU 表達式 功能:用來為常量 、 表達式及其他各種符號定義一個等價的符號名 , 但它并不申請分配存儲單元 。 ② 定位方式 、 組合方式和類別是可選項 , 可省略 。 在匯編過程中 , 對凡是需要申請分配存儲單元的語句和產(chǎn)生目標代碼的語句 , 匯編地址計數(shù)器則按該語句目標代碼的長度增值 。常量主要用于偽指令中給變量賦初值 , 或者用作機器指令語句中的立即操作數(shù) 、 變址尋址和基址變址尋址中的位移量 。 它有 3個屬性: ① 變量的段屬性 。 如果該地址表達式為一變量 ( 或標號 ) 名 , 用 DW偽指令是取它的偏移地址來初始化變量 , 用 DD偽指令是取它的段首址和偏移地址來初始化變量 表達式的幾種方式 ④ ?(表示所定義的變量初值不確定) ⑤ 重復(fù)子句 格式: n DUP(表達式) 其中, n是重復(fù)因子,只能取正整數(shù),它表示定義了 n個存儲單元,其類型由它前面的數(shù)據(jù)定義偽指令確定。 地址表達式是由變量 、 常量 、 標號 、 寄存器和運算符組成的有意義的式子 地址表達式除可使用數(shù)值表達式的運算符外 , 還可根據(jù)需要使用一些特殊運算符 二、地址表達式 用來指明某個變量 、 標號或地址表達式的類型屬性 , 或者使它臨時兼有與原定義所不同的類型屬性 , 但保持它們原來的段屬性和偏移地址屬性不變 。 它的取值根據(jù)定義該變量時 , 數(shù)據(jù)定義偽指令后面第一個表達式的形式而定 , 如果第一個表達式為重復(fù)子句 “ n DUP( 表達式 ) ” , 則取值為前面的重復(fù)因子 n,如果為其他形式的表達式 , 則取值為 1 ② 取變量所含的數(shù)據(jù)存儲區(qū)大小運算符 SIZE,格式: SIZE 變量 。 如果當前 (IP)到某標號 (即轉(zhuǎn)移的目的地址 )的位移量在 128~ 127之間 , 則該標號稱為短標號 。 在循環(huán)體工作之前 , 把工作變量 ( 保存中間結(jié)果或最后結(jié)果 ) 、 控制變量 ( 控制循環(huán)是否結(jié)束 ) 、 地址單元 、工作寄存器等置初值 , 為循環(huán)做好準備 , 初始化工作可保征循環(huán)程序在正確的初始狀態(tài)下工作 ② 工作部分 , 這是整個循環(huán)程序的核心部分 ,它由需要重復(fù)操作的指令序列組成 , 工作部分隨求解問題所采用的算法不同而異 ③ 調(diào)整部分,為了保證工作部分每次在新的意義下工作,每執(zhí)行一次工作部分,必須對操作數(shù)或操作數(shù)地址進行修改,為下一次循環(huán)作準備,同時控制變量也作相應(yīng)的調(diào)整,為控制部分的條件判定作準備。 【 分析 】 每次判斷 AX的最低位,如果最低位為 1則 BL加 1;否則 BL不加 1。 根據(jù) OPD尋址方式的不同 , 又分為直接調(diào)用和間接調(diào)用 。 子程序?qū)θ肟趨?shù)進行一系列處理之后得到處理結(jié)果 , 該結(jié)果必須送給調(diào)用它的主程序 , 即提供出口參數(shù)以便主程序使用 。 假定 X、 Y的值分別為 3 24,處理過程見表 424 子程序設(shè)計 2. 約定單元法 約定單元法是把入口參數(shù)和出口參數(shù)都在約定的存儲單元中 。這種方式叫做利用操作系統(tǒng)的標準功能調(diào)用進行輸入 /輸出。 執(zhí)行時根據(jù) DF的值和源串的類型自動修改SI(或 ESI)的內(nèi)容 , 利用 REP前綴可以連續(xù)輸出源串中的內(nèi)容 , 直到 CX(或 ECX)減到零為止 80286相對 8086增加的指令 7. 移位指令 格式 : SHL OPD,OPS ( 邏輯左移指令 ) SHR OPD,OPS ( 邏輯右移指令 ) SAL OPD,OPS ( 算術(shù)左移指令 ) SAR OPD,OPS ( 算術(shù)右移指令 ) ROL OPD,OPS ( 不帶進位的循環(huán)左移指令 ) ROR OPD,OPS ( 不帶進位的循環(huán)右移指令 ) 802
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1