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

正文內(nèi)容

第3章8086的尋址方式和指令系統(tǒng)-在線瀏覽

2024-08-30 09:55本頁面
  

【正文】 CPU內(nèi)部寄存器(除了 CS和 IP以外)與存貯器(所有尋址方式)之間的數(shù)據(jù)傳送,與前述一樣可以傳送一個(gè)字節(jié)也可以傳送一個(gè)字。 為了實(shí)現(xiàn)存貯器單元之間的數(shù)據(jù)傳送 ,必須用內(nèi)部寄存器作為中介 。 XCHG AL, CL ;累加器低 8位和通用寄存器 CL之間交換 XCHG AX, DI ;累加器 AX和通用寄存器 DI之間交換 XCHG BX, SI ;通用寄存器 BX和通用寄存器 SI之間交換 XCHG AX, BUFFER ;累加器 AX和 BUFFER為首地址的兩個(gè)單元交換 XCHG BX, [SI] ;通用寄存器 BX和存儲器 SI和 SI+1兩個(gè)單元交換 ( 3) 堆棧操作指令 PUSH OPRD( 壓入堆棧指令 ) POP OPRD(彈出堆棧指令) 例如: MOV AX, 1234H MOV DX, 5678H MOV SP, 2022H PUSH AX PUSH DX ┇ POP DX POP AX 當(dāng)執(zhí)行完兩條壓入堆棧的指令時(shí),堆棧中的內(nèi)容如圖 315所示。 彈出堆棧的過程與此剛好相反,每彈出 1個(gè)字,棧頂指針 SP的值加 2。 ( 1) LEA指令 指令格式: LEA OPRDl, OPRD2 執(zhí)行功能: 該指令把源操作數(shù) OPRD2的地址偏移量傳送至目的操作數(shù) OPRDl中 。 這條指令通常用來建立串指令操作所需的地址指針 。 地址指針包括段地址和地址偏移量 。 例如: LDS SI, [BX] 是把 BX所指的 32位地址指針的段地址送入 DS, 偏移地址送入 SI。 例如: LES DI, [BX] 是把 BX所指的 32位地址指針的段地址送入 ES,偏移地址送入 DI。 執(zhí)行輸入指令時(shí) , CPU可以從一個(gè) 8位端口讀入一個(gè)字節(jié)到 AL中 , 也可以從兩個(gè)連續(xù)的 8位端口讀一個(gè)字到 AX中 。 指令格式: OUT 端口 , 累加器 端口地址的尋址范圍是 64K( 0000H~ FFFFH),若端口地址在 00H~ FFH之間,可以使用直接尋址方式,否則只能由16位寄存器 DX來作間接尋址。 這些指令可實(shí)現(xiàn)字節(jié)或字 的運(yùn)算 , 也可以用于符號數(shù)和無符號數(shù)的運(yùn)算 。 源操作數(shù)可以是累加器 、 通用寄存器 、 存貯器和立即數(shù) 。 例如: ADD AL, 30 ; AL← ( AL)+ 30 ADD AX, 1000H ; AX← ( AX)+ 1000H ADD BX, 3FFH ; BX← ( BX)+ 3FFH ADD AX, SI ; AX← ( AX)+( SI) ADD SI, AX ; SI← ( SI)+( AX) ADD DI, CX ; DI← ( DI)+( CX) ADD AL, DATA[BX] ; AL← ( AL)+(( BX+ DATA)) ADD DX, DATA[BX+SI] ; DX← ( DX)+(( BX+ SI+ DATA)) ADD BETA[SI], 100 ;( SI+DETA) ← (( SI+BETA))+ 100 ADD BETA[SI], AX ;( SI+DETA) ← (( SI+BETA))+( AX) 注意 , 兩個(gè)存儲器操作不能直接相加 , 段寄存器也不能參加運(yùn)算 。 例如: ADD AX, 0CFA8H 若指令執(zhí)行前 , ( AX) =5623H, 則指令執(zhí)行后 , ( AX) =25CBH, 且 CF=1, OF=0, SF=0, ZF=0, AF=0, PF=1。 ( 2) 帶進(jìn)位的加法指令 指令格式: ADC OPRD1, OPRD2 指令功能: OPRD1← ( OPRD1) +( OPRD2) +CY 這條指令與 ADD指令基本相同,只是在對兩個(gè)操作數(shù)進(jìn)行相加運(yùn)算時(shí)還應(yīng)加上進(jìn)位位的當(dāng)前值,然后再將結(jié)果送至目的操作數(shù)。要求結(jié)果存放在 DATA3為首的單元中。 ( 3) INC加 1指令 指令格式: INC OPRD 指令功能: OPRD← ( OPRD) + 1 這條指令對指定的操作數(shù)進(jìn)行加 1操作 , 在循環(huán)程序中常用于修改地址指針和循環(huán)次數(shù)等 。 該指令執(zhí)行結(jié)果對標(biāo)志位 AF、 OF、 PF、 SF和 ZF有影響 , 而對 CF位不產(chǎn)生影響 , 例如: INC AL INC CX INC WORD PTR[SI] INC BYTE PTR [SI+BX] 2. 減法指令 ( 1) 不帶借位的減法指令 指令格式: SUB OPRDl, OPRD2 指令功能: OPRD1← ( OPRD1) - ( OPRD2) 該指令用來對目的操作數(shù)和源操作數(shù)的字或字節(jié)進(jìn)行相減 ,其結(jié)果存放在目的操作數(shù) 。 目的操作數(shù) OPRD1:可以是累加器、通用寄存器、存儲器。 ( 2) 帶借位的減法指令 指令格式: SBB OPRD1, OPRD2 指令功能: OPRD1← ( OPRD1) - ( OPRD2) - CY 該指令與 SUB相類似 , 只不過在兩個(gè)操作數(shù)相減時(shí) , 還應(yīng)減去借位標(biāo)志 CF的當(dāng)前值 。 該指令對標(biāo)志位 AF、 CF、 OF、 PF、 SF和 ZF都將產(chǎn)生影響。 在相減時(shí) , 把操作數(shù)看作為無符號的二進(jìn)制數(shù) 。 相當(dāng)于操作數(shù)求反加 1并保存在目的操作數(shù)中 。 ( 5) 比較指令 指令格式: CMP OPRDl, OPRD2 指令功能: ( OPRD1) - ( OPRD2) 該指令執(zhí)行減法操作 , 不保存相減的結(jié)果 。 在程序設(shè)計(jì)時(shí) , 比較指令通常為程序的轉(zhuǎn)移提供條件 。 如何利用狀態(tài)標(biāo)志來判斷兩操作數(shù)的關(guān)系呢 ? 下面分三種情況來分析 。 2) 兩個(gè)操作數(shù)不等 兩個(gè)無符號數(shù)的比較 無符號數(shù)相減時(shí) , CF就是借位標(biāo)志 。 如果 CF=1, 表示有借位 , 即被減數(shù)小 , 減數(shù)大 。 這時(shí)可以用如下結(jié)論判斷 。 當(dāng) OF⊕ SF=1時(shí) , OPRD1OPRD2。 MOV SI, OFFSET BLOCK MOV AL, [SI] INC SI MOV CX, 99 AGAIN: CMP AL, [SI] JG NEXT MOV AL, [SI] NEXT: INC SI DEC CX JNE AGAIN MOV MAX, AL HLT 3. 乘法指令 8086的乘法指令分為無符號數(shù)乘法指令和帶符號數(shù)乘法指令兩種 。 不能為立即數(shù)和段寄存器 。 例如: MUL AL MUL BX MUL WORD PRT[SI] 要完成 14 15可以用下列指令: MOV AL, 14 MOV CL, 15 MUL CL ( 2) 帶符號數(shù)乘法指令 IMUL 指令格式: IMUL OPRD 指令功能: 若 OPRD為字節(jié)數(shù)據(jù) , 則執(zhí)行 AX← ( AL) ( OPRD) 若 OPRD為字?jǐn)?shù)據(jù) , 則執(zhí)行 DX、 AX← ( AX) ( OPRD) 目的操作數(shù)為: AL或 AX( 隱含給出 ) 4. 除法指令 8086有兩條除法指令:無符號除法指令和帶符號除法指令 。 對 8位數(shù)除法 , 商與余數(shù)分別放在 AL與 AH中 ,對 16位除法 , 商與余數(shù)分別放在 AX與 DX中 。 (OPRD) 商 AH← (AX)247。 (OPRD) 商 DX← (DX) (AX)247。 即IDIV執(zhí)行后 , CF、 OF、 AF、 PF、 ZF、 SF不確定 。 運(yùn)算結(jié)果超出了表示范圍 , 那么會作為除數(shù)為 0的情況來處理 , 即產(chǎn)生 0號中斷 。 執(zhí)行的指令如下: MOV AL, X MOV AH, 0 DIV Y MOV Z, AL ( 3) CBW字節(jié)轉(zhuǎn)換為字指令 指令格式: CBW 指令功能: AL中的符號位擴(kuò)展到 AH中 。 ( 4) CWD字轉(zhuǎn)換為雙字指令 指令格式: CWD 指令功能: AX中的符號位擴(kuò)展到 DX中 。 5. BCD碼調(diào)整指令 在計(jì)算機(jī)中 , 可用 4位二進(jìn)制碼來表示一個(gè)十進(jìn)制碼 ,這種代碼叫 BCD碼 。 BCD碼有兩類:一類叫壓縮的 BCD碼 , 所謂壓縮 , 就是用 1個(gè)字節(jié)表示 2位 BCD碼;另一類叫非壓縮的 BCD碼 ,用這類代碼時(shí) , 1個(gè)字節(jié)只用低 4位來表示 BCD碼 , 高 4位為 0。 AH← ( AH)+調(diào)整產(chǎn)生的進(jìn)位值。 例如: ADD AL, BL AAA 指令執(zhí)行前 AX=0535H, BL=39H, 可見 AL和 BL中的內(nèi)容分別為 5和 9的 ASCⅡ 碼 。 ( 2) AAS非壓縮十進(jìn)制數(shù)減法調(diào)整指令 指令格式: AAS 指令功能: AL← 把 AL中的差調(diào)整為非壓縮的 BCD碼格式 。 這條指令主要用于 SUB或 SBB之后,減法指令必須把兩個(gè)非壓縮的 BCD碼相減,并把結(jié)果存放在 AL寄存器中。 這條指令之前必須執(zhí)行 MUL指令把兩個(gè)非組合的 BCD碼相乘 ( 此時(shí)要求其高 4位為 0) , 結(jié)果放在 AL中 。 本指令根據(jù) AL寄存器的內(nèi)容設(shè)置條件標(biāo)志 SF、 ZF、 PF, 但 OF、 CF、 AF位無定義 。 這里要特別注意一點(diǎn) , 對 BCD碼除法運(yùn)算的調(diào)整是在進(jìn)行除法之前 , 通過對除數(shù)和被除數(shù)進(jìn)行調(diào)整來實(shí)現(xiàn)的 。 AH為 0。 1. 邏輯運(yùn)算指令 8086邏輯運(yùn)算指令包括 AND( 與 ) 、 OR( 或 ) 、 NOT( 非 ) 、 XOR( 異或 ) 指令和 TEST( 測試 ) 指令 。 操作數(shù)可以是寄存器或存貯器的內(nèi) 容 。 例如: MOV AL, 8FH NOT AL 兩條指令執(zhí)行后 AL=70H。 即只有參加相與的兩位全為 “ 1”時(shí) , 相 “ 與 ”結(jié)果才為 “ 1”, 否則相 “ 與 ” 結(jié)果為 “ 0”。 AND指令可以進(jìn)行字節(jié)操作 , 也可以進(jìn)行字操作 。 源操作數(shù) OPRD2:可以是立即數(shù)、寄存器,也可以是存儲器。 該指令執(zhí)行以后 , 標(biāo)志位 CF=0, OF=0。 ( 3) TEST測試指令 指令格式: TEST OPRD, im; im為立即數(shù) 指令功能: OPRD1← ( OPRD1) ∧ im 該指令的操作功能與 AND指令相同 , 其結(jié)果將反映在標(biāo)志位上 , 但結(jié)果不送回 。 編程時(shí)作為條件轉(zhuǎn)移指令的先行指令 。 在這種情況下可以用如下指令: TEST AL, 80H JNZ THERE ┇ THERE: MOV BL, 05H ( 4) OR 邏輯 “ 或 ” 指令 指令格式: OR OPRDl, OPRD2 指令功能: OPRD1← ( OPRD1) ∨ ( OPRD2) 該指令對兩個(gè)操作數(shù)進(jìn)行按位相 “ 或 ” 的邏輯運(yùn)算 。 OR指令可以進(jìn)行字節(jié)操作 , 也可以進(jìn)行字操作 。 源操作數(shù) OPRD2:可以是立即數(shù)、寄存器,也可以是 存儲器。 即只有參加相 “ 異或 ” 的兩位值不同時(shí) , 其結(jié)果為 “ 1”;否則就為 0。 目的操作數(shù) OPRDl:可以是累加器 、 通用寄存器 , 也可以是存儲器 。 例如: XOR AL, 0FH XOR AX, BX XOR CX, [SI+ 4] XOR 10H[BX], CX XOR [BX+SI+ 5], AX 例如: XOR AX, AX XOR SI, SI 指令執(zhí)行后可使 AX、 SI清零 。 標(biāo)志 AF未定義 。 左移一位時(shí) , 操作數(shù)的最高位移出送到 CF中 , 同時(shí)最低位送 0。 目的操作數(shù) OPRD:可以是累加器、寄存器、也可是存儲器。 例如: SHL AL, 1 MOV CL, 4 SHL AL, CL ( 2) SAR算術(shù)右移指
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1