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

正文內(nèi)容

第三章--8086指令系統(tǒng)及匯編語言(編輯修改稿)

2025-09-11 23:05 本頁面
 

【文章內(nèi)容簡介】 050 CS 2022 1000 IP 操作碼 2022: 1000H 2022: 0FFFH 注意:這個過程都在代碼段內(nèi)! 也可以是 16位 如為: 1000H 1000H 2022H 2. 段內(nèi)間接尋址 在段內(nèi)間接尋址方式中 , 轉(zhuǎn)移地址的段內(nèi)偏移地址要么存放在一個 16位的寄存器中 , 要么存放在存貯器的兩個相鄰單元中 。 存放偏移地址的寄存器和存貯器的地址將按指令碼中規(guī)定的尋址方式給出 。 此時 ,尋址所得到的不是操作數(shù) , 而是轉(zhuǎn)移地址 。 例: JMP CX; CX的內(nèi)容為轉(zhuǎn)移地址的 段內(nèi) 偏移量 注意:必須是在段內(nèi)轉(zhuǎn)移! 其過程如圖 39所示。 JMP WORD PTR CX WORD PTR是尋址一個字的標記,指令中必須加上 圖 39 段內(nèi)間接尋址 操作碼 .. .. .. .. 2022: 4000H + 4000 24000 CS 2022 操作碼 2022: 0FFFH CX (新 IP) CX的內(nèi)容為新的 IP值,程序轉(zhuǎn)移到新的入口處 ,在指令中 CX的內(nèi)容為 4000H, CX值不能超出該段的區(qū)域 3. 段間直接尋址 在段間直接尋址方式中 , 指令碼中將直接給出 16位的段地址和 16位的段內(nèi)偏移地址 。 例: JMP FAR PTR ADD1; ADD1為轉(zhuǎn)移地址的標號 FAR表示轉(zhuǎn)移距離大于 177。 32K, 或是不同段之間轉(zhuǎn)移 。 PTR用來建立一個符號地址 , 但它本身并不分配存儲器 , 只是用來對已分配的存儲地址賦予另一種屬性 , 使該地址具有另一種類型 。 在執(zhí)行段間直接尋址指令時 , 指令操作碼后的第二個字將賦予代碼段寄存器 CS, 第一個字將賦予指令指針寄存器 IP。 最后 CS內(nèi)容和 IP內(nèi)容相加則得轉(zhuǎn)移地址 , 如圖 310所示 。 ADD1的值由計算機自動給出 圖 310 段間直接尋址 操作碼 偏移量低字節(jié) 00H 偏移量高字節(jié) 30H 段地址低字節(jié) 00H 段地址高字節(jié) 40H .. .. .. 操作碼 .. 43000H + 4000 43000 CS 3000 IP 轉(zhuǎn)移 新位置 段 1 段 2 ADD1 ADDR ADDR 4. 段間間接尋址 段間間接尋址方式和段內(nèi)間接尋址相似 。 但是 ,由于確定轉(zhuǎn)移地址需要 32位信息 , 因此 段間間接尋址只適用于存貯器尋址方式 。 用這種尋址方式可計算出存放轉(zhuǎn)移地址的存貯單元的首地址 , 與此相鄰的 4個單元中 , 前兩個單元存放 16位的段內(nèi)偏移地址 , 而后兩單元存放的是 16位的段地址 , 如圖 311所示 。 例: JMP DWORD PTR[ BP] [ DI] 在這里是 32位 , 兩個字 , 所以要加 DWORD, 如為 BP寄存器 , 要在 SS段中取數(shù) 。 圖 311 段間間接尋址 執(zhí)行該指令之前: SS=3000H BP=1000H DI=2022H 執(zhí)行該指令之后有了新的 CS和 IP的值 注意:如無 BP,則在 DS段內(nèi)求存放轉(zhuǎn)移地址的存貯單元的首地址 偏移量低字節(jié) 00H 偏移量高字節(jié) 20H 段地址低字節(jié) 00H 段地址高字節(jié) 80H .. 操作碼 .. 82022H 操作碼 .. 33000H + 8000 82022 CS 2022 IP 33000 2022 + DI 1000 BP 3000 SS 本節(jié)小結(jié): 1)尋址中的操作數(shù)(二、十、十六進制)的形式。 2)源操作數(shù)與目的操作數(shù)的位數(shù)必須一致。 3)立即數(shù)與地址的區(qū)別。 4)操作數(shù)物理地址的計算,如 有 BP寄存時應在 SS段內(nèi)取數(shù)。 5)變址尋址和相對尋址時,偏移量的計算方法。 6)直接尋址和間接尋址、相對尋址之間的差別。 7)各種指令的書寫格式和要求。 “ 8086執(zhí)行了一個總線周期”是指 8086做了哪些可能的操作?基本總線周期如何組成?在一個典型的讀存儲器總線周期中,地址信號、 ALE信號、RD信號、數(shù)據(jù)信號分別在何時產(chǎn)生? (畫出時序波形圖并給予解釋 ) 請寫出下列指令單獨執(zhí)行后,有關寄存器及存儲單元的內(nèi)容。 假設指令執(zhí)行前 (DS)=(ES)=3000H, (AX)=2022H, (BX)=1200H, (SI)=2, (31200H)=2400H, (31202H)=90F7H ( 1) ADD ES:[BX],900H ( 2) MOV AX, [BX+SI] 給定一個存放數(shù)據(jù)的內(nèi)存單元的偏移地址是 20C0H,( DS) =C00EH,求出該內(nèi)存單元的物理地址。 8086被復位以后,有關寄存器的狀態(tài)是什么?微處理器從何處開始執(zhí)行程序? 指出下列指令的錯誤 : (1) MOV AH,BX (2) MOV [SI],[BX] (3) MOV AX,[SI][DI] (4) MOV AX,[BX][BP] (5) MOV [BX],ES:AX (6) MOV CS,AX (7) MOV DS,2022H 指令系統(tǒng) 8086/8088的指令系統(tǒng)大致可分為 7種類型: 數(shù)據(jù)傳送指令 算數(shù)運算指令 邏輯運算和移位指令 串操作指令 程序控制指令 處理器控制指令 輸入 /輸出指令 數(shù)據(jù)傳送指令是最簡單 、 最常用的一類指令 , 它是負責 把數(shù)據(jù) 、 地址 、 或立即數(shù)傳送到寄存器或存儲單元中 。 1. MOV指令 MOV指令的格式為: MOV DST, SRC 功能:將源操作數(shù) src的內(nèi)容復制到目的操作數(shù) dest中,結(jié)果目的操作數(shù)的內(nèi)容等于源操作數(shù)的內(nèi)容,源操作數(shù) src的內(nèi)容不變。 對標志位的影響 :無 語法格式: MOV reg/mem/seg , reg/mem/seg/imm Reg:寄存器 ,mem:存儲器 ,seg:段寄存器, imm立即數(shù) 數(shù)據(jù)傳送是計算機中最基本、最重要的一種操作 傳送指令也是最常使用的一類指令 傳送指令把數(shù)據(jù)從一個位置傳送到另一個位置 除標志寄存器傳送指令外,均不影響標志位 圖 312 MOV指令的數(shù)據(jù)傳送方向 段寄存器 CS,DS,SS,ES 通用寄存器 AX,BX,CX,DX,BP,SP,SI,DI AH,AL,BH,BL,CH,CL,DH,DL 立即數(shù) 存貯器 通用寄存器 說明: ( 1)雙操作數(shù)指令不允許兩個操作數(shù)同時為段寄存器或存儲器操作數(shù)。 MOV seg , seg ;錯誤 MOV mem , mem ;錯誤 ( 2)立即數(shù)不能傳送到段寄存器中。 MOV seg , imm ; 錯誤 ( 3)目的操作數(shù)不允許使用 CS段寄存器。 ( 4) dest與 src必須類型匹配,即同時是字節(jié)或字類型。 以下幾點要注意:寄存器具有明確的類型,例如,AL、 AX分別為字節(jié)、字類型。 各種數(shù)據(jù)傳送指令例舉如下: ① 在 CPU各內(nèi)部寄存器之間傳送數(shù)據(jù) 。 MOV AL, BL; 8位數(shù)據(jù)傳送指令 (1個字節(jié) ) AL BL MOV AX, DX; 16位數(shù)據(jù)傳送指令 (1個字 ) AX DX ② 立即數(shù)傳送至 CPU的通用寄存器 (即 AX、 BX、 CX、 DX、BP、 SP、 SI、 DI) 。 MOV CL, 4 ; 8位數(shù)據(jù)傳送 (1個字節(jié) ) CL=04 MOV AX, 03FFH; 16位數(shù)據(jù)傳送 (1個字 ) AX 03FFH 注意 :立即數(shù)如為 10進制形式 , 則 8086自動轉(zhuǎn)換為 16進制 ③ CPU內(nèi)部寄存器 (除了 CS和 IP以外 )與 存貯器 (所有尋址方式 )之間的數(shù)據(jù)傳送 , 可以傳送一個字節(jié)也可以傳送一個字 。 ( ) 或 [ ]為其內(nèi)容的地址 在 CPU通用寄存器與 存貯器 之間傳送數(shù)據(jù): MOV [ DI] , CX CPU寄存器與存貯器之間傳送數(shù)據(jù): MOV AX, D1[ SI+ BX] MOV [ BP+ D1] , AX 。D1都為數(shù)值 使用中需要注意的是: ① MOV指令不能在兩個存貯器單元之間進行數(shù)據(jù)直接傳送。 如: MOV ( 2022H),( 3000H)或 MOV ( AX),( BX) ② MOV指令不能在兩個段寄存器之間進行數(shù)據(jù)直接傳送。 如: MOV DS, SS ③ 立即數(shù)不能直接傳送給段寄存器。 如: MOV DS, 2022H ④ 目的操作數(shù)不能為 CS、 IP。 如: MOV CS, AX , MOV IP, AX (會改變指令執(zhí)行的順序) ⑤ MOV指令不影響標志位 MOV指令的實質(zhì)是:把 SRC的內(nèi)容復制到 DST中,執(zhí)行操作后 SRC的內(nèi)容不變! 其中 , ① ~ ③ 的傳送可用通用寄存器作為中介 , 用兩條傳送指令完成 。 例如 , 為了將在同一個段內(nèi)的偏移地址為 AREA1的數(shù)據(jù)傳送到偏移地址為 AREA2單元中去 , 可執(zhí)行以下兩條傳送指令: MOV AL, AREA1 MOV AREA2, AL 例如 , 為了將立即數(shù)傳送給 DS, 可執(zhí)行以下兩條傳送指令: MOV AX, 1000H MOV DS, AX 在這兩個實例中 , AREA1和 AREA2在段定義時已經(jīng)給了明確的定義 ! 例:錯誤的 MOV 指令如下所示: MOV AX, BL ;類型不匹配 (數(shù)據(jù)長度不一致 ) MOV DS, 1000H ;不允許立即數(shù)送段寄存器 MOV [BX] , [SI] ;不允許內(nèi)存操作數(shù)之間傳送 MOV ES, CS ;不允許段寄存器之間傳送 MOV CS, AX ; 指令存在,但不能執(zhí)行 ,CS不能作為目的操作數(shù) 例如 , 將以 AREA1為首地址的 100個字節(jié)數(shù)據(jù)搬移到以 AREA2為首地址的內(nèi)存中 , 若 AREA1和 AREA2都在當前數(shù)據(jù)段中 , 可以用帶有循環(huán)控制的數(shù)據(jù)傳送程序來實現(xiàn) 。 程序如下: MOV SI, OFFSETAREA1; ( OFFSET是取地址 MOV DI, OFFSETAREA2; 偏移量 , 必須加上 ) MOV CX, 100 AGAIN: MOV AL, [ SI] ; RD為低 MOV [ DI] , AL ; WR為低 INC SI INC DI DEC CX JNZ AGAIN XX YY XX YY AREA2 AREA1 非法指令 — 無法確定是字節(jié)還是字操作 當無法通過任一個操作數(shù)確定是操作類型時,需要利用匯編語言的操作符顯式指明 MOV [BX+SI], 255 ; 非法指令 ,修正 : MOV BYTE PTR [BX+SI],255; BYTE PTR說明是字節(jié)操作 MOV WORD PTR [BX+SI],255; WORD PTR說明是字操作 2. 交換指令 XCHG指令的格式為: XCHG DST , SRC 執(zhí)行的操作 :交換 DST與 SRC的內(nèi)容 DST SRC 語法格式為: XCHG reg/mem, reg/mem 交換指令把一個字節(jié)或一個字的源操作數(shù)與目的操作數(shù)相交換 。 這種 交換只能在 通用寄存器之間 、 通用寄存器與存貯器之間進行 , 存儲器與存儲器之間不能交換段寄存器不能作為一個操作數(shù) 。 XCHG指令不影響標志位 。 例: XCHG BX , [BP+SI] 如指令執(zhí)行前:( BX) =6F30H,( BP) =0200H, 2F246H=54H 2F247H=51H ,( SI) =0046H,( SS) =2F00H,( 2F00H)=4254H, OPR2的物理地址 =2F00 16+0200+0046=2F246H 則指令執(zhí)行后:( BX) =5154H,
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1