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

正文內(nèi)容

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

  

【正文】 ND OPD, OPS TEST TEST OPD, OPS OR OR OPD, OPS XOR XOR OPD, OPS 8086指令系統(tǒng) 三、位操作指令 (續(xù) 1) 表 48 位操作指令 類別 操作碼 格式 算術(shù)移位指令 SAL SAL OPD, 1或 SAL OPD, CL SAR SAR OPD, 1或 SAR OPD, CL 邏輯移位指令 SHL SHL OPD, 1或 SHL OPD, CL SHR SHR OPD, 1或 SHR OPD, CL 8086指令系統(tǒng) 三、位操作指令 (續(xù) 2) 表 48 位操作指令 類別 操作碼 格式 不帶進(jìn)位的循環(huán)移位指令 ROL ROL OPD, 1或 ROL OPD, CL ROR ROR OPD, 1或 ROROPD, CL 帶進(jìn)位的循環(huán)移位指令 RCL RCL OPD, 1或 RCL OPD, CL RCR RCR OPD, 1或 RCR OPD, CL 8086指令系統(tǒng) 四、轉(zhuǎn)移指令 轉(zhuǎn)移指令分條件轉(zhuǎn)移指令和無(wú)條件轉(zhuǎn)移指令兩大類,其特點(diǎn)是改變程序的執(zhí)行順序(即改變指令指針 IP的值),但不改變狀態(tài)標(biāo)志位的狀態(tài)。類別 39。 其中 , 數(shù)值表達(dá)式的值應(yīng)為非負(fù)的整數(shù) , 其值在 0~ 65535之間 例 【 415】 匯編地址計(jì)數(shù)器和偽指令 ORG舉例 DATA SEGMENT ORG 4 BUF DB 39。 指存取某變量所需要的字節(jié)數(shù) 變量的定義格式如下: [變量名 ] 數(shù)據(jù)定義偽指令 表達(dá)式 [, … ] 匯編語(yǔ)言中的符號(hào)常量名 、 變量名 、 段名 、 過(guò)程名 、 標(biāo)號(hào)都稱為標(biāo)識(shí)符 。其格式是:分離運(yùn)算符 變量或標(biāo)號(hào),運(yùn)算結(jié)果是一個(gè)數(shù)值常量 3. 屬性分離運(yùn)算符 ① 段屬性分離運(yùn)算符 SEG。 無(wú)條件轉(zhuǎn)移指令可通過(guò)各種尋址方式得到要轉(zhuǎn)移的目的地址 , 常用的有直接尋址和間接尋址兩種 , 表 418列出了無(wú)條件轉(zhuǎn)移指令的格式和功能說(shuō)明 無(wú)條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令有兩點(diǎn)重要區(qū)別:一是前者的轉(zhuǎn)移是無(wú)條件的,不做任何判斷便轉(zhuǎn)向目的單元;二是前者的轉(zhuǎn)移范圍不受限制,而后者只能在 128~ 127個(gè)字節(jié)范圍內(nèi)轉(zhuǎn)移 順序與分支程序的設(shè)計(jì) 例 【 430】 編程實(shí)現(xiàn)符號(hào)函數(shù) 例【4 3 0 】程序 順序與分支程序的設(shè)計(jì) 對(duì)于多路分支的程序 , 如果直接用條件轉(zhuǎn)移指令實(shí)現(xiàn) , 那么 N路分支 , 就需要 N1條條件轉(zhuǎn)移指令 , 程序顯得冗長(zhǎng)繁瑣 , 可用跳轉(zhuǎn)表來(lái)實(shí)現(xiàn)多路分支 例 【 431】 對(duì)學(xué)生的成績(jī)分類 , 分類標(biāo)準(zhǔn)見表 419。 這樣既便于分工合作 , 又可避免重復(fù)勞動(dòng) , 節(jié)省存儲(chǔ)空間 , 提高程序設(shè)計(jì)的效率和質(zhì)量 , 使程序簡(jiǎn)潔 、 清晰 、 易讀 , 便于修改和擴(kuò)充 子程序設(shè)計(jì) 一、定義子程序 子程序的定義格式是: 子程序名 PROC [NEAR/FAR] ┇ 子程序名 ENDP 子程序也稱為過(guò)程 , PROC、 ENDP是定義子程序時(shí)必須使用的保留字 , PROC和 ENDP相當(dāng)于一對(duì)括號(hào) , 將子程序的指令包括在內(nèi) 。但由于寄存器個(gè)數(shù)有限 ,而且在處理過(guò)程中要經(jīng)常使用寄存器 ,如果要傳遞的參數(shù)很多 ,將導(dǎo)致無(wú)空閑寄存器供編寫程序使用。 32位微處理器的尋址方式與指令系統(tǒng) 格式: POPA, 功能:將從棧頂開始的 8個(gè)存儲(chǔ)字依次彈出堆棧并按 DI、 SI、 BP、 SP、 BX、 DX、 CX、 AX的順序分別傳送 。 5. 加法和減法指令 格式 1:加法 ( ADD OPD,OPS/ADC OPD,OPS) , 減法( SUB OPD,OPS/SBB OPD,OPS) 格式 2:加 1指令 ( INC OPD) , 減 1指令 ( DEC OPD) 擴(kuò)展功能: OPD和 OPS均可為 32位通用寄存器或存儲(chǔ)器數(shù) , 不能同時(shí)為存儲(chǔ)器數(shù) 80386的尋址方式和 80386相對(duì) 80286增加的指令 80386的尋址方式和 80386相對(duì) 80286增加的指令 6. 乘法指令 無(wú)符號(hào)乘法指令 格式: MUL OPS 被乘數(shù) 、 OPS( 乘數(shù) ) 和乘積的長(zhǎng)度 、 位置見表 427。這種方式叫做利用操作系統(tǒng)的標(biāo)準(zhǔn)功能調(diào)用進(jìn)行輸入 /輸出。 子程序?qū)θ肟趨?shù)進(jìn)行一系列處理之后得到處理結(jié)果 , 該結(jié)果必須送給調(diào)用它的主程序 , 即提供出口參數(shù)以便主程序使用 。 【 分析 】 每次判斷 AX的最低位,如果最低位為 1則 BL加 1;否則 BL不加 1。 如果當(dāng)前 (IP)到某標(biāo)號(hào) (即轉(zhuǎn)移的目的地址 )的位移量在 128~ 127之間 , 則該標(biāo)號(hào)稱為短標(biāo)號(hào) 。 地址表達(dá)式是由變量 、 常量 、 標(biāo)號(hào) 、 寄存器和運(yùn)算符組成的有意義的式子 地址表達(dá)式除可使用數(shù)值表達(dá)式的運(yùn)算符外 , 還可根據(jù)需要使用一些特殊運(yùn)算符 二、地址表達(dá)式 用來(lái)指明某個(gè)變量 、 標(biāo)號(hào)或地址表達(dá)式的類型屬性 , 或者使它臨時(shí)兼有與原定義所不同的類型屬性 , 但保持它們?cè)瓉?lái)的段屬性和偏移地址屬性不變 。 它有 3個(gè)屬性: ① 變量的段屬性 。 在匯編過(guò)程中 , 對(duì)凡是需要申請(qǐng)分配存儲(chǔ)單元的語(yǔ)句和產(chǎn)生目標(biāo)代碼的語(yǔ)句 , 匯編地址計(jì)數(shù)器則按該語(yǔ)句目標(biāo)代碼的長(zhǎng)度增值 。而可執(zhí)行指令經(jīng)匯編程序匯編后,變成機(jī)器可以識(shí)別并執(zhí)行的目標(biāo)碼 一 、 數(shù)據(jù)定義偽指令 數(shù)據(jù)定義偽指令見表 413 格式: [變量名 ] 數(shù)據(jù)定義偽指令 表達(dá)式[, … ] 功能:定義數(shù)據(jù)存儲(chǔ)區(qū),其類型由所使用的數(shù)據(jù)定義偽指令指定 偽指令 表 413 數(shù)據(jù)定義偽指令 偽指令 所申請(qǐng)的字節(jié)數(shù) DB 1 DW 2 DD 4 DF 6 DQ 8 DT 10 偽指令 二、符號(hào)定義偽指令 ① 等價(jià)偽指令 格式 : 符號(hào)名 EQU 表達(dá)式 功能:用來(lái)為常量 、 表達(dá)式及其他各種符號(hào)定義一個(gè)等價(jià)的符號(hào)名 , 但它并不申請(qǐng)分配存儲(chǔ)單元 ?;芳拇嫫髦荒苡?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是一個(gè)常數(shù) , 稱為立即數(shù) ) 說(shuō)明:指令操作碼后面單元的內(nèi)容為操作數(shù) ( 常數(shù)n) , 操作數(shù)在內(nèi)存代碼段 。 雙操作數(shù)指令 , 如: ADD AX, BX 大多數(shù)運(yùn)算型指令都是雙操作數(shù)指令 , 對(duì)這種指令 , 有的機(jī)器 ( 大中型 ) 使用 “ 三地址 ”指令:除給出參加運(yùn)算的兩個(gè)操作數(shù)外 , 還要指出運(yùn)算結(jié)果的存放地址 操作指令 ? 現(xiàn)代微型計(jì)算機(jī)中多采用二地址指令 , 兩個(gè)操作數(shù)分別稱為 “ 源操作數(shù) ” 和 “ 目的操作數(shù) ” , 指令執(zhí)行后 , 把運(yùn)算結(jié)果放到目的操作數(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是寄存器名 ) 說(shuō)明:尋找的操作數(shù)在寄存器 R中 例 【 41】 INC AX 二、寄存器間接尋址 匯編格式: [R]( R是寄存器名 ) 說(shuō)明:寄存器 R的內(nèi)容是操作數(shù)在內(nèi)存的 EA, 先從寄存器 R中取出操作數(shù)在內(nèi)存的 EA, 再根據(jù) EA和某段寄存器生成 PA尋找操作數(shù) , 所以稱為間接尋址 。字符串操作指令在使用格式和使用方法上有許多類似的地方,它們隱含使用的寄存器、標(biāo)志位和符號(hào)見表 410 8086指令系統(tǒng) 五、字符串操作指令 (續(xù) 1) 表 410 字符串操作指令使用中的一些隱含約定 源串指示器 DS:SI 目的串指示器 ES:DI 重復(fù)次數(shù)計(jì)數(shù)器 CX SCAS指令的搜索值 在 AL/AX中 LODS指令的目的地址 AL/AX 8086指令系統(tǒng) 五、字符串操作指令 (續(xù) 2) 表 410 字符串操作指令使用中的一些隱含約定 STOS指令的源地址 AL/AX 傳送方向 DF=0, SI、 DI自動(dòng)增量 (用 CLD指令實(shí)現(xiàn) ) DF=1, SI、 DI自動(dòng)減量 (用 STD指令實(shí)現(xiàn) ) … SB 不帶操作數(shù)的字節(jié)操作指令 … SW 不帶操作數(shù)的字操作指令 8086指令系統(tǒng) 五、字符串操作指令 (續(xù) 3) 系統(tǒng)規(guī)定:源串一定要在當(dāng)前數(shù)據(jù)段中,目的串只允許在當(dāng)前附加數(shù)據(jù)段中。 ③ 數(shù)據(jù)段 ( 或附加數(shù)據(jù)段 ) 中一般定義常量和變量 , 是為程序的代碼段提供數(shù)據(jù)和保存計(jì)算結(jié)果的 。 常量一般可以直接以數(shù)值形式出現(xiàn)在匯編語(yǔ)句中 , 這種常量稱數(shù)值常量 。而每個(gè)存儲(chǔ)單元中的初值由 DUP后面圓括號(hào)中的表達(dá)式給定,如果是 “ ? ” ,則表示變量的初值不確定 ⑥ 可以是以上表達(dá)式組成的序列,各表達(dá)式之間用逗號(hào)隔開 例 【 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)號(hào)是機(jī)器指令語(yǔ)句存放地址的符號(hào)表示 , 也可以是過(guò)程名 。 它的取值為: LENGTH變量 * TYPE 變量 , 也就是說(shuō) , 它的取值是一個(gè)變量所占內(nèi)存的實(shí)際字節(jié)數(shù) ③ 字節(jié)分離運(yùn)算符 HIGH和 LOW 格式: HIGH 常量或地址表達(dá)式; LOW 常量或地址表達(dá)式 其中 , HIGH分離出其后常量或地址表達(dá)式的高 8位 ,LOW分離出其后常量或地址表達(dá)式的低 8位 。例如利用計(jì)數(shù)來(lái)控制的循環(huán),每循環(huán)一次,計(jì)數(shù)值都要調(diào)整(增加或減少),控制部分根據(jù)計(jì)數(shù)器的值來(lái)決定是否退出循環(huán)。 因此 , 子程序調(diào)用指令 CALL共有 4種組合 , 見表 421 子程序設(shè)計(jì) 對(duì)于段間間接調(diào)用 , 需要雙字單元存放子程序的入口地址信息 , 第一個(gè)字單元中放子程序入口的偏移地址 , 第二個(gè)字單元中放子程序所在段的段首址 , 見表 422 2. 返回指令 RET RET指令通常作為子程序的最后一條指令,用來(lái)控制 CPU返回到主程序的斷點(diǎn)處繼續(xù)向下執(zhí)行, RET指令的語(yǔ)句格式及功能見表 423 子程序設(shè)計(jì) 無(wú)論是段內(nèi)返回還是段間返回 , 當(dāng) RET指令執(zhí)行后 , 主程序的斷點(diǎn)地址信息已送回到IP、 CS中 , 堆?;謴?fù)了轉(zhuǎn)子前的狀態(tài) RET指令的另一種格式是: RET N, 其中 N是偶數(shù) 。 此法的優(yōu)點(diǎn)是每個(gè)子程序要處理的數(shù)據(jù)或送出的結(jié)果都有獨(dú)立的存儲(chǔ)單元 , 編寫程序時(shí)不易出錯(cuò) 。 功能:將 OPS所指的 4或 6(80386)個(gè)內(nèi)存單元中的 2個(gè)字或 3個(gè)字先后送給 OPD和相應(yīng)的段寄存器中 , LDS和 LES指令分別隱含 DS和 ES段寄存器 。 在這種尋址方式下 , 有效地址由表中的 4個(gè)分量計(jì)算產(chǎn)生 , 見表 426。 參數(shù)存放在 X、 Y中可由 GCDP子程序使用 , 子程序處理結(jié)束后將結(jié)果存入 GCD, 主程序計(jì)算最小公倍數(shù)送LCM , 計(jì)算 X 、 Y 最 小 公 倍 數(shù) 的 方 法 是 :LCM=(X*Y)/GCD 例【4 3 5 】程序 子程序設(shè)計(jì) 子程序也可以不帶參數(shù) , 只是完成某種功能 。其操作是在正常 RET操作之后再做 SP+N→SP 子程序設(shè)計(jì) 三 、 調(diào)用子程序前后怎樣保存和恢復(fù)寄存器 如果在子程序中要用到某些寄存器 ( 或存儲(chǔ)單元 ) , 就會(huì)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1