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

正文內(nèi)容

[信息與通信]第三章8086尋址方式和指令系統(tǒng)-在線瀏覽

2025-02-15 12:09本頁面
  

【正文】 ┋┋┋┋操作碼代碼段數(shù)據(jù)段00023412DS0200H1 62022H+ MASK21A00HAHALAX 12 34BX 1500HSI0300H21A00H指令 MOV AX, MASK[BX][SI]的執(zhí)行過程 從以上這些尋址方式可以看到,在涉及到操作數(shù)的地址時,常常要在指令中使用方括號,有關(guān)帶方括號的地址表達(dá)式必須遵循下列規(guī)則: ① 立即數(shù)可以出現(xiàn)在方括號內(nèi),表示直接尋址,如[1000H]; ② 只有 BX, BP, SI和 DI這四個寄存器可以出現(xiàn)在方括號內(nèi),它們可以單獨出現(xiàn),也可以由兩個寄存器組合起來(只能相加),同時還可以加上一個 8位或16位的位移量,但 BX和 BP不能同時出現(xiàn)在方括號中,SI和 DI也不能同時出現(xiàn)在方括號中; EA的 24種計算方法: EA=(4 種)[BX]{ 寄存器間接尋址[BP][SI][DI]}EA=(8 種)[BX] + D 8 或D 1 6{ 寄存器相對尋址[BP] + D 8 或D 1 6[SI]+D8或D16[DI]+D8或D16}EA=(4 種)[BX] +[SI][BP]{ 基址變址尋址[BX][BP]+[DI]+[SI]+[DI]}EA=(8 種)[BX] +[SI]+D8或D16[BP]{相對基址變址尋址[BX][BP]+[DI]+D8或D16+[SI]+D8或D16+[DI]+D8或D16}③ 由于方括號有 相加 的含義,下面幾種寫法都是等價的: 6[BX][SI] [BX+6][SI] [BX][SI+6] [BX+SI+6] ④ 若方括號內(nèi)出現(xiàn) BP,則隱含使用 SS段來提供段地址,物理地址 =SS 16+EA,其他情況均使用 DS段來提供段地址,物理地址 =DS 16+EA,當(dāng)然我們可以通過加段超越前綴來修改段地址。例如指令 DAA,它的含義是對寄存器 AL中的數(shù)據(jù)進(jìn)行十進(jìn)制數(shù)調(diào)整,結(jié)果仍保留在 AL中。 直接 :端口號由指令直接給出,是一個 8位的立即數(shù)。 例如 IN AL, 30H(直接端口尋址) 又如 MOV DX, 1000H IN AL, DX (間接端口尋址) IN AL, 1000H 前面介紹的各種尋址方式都是針對源操作數(shù)的,目的操作數(shù)均用寄存器來表示。 如 MOV [BX], AL 寄存器間接尋址 寄存器尋址 目的 源 將在后面章節(jié)詳細(xì)介紹。 通常,計算機(jī)用戶采用匯編語言編寫 程序時,一般可不必了解每條指令的機(jī)器 碼。所以我們要簡單介紹一下 機(jī)器語言指令的基本概念和編碼方式。但對于 8086系統(tǒng)來 說,由于其很多種尋址方式,很難列出一 張 8086指令與機(jī)器語言的對照表。指令通常由操作碼和操作 數(shù)兩部分組成,每條指令的操作碼列于附 錄 B中。 MOD REG R/M01234567815WD0 00 01 1操作碼圖 37 典型的 MOV指令的編碼格式 W(位): 說明傳送數(shù)據(jù)的類型; W=0,為字節(jié) W=1,為字 D(位): 標(biāo)明數(shù)據(jù)傳送的方向; D=0,數(shù)據(jù)從 寄存器 傳出 D=1,數(shù)據(jù)傳送到 寄存器 REG( 3位): 說明 寄存器 (段寄存器除 外)的名稱,與 W位共同決定使用的是哪 個寄存器。具體 編碼見表 31。表 32給出 MOD和 R/M的編碼格式, 其中 D8表示 8位位移量, D16為 16位位移量。指令的其他代碼仍按前面的 方法求得。 解: 需增加的字節(jié)為 001 110 CS→ =01 所以,需增加的字節(jié)為 00101110=2EH 所以,所求的指令機(jī)器碼為 2E 88 17H。 段寄存器CS,DS,ES,SS立即數(shù)存儲器通用寄存器AXBXCXDXSIDISPBPAHALBHBLCHCLDHDL圖 312 MOV指令允許傳送數(shù)據(jù)的途徑 ① CPU內(nèi)部寄存器 之間的數(shù)據(jù)傳送 MOV指令 可實現(xiàn): MOV AX, BX MOV BH, AL MOV AL, AH 段寄存器CS,DS,ES,SS立即數(shù)存儲器通用寄存器AXBXCXDXSIDISPBPAHALBHBLCHCLDHDL圖 312 MOV指令允許傳送數(shù)據(jù)的途徑 ② 寄存器與內(nèi)存 之間的數(shù)據(jù)傳送 MOV AX, [1234H] MOV BX, [BX] MOV [BP], CX 段寄存器CS,DS,ES,SS立即數(shù)存儲器通用寄存器AXBXCXDXSIDISPBPAHALBHBLCHCLDHDL圖 312 MOV指令允許傳送數(shù)據(jù)的途徑 ③ 將立即數(shù) → 寄存器 或內(nèi)存單元 MOV AX, 1234H MOV [DI], 1000H MOV AL,’ B’ 段寄存器CS,DS,ES,SS立即數(shù)存儲器通用寄存器AXBXCXDXSIDISPBPAHALBHBLCHCLDHDL圖 312 MOV指令允許傳送數(shù)據(jù)的途徑 ④ 段寄存器與內(nèi)存或寄存器 MOV DS, AX MOV DS, AX MOV ES, [BX] 幾點說明: MOV 12H, AL MOV CS, 1000H MOV IP, 2022H MOV AX, IP ① 指令中,立即數(shù)不能作為目的操作數(shù), CS和 IP也不能作為目的操作數(shù),即它們的值不能隨意修改。 ② 兩個內(nèi)存單元之間,以及兩個段寄存器之間不能直接傳送數(shù)據(jù)。 MOV DS, 2022H 要換成: MOV AX, 2022H MOV DS, AX(其它寄存器也可) ④ 當(dāng)指令是給 SS段寄存器賦值時,系統(tǒng)會自動禁止外部中斷,等到本條指令和下條指令執(zhí)行之后,又自動開中斷。(指令執(zhí)行后,DX=0005H) 例 326 MOV DX, OFFSET ARRAY 143B0000000031A601‘G ’( 4 7 )‘O ’( 4 F )‘O ’( 4 F )‘D ’( 4 4 )AREA1AREA2ARRAYSTRINGDATA段0000H0002H0005H0009H偏移地址例 327 MOV AL, AREA1 ; 14H→AL MOV AREA2+1, AL ; 14H→0003H 單元 ★ MOV AREA2+1, AREA1 (可以嗎?) 14H 143B0000000031A601‘G ’( 4 7 )‘O ’( 4 F )‘O ’( 4 F )‘D ’( 4 4 )AREA1AREA2ARRAYSTRINGDATA段0000H0002H0005H0009H偏移地址例 328 MOV AX, ARRAY+1 問指令執(zhí)行后, AX= ? +1 ( 2) PUSH進(jìn)棧指令 指令格式: PUSH 源 指令功能:將源操作數(shù)壓入堆棧。 操作過程:先修改 SP指針( SP2→ SP),然后把源操作數(shù)壓入到 SP指向的位置,(低位字節(jié) → [SP] 高位字節(jié) → [SP+1]) 1000H 1002H 舊 SP 新 SP 例如 PUSH AX (假設(shè),執(zhí)行前 AX=1234H, SP=1002H) 則執(zhí)行后,堆棧內(nèi)容如何變化? 12 34 ( 3) POP出棧指令 指令格式: POP 目的 指令功能:將當(dāng)前 SP和 SP+1所指向的單元內(nèi)容 → 目的操作數(shù)。 操作過程:先將 [SP+1], [SP]中的內(nèi)容送到目的操作數(shù),( [SP] → 目的低位字節(jié) [SP+1] → 目的高位字節(jié) ) 然后再修改 SP指針( SP2→ SP)。 C0000HCFFFFHC0001HC1000H SP棧底( 1)指令執(zhí)行之前 SS 16+SP ( 2)執(zhí)行 PUSH AX之后 SP先減 2 指向此處 C0000HCFFFFHC0001HC1000HSP棧底C0FFEH12 341234AX( 3)執(zhí)行 PUSH BX之后 SP 再減 2指向此處 C0000HCFFFFHC0FFCHC1000HSP棧底C0FFEH 56 781234BX5678( 4)執(zhí)行 POP C 之后 先彈數(shù)據(jù),再將 SP加 2 C0000HC0FFCHSP棧底C0FFEH1234567856 78CX前 SP ( 4) XCHG交換指令 指令格式: XCHG 目的, 源 指令功能:把一個字或字節(jié)的源操作數(shù)和目的操作數(shù)相交換。 使用過程: ① 在內(nèi)存中建立一個表格(就是定義一段字節(jié)數(shù)據(jù),這些數(shù)據(jù)就是轉(zhuǎn)換以后的代碼)。 例 331 如下圖所示的 8段數(shù)碼管,顯示段碼的格式為: (dp g f e d c b a)2 ,當(dāng)相應(yīng)的位為‘ 1’時,此段就顯示;為‘ 0’時,就不顯示?,F(xiàn)要求編一程序段,通過查表將5的顯示段碼 → DL中。 ( 1) IN輸入指令 指令格式: ① IN AL,端口地址; IN AX,端口地址 ② IN AL, DX; IN AX, DX; 指令功能:從 8位端口讀一個字節(jié) → AL,或從 16位端口 讀一個字 → AX。 MOV DX, 1000H IN AL, DX;從 1000H端口讀一個字節(jié) → AL ( 2) OUT輸出指令 指令格式: ① OUT 端口地址, AL; OUT 端口地址, AX ② OUT DX, AL; OUT DX , AX; 例如: OUT 20H, AL;將 AL 的字節(jié) → 20H端口 OUT 30H, AX;將 AX中字內(nèi)容送到連續(xù)的兩 個 8位端口 30H, 31H(即組成 一個 16位端口) 其中 AL→30H ; AH →31H MOV DX, 1000H OUT DX, AL;將 AL→1000H 端口 —用來傳送操作數(shù)的段地址和偏移地址 ( 1) LEA取有效地址指令 指令格式: LEA 目的,源 指令功能:取源操作數(shù)的偏移地址 → 目的 要求: ①源操作數(shù)必須是內(nèi)存單元 ②目的操作數(shù)必 須是一個 16位的寄存器(段寄存器除外) ★ 使用時,要注意與 MOV指令的區(qū)別! 51000H 51002H DI=1000H 12 34 例 335 設(shè) DS=5000H, DI=1000H, ( 51000H) =1234H,則 執(zhí)行 LEA AX, [DI]后, AX=1000H 執(zhí)行 LEA BX, [2022H]后, BX=? 執(zhí)行 MOV AX, [DI]后, AX=1234H 與OFFSET指令功能相同 ( 2) LDS將雙字指針?biāo)偷郊拇嫫骱?DS指令 指令格式: LDS 目的,源 指令功能:從源操作數(shù)指定的存儲單元中,取出一個變量的 4字節(jié)地址指針,送到一對目的寄存器。 要求: ①源操作數(shù)必須是內(nèi)存單元,從該單元開始的連續(xù) 4個字節(jié)單元中,存放著一個變量的地址指針(偏移地址和段地址) ② 目的操作數(shù)必須是一個 16位的寄存器(段寄存器除外),常使用 SI寄存器。下面用示意圖來說明。其中前兩個字節(jié)(表示變量的偏移地址)送到指令中指定的目的寄存器,后兩個字節(jié)(表示變量的段地址)送到 ES段寄存器中。
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1