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

正文內(nèi)容

第3章8086的尋址方式和指令系統(tǒng)-文庫吧

2025-07-05 09:55 本頁面


【正文】 之間交換 XCHG AX, DI ;累加器 AX和通用寄存器 DI之間交換 XCHG BX, SI ;通用寄存器 BX和通用寄存器 SI之間交換 XCHG AX, BUFFER ;累加器 AX和 BUFFER為首地址的兩個單元交換 XCHG BX, [SI] ;通用寄存器 BX和存儲器 SI和 SI+1兩個單元交換 ( 3) 堆棧操作指令 PUSH OPRD( 壓入堆棧指令 ) POP OPRD(彈出堆棧指令) 例如: MOV AX, 1234H MOV DX, 5678H MOV SP, 2022H PUSH AX PUSH DX ┇ POP DX POP AX 當執(zhí)行完兩條壓入堆棧的指令時,堆棧中的內(nèi)容如圖 315所示。 2022H1FFFH1FFEH1FFDH1FFCHSP12345678堆棧段2022H1FFFH1FFEH1FFDH1FFCHSP12345678堆棧段............① SP- l → SP ; SP=1FFFH ,( SP) ← AH ② SP- l → SP ; SP=1FFEH ,( SP) ← AL ③ SP- l → SP ; SP=1FFDH ,( SP) ← DH ④ SP- l → SP ; SP=1FFCH ,( SP) ← DL 2022H1FFFH1FFEH1FFDH1FFCHSP12345678堆棧段2022H1FFFH1FFEH1FFDH1FFCHSP12345678堆棧段............每執(zhí)行一條壓入堆棧指令 , 堆棧地址指針 SP減 2, 壓入堆棧的數(shù)據(jù)放在棧項 。 彈出堆棧的過程與此剛好相反,每彈出 1個字,棧頂指針 SP的值加 2。 ① DL← ( SP) ; SP+ l → SP , SP=1FFDH ② DH← ( SP) ; SP+ l → SP , SP=1FFEH ③ AL← ( SP) ; SP+ l → SP , SP=1FFF H ④ AH← ( SP) ; SP+ l → SP , SP=2022H 2. 地址傳送指令 8086有 3條地址傳送指令 。 ( 1) LEA指令 指令格式: LEA OPRDl, OPRD2 執(zhí)行功能: 該指令把源操作數(shù) OPRD2的地址偏移量傳送至目的操作數(shù) OPRDl中 。 源操作數(shù)必須是一個內(nèi)存操作數(shù) , 目的操作數(shù)必須是一個16位的通用寄存器 。 這條指令通常用來建立串指令操作所需的地址指針 。 LEA BX, DATA 和 MOV BX, OFFSET DATA等價 LEA SI, BUFFER 和 MOV SI, OFFSET BUFFER等價 ( 2) LDS指令 該指令完成一個地址指針的傳送 。 地址指針包括段地址和地址偏移量 。 指令執(zhí)行時 , 將段地址送入 DS, 地址偏移量送入一個 16位的指針寄存器或變址寄存器 。 例如: LDS SI, [BX] 是把 BX所指的 32位地址指針的段地址送入 DS, 偏移地址送入 SI。 ( 3) LES指令 這條指令除將地址指針的段地址送入 ES外 , 其他操作與LDS的類似 。 例如: LES DI, [BX] 是把 BX所指的 32位地址指針的段地址送入 ES,偏移地址送入 DI。 3. 輸人輸出指令 輸入 /輸出指令用來完成累加器 ( AX/AL) 與 I/O端口之間的數(shù)據(jù)傳送功能 。 執(zhí)行輸入指令時 , CPU可以從一個 8位端口讀入一個字節(jié)到 AL中 , 也可以從兩個連續(xù)的 8位端口讀一個字到 AX中 。 指令格式: IN 累加器 , 端口地址 執(zhí)行輸出指令時 , CPU可以將 AL中的一個字節(jié)寫到一個 8位端口中 , 或者將 AX中的一個字寫到兩個連續(xù)的 8位端口中 。 指令格式: OUT 端口 , 累加器 端口地址的尋址范圍是 64K( 0000H~ FFFFH),若端口地址在 00H~ FFH之間,可以使用直接尋址方式,否則只能由16位寄存器 DX來作間接尋址。 例如: IN AX, 20H ;讀 20H、 21H端口一個字的數(shù)據(jù)到 AX中 OUT 22H, AL ;將 AL中的數(shù)據(jù)從 22H端口輸出 MOV DX, 210H ;端口 地址 210H送 DX IN AL, DX ;讀 210H端口一個字節(jié)到 AL中 OUT DX, AX ;將 AX中的數(shù)據(jù)從 210H端口輸出 8086可提供加 、 減 、 乘 、 除 4種基本算術運算的操作指令 。 這些指令可實現(xiàn)字節(jié)或字 的運算 , 也可以用于符號數(shù)和無符號數(shù)的運算 。 存貯器 通用寄存器通用寄存器立即數(shù) 存貯器通用寄存器通用寄存器 存貯器進行加、減運算的源操作數(shù)和目的操作數(shù)的關系 1. 加法指令 ( 1) 不帶進位的加法指令 指令格式: ADD OPRDl, OPRD2 指令功能: OPRDl← ( OPRDl) +( OPRD2) ADD指令兩個操作數(shù)相加 , 結果送至目的操作數(shù) 。 源操作數(shù)可以是累加器 、 通用寄存器 、 存貯器和立即數(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) 注意 , 兩個存儲器操作不能直接相加 , 段寄存器也不能參加運算 。 在使用時還要注意兩個操作數(shù)類型一致 。 例如: ADD AX, 0CFA8H 若指令執(zhí)行前 , ( AX) =5623H, 則指令執(zhí)行后 , ( AX) =25CBH, 且 CF=1, OF=0, SF=0, ZF=0, AF=0, PF=1。 這些指令執(zhí)行時 , 對標志位 CF、 OF、 SF、 ZF和 AF都會產(chǎn)生影響 。 ( 2) 帶進位的加法指令 指令格式: ADC OPRD1, OPRD2 指令功能: OPRD1← ( OPRD1) +( OPRD2) +CY 這條指令與 ADD指令基本相同,只是在對兩個操作數(shù)進行相加運算時還應加上進位位的當前值,然后再將結果送至目的操作數(shù)。 例如:現(xiàn)有兩個雙精度字 00127546H和 00109428H,其中被加數(shù) 00127546H存放在 DATA1為首的內(nèi)存單元中,加數(shù)00109428H存放在 DATA2為首的內(nèi)存單元中。要求結果存放在 DATA3為首的單元中。 MOV AX, DATA1 ADD AX, DATA2 MOV DATA3, AX MOV AX, DATA1+2 ADC AX, DATA2+2 MOV DATA3+2, AX DATA1DATA2DATA346H75H12H00H28H94H10H00H}}被加數(shù)加數(shù)該指令對標志位的影響與 ADD指令對標志位的影響相同。 ( 3) INC加 1指令 指令格式: INC OPRD 指令功能: OPRD← ( OPRD) + 1 這條指令對指定的操作數(shù)進行加 1操作 , 在循環(huán)程序中常用于修改地址指針和循環(huán)次數(shù)等 。 其操作數(shù)可以是通用寄存器 , 也可以是存儲器 。 該指令執(zhí)行結果對標志位 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é)進行相減 ,其結果存放在目的操作數(shù) 。 源操作數(shù) OPRD2:可以是累加器 、 通用寄存器 、 存儲器 、 立即數(shù) 。 目的操作數(shù) OPRD1:可以是累加器、通用寄存器、存儲器。 SUB AL, 78H ; AL← ( AL)- 78H SUB BX, 5678H ; BX← ( BX)- 5678H SUB AX, CX ; AX← ( AX)-( CX) SUB AL, 4[SI] ; AL← ( AL)-(( SI+ 4)) SUB DX, 1000H[BX+SI] ; DX← ( DX)-(( BX+ SI+ 1000H)) SUB [SI+ 5], 100 ;( SI+5) ← (( SI+5))- 100 SUB [SI+ 2022H], AX ;( SI+2022H) ← (( SI+2022H))-( AX) 指令執(zhí)行后對各狀態(tài)標志位 OF、 SF、 AF、 PF和 CF均可產(chǎn)生影響。 ( 2) 帶借位的減法指令 指令格式: SBB OPRD1, OPRD2 指令功能: OPRD1← ( OPRD1) - ( OPRD2) - CY 該指令與 SUB相類似 , 只不過在兩個操作數(shù)相減時 , 還應減去借位標志 CF的當前值 。 這條指令主要用于多字節(jié)的減法運算 。 該指令對標志位 AF、 CF、 OF、 PF、 SF和 ZF都將產(chǎn)生影響。 ( 3) DEC減 1指令 指令格式: DEC OPRD 指令功能: OPRD← ( OPRD) - 1 該指令實現(xiàn)對操作數(shù)的減 1操作 , 所用的操作數(shù)可以是寄存器的 , 也可以是存儲器 。 在相減時 , 把操作數(shù)看作為無符號的二進制數(shù) 。 該指令執(zhí)行結果將影響標志位 AF、OF、 PF、 SF和 ZF, 但對 CF標志不產(chǎn)生影響 , 例如: DEC BL DEC CX DEC BYTE PTR[SI] ( 4) NEG求補指令 指令格式: NEG OPRD 指令功能: OPRD← 0- ( OPRD) 該指令用來對操作數(shù)進行求補操作 , 即用零減去操作數(shù) ,然后再將結果送回 。 相當于操作數(shù)求反加 1并保存在目的操作數(shù)中 。 例如: NEG AL NEG BYTE PTR[SI] 如果操作數(shù)的值為- 128( 16進制數(shù)為 80H) 或者一 32 768( 16進制數(shù)為 8000H) , 執(zhí)行求補指令后 , 操作數(shù)沒有變化 , 但溢出標志 OF=1。 ( 5) 比較指令 指令格式: CMP OPRDl, OPRD2 指令功能: ( OPRD1) - ( OPRD2) 該指令執(zhí)行減法操作 , 不保存相減的結果 。 指令執(zhí)行后兩操作數(shù)的內(nèi)容不變 , 但相減的結果影響標志位 。 在程序設計時 , 比較指令通常為程序的轉移提供條件 。 例如: CMP AX, 2022H CMP AL, 50H CMP DX, SI CMP AX, [BX+ SI+ 10H] 比較指令在執(zhí)行時,會影響標志位 AF、 CF、 OF、 PF、 SF、 ZF。 如何利用狀態(tài)標志來判斷兩操作數(shù)的關系呢 ? 下面分三種情況來分析 。 1) 兩個操作數(shù)相等 如果所比較的兩個操作數(shù)相等時 , 那么標志位 ZF=1, 所以根據(jù) ZF就可
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1