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

正文內(nèi)容

第五章80868088指令系統(tǒng)-資料下載頁(yè)

2025-08-01 13:13本頁(yè)面
  

【正文】 若相等則循環(huán) , 這可用 LOOP指令 , 若不相等則循環(huán) , 這可用 LOOPNE指令 , 前者 , 是當(dāng) CX不等于零 , ZF=1時(shí)則循環(huán) ,后者是 CX不等于零 ZF=0時(shí)則循環(huán) 。 當(dāng)兩個(gè)中的一個(gè)條件滿足一個(gè)不滿足時(shí) , 則終止循環(huán) 。 例如在指定的存儲(chǔ)區(qū)中 , 找第一個(gè)非零字節(jié) , 設(shè)存儲(chǔ)區(qū)開始單元的偏移地址在 BX中 , 最后單元的偏移地址在 DI中 , 若找到非零字節(jié) , 則其偏移地址在 BX中 , 若沒找到則BX與 DI相等 , 表示已找到最后單元 。 SUB DI, BX INC DI ; 字節(jié)數(shù) =(DI)(BX)+1 MOV CX, DI ; 字節(jié)數(shù)送 CX DEC BX NEXT: INC BX CMP BYTEPTR[BX], 0 ; 與 0比較 LOOPE NEXT ; 是 0, 去比較下一個(gè) JNZ NZ_FOUND ; 找到否 , 即 ZF=0? ……... ; 沒找到 NZ_FOUND: ; 找到 , [BX]中為非零字節(jié) …….... JCXZ 指令 這條指令也是一條轉(zhuǎn)移指令 , 它的轉(zhuǎn)移條件是 CX=0。這條指令在循環(huán)程序的開始處 , 為了能跳過循環(huán) (只要是CX=0)是有用的 。 三、調(diào)用和返回指令 CALL、 RET CALL 指令用來調(diào)用一個(gè)過程或者程序 。 當(dāng)調(diào)用的過程或子程序結(jié)束后 , 使用 RET 指令返回 , 由于過程或子程序由段間調(diào)用 (即遠(yuǎn)程 FAR)和段內(nèi)調(diào)用 (及近程 NEAR)所以CALL也有 FAR和 NEAR之分 , 這由被調(diào)用的過程的定義所決定 , 因此 RET也有段間和段內(nèi)返回兩種 。 當(dāng)段內(nèi)調(diào)用時(shí) , 首先將 IP內(nèi)容入棧 。 當(dāng)返回時(shí) , 從站內(nèi)取出一個(gè)字并放回到 IP中 , 若段間調(diào)用時(shí) , 則先把 CS入棧 ,在把 IP如戰(zhàn) , RET返回時(shí) , 在從棧中去回一個(gè)字放入 IP中 ,然后從棧中取第二個(gè)字放入 CS中 , 作為段間返回地址 。 象 JMP指令一樣 CALL指令也有兩種得到目標(biāo)地址的辦法:直接和間接。直接調(diào)用目標(biāo)地址在 CALL指令中,間接調(diào)用目標(biāo)地址在由指令指定的寄存器或內(nèi)存單元中。 四、中斷指令 8088提供三條中斷傳送操作指令: 中斷指令 INT n 溢出中斷指令 INTO 中斷返回指令 IRET 在 8086/8088中 , 程序的執(zhí)行控制可以采用軟中斷的方式 。 當(dāng)程序中遇到中斷指令時(shí) , 中止現(xiàn)行程序 , 保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)后 , 轉(zhuǎn)去執(zhí)行 。 INT n指令 這條指令啟動(dòng)在指令中的中斷類型號(hào) (n)規(guī)定的中斷過程 。 8088采取向量中斷 , 中斷類型號(hào) 0~ 255, 規(guī)定了 256個(gè)中斷向量 。 每個(gè)中斷向量包括了四個(gè)字節(jié)的中斷程序的入口地址 。 其中 , 有兩個(gè)字節(jié)是中斷程序的代碼段值 , 另兩個(gè)字節(jié)是中斷程序入口地址偏移量 。 這 256個(gè)入口地址組成一個(gè)表叫中斷向量表 , 存放在存儲(chǔ)器絕對(duì)地址 00000H到003FFH中 。 關(guān)于 8088中斷系統(tǒng)的介紹請(qǐng)參閱第七章 , 當(dāng)程序中遇到中斷指令 INT時(shí) , 便中斷程序的執(zhí)行 , 而轉(zhuǎn)向由 256個(gè)中斷向量提供的地址之一去執(zhí)行 。 例如: INT 1AH 此時(shí)程序?qū)⑥D(zhuǎn)向 IA型中斷服務(wù)程序執(zhí)行 , 此時(shí)中斷向量地址為 4 1AH=68H, 即從 68H和 69H單元中取出 IP的值 ,從 6AH和 6BH取出 CS的值 , 然后轉(zhuǎn)向該地址執(zhí)行中斷服務(wù)程序 。 INTO指令和 IRET指令 INTO指令可以寫在一條算數(shù)指令的后面 , 若算數(shù)運(yùn)算指令執(zhí)行的結(jié)果溢出 , 及溢出標(biāo)志 OF=1, 則轉(zhuǎn)向溢出中斷處理;否則不進(jìn)行任何操作 , 接著執(zhí)行下一條指令 。 IRET指令的作用是:當(dāng)執(zhí)行完中段服務(wù)程序后,返回主程序。 第六節(jié) 字符串指令 存儲(chǔ)器中存放的一串字或字節(jié) , 它們可以是二進(jìn)制數(shù) ,也可以是 BCD碼或 ASCII代碼等相關(guān)的一些信息 。 它們存放在連續(xù)區(qū)域中 , 若對(duì)它們的每個(gè)字或字節(jié)均作同樣的操作 ,就稱為串操作 。 我們把能夠完成這些功能的指令 , 稱為字符串操作指令或簡(jiǎn)稱為字串指令這些指令如表 。 匯 編 格 式 操 作M O V S / M O V S B / M O VS W C M P S / C M P S B / CMPSWS C A S / S C A S B / S C ASWL O D S / L O D S B / L O DSWS T O S / S T O S B / S T OSWREPR E P E / R E P ZR E P N E / R E P N Z內(nèi) 存 區(qū) 之 間 字 節(jié) 串 或 字 串 傳 送字 節(jié) 串 或 字 節(jié) 串 進(jìn) 行 比 較掃 描 字 節(jié) 串 , 以 查 找 指 定 字 節(jié) 串 或 字 串把 內(nèi) 存 中 的 字 節(jié) 或 字 裝 入 A L 或 A X 中把 字 節(jié) 和 字 存 入 內(nèi) 存字 符 串 操 作 前 綴 , 表 示 重 復(fù) , 重 復(fù) 值 裝CX重 復(fù) 操 作 到 C X = 0 或 Z F = 0 為 止重 復(fù) 操 作 到 C X = 0 或 Z F = 1 為此表中每一類指令的第一個(gè)均帶有操作數(shù) , 匯編時(shí) , 匯編程序均將其轉(zhuǎn)換為/后面中的一個(gè) ( 根據(jù)是字節(jié)還是字操作 ) , 因此多使用后面的兩種形式 . 在字串操作中假定源串在數(shù)據(jù)中 , 目的串在附加段中 ,用SI作指針對(duì)源尋址 , 用DI作指針騍目的串尋址 , 在每次字串操作后 , 若是字節(jié)操作 , 則SI和 ( 或 ) DI的值會(huì)自動(dòng)加1或減1 , 若是字操作 , 則SI和 ( 或 ) DI自動(dòng)加2或減2 , 是加還是減由標(biāo)志寄存器的方向標(biāo)志位決定 , 若:DF=0則作加 , 否則SI , DI作減操作 . 在串操作前可用STD指令來設(shè)置DF , 用CLD指令來清DF . 一、串操作指令 8086/8088有五種基本的串操作指令:串傳送指令 , 串比較指令 , 串掃描指令 , 串裝入指令和串存儲(chǔ)指令 。 MOVS/MOVSB/MOVSW是串傳送命令 。 它將把當(dāng)前數(shù)據(jù)串中用SI指出的源串的一個(gè)字節(jié)或一個(gè)字傳送到用DI指針指向的附加段目的地址去 , 當(dāng)DF=1 , 則SI 、 DI作減1或減2 。 CMPW/CMPSB/CMPSW是串比較命令 。 它是將當(dāng)前數(shù)據(jù)段由SI指針指出的字節(jié)或字當(dāng)前附加段DI指出的字節(jié)或字進(jìn)行比較 , 把比較結(jié)果送標(biāo)志寄存器 , 而不影響兩個(gè)操作數(shù) 。 所謂的操作數(shù)中減去源操作數(shù) , 因此兩者對(duì)標(biāo)志位的影響將是不同的 , 因此若該指令后面用條件轉(zhuǎn)移指令 , 則應(yīng)和COM的不同 該指令執(zhí)行過后 , 也將使SI 、 DI加減1或2 , 這根據(jù)DF的值決定 。 SCAS/SCASB/SCASW是字串掃描指令 。它是將AL ( 字節(jié)串操作 ) 或AX ( 字串操作 ) 的值減去在附加段中由DI尋址的目標(biāo)串的字節(jié)或字 , 結(jié)果將改變標(biāo)志寄存器的標(biāo)志位 , 但不改變操作數(shù)的原始值 , 并將使DI修改指針 , 修改情況如上所述 , 由DF的值決定 。 LODS/LODSB/LOCSW是字串裝入指令 。它將由SI尋址的源串字節(jié)或字裝入到累加器AL或AX中去 , 且根據(jù)DF的值 , 修改SI的值 , 以指向下一個(gè)要裝入的字節(jié)或字 。 STOS/STOSB/STOSW是字串存貯指令 。它是將AF ( 字符串操作 ) 或A X( 字串操作 ) 中的字儲(chǔ)存到由DI尋址的附加段中去 , 且根據(jù)DF的值來修改DI的值 。 二、字符串指令的重復(fù) 當(dāng)一條串操作指令要重復(fù)執(zhí)行時(shí) , 可以指令前加前綴 ,這些前綴是: REP 重復(fù) , 使用時(shí)將重復(fù)次數(shù)放在CX中 , 這樣當(dāng)指令執(zhí)行每重復(fù)一次 , CX值便減1 , 直到減到目前為止為止 , 便停止重復(fù) 。 REPE/REPNE是相等時(shí)重復(fù)/不相等時(shí)重復(fù) ,即若只要ZF=1和CX不減到 0, 串指令就重復(fù)執(zhí)行 , 這兩條前綴有兩個(gè)等價(jià)的名字REPZ /REPNZ , 效果同前 。 示例如下: 將 1024個(gè)字符串從 DATAA數(shù)據(jù)區(qū)般到 DATAB數(shù)據(jù)區(qū) : MOV SI,OFFSET DATAA 。DATAA偏移地址送 SI MOV DI,OFFSET DATAB 。DATAB的偏移地址送 DI MOV CX,1024 。傳送次數(shù)送 CX REP MOVS 。DATAA, DATAB 重復(fù)搬運(yùn) 將當(dāng)前數(shù)據(jù)段中的 BLOCK1數(shù)據(jù)塊搬到同一段中 BLOCK2去 : PUSH DS POP ES 。使 ES=DS,即數(shù)據(jù)段和附加段為同一個(gè) 。 LEA SI,BLOCK1 ; 源串地址送 SI LEA DI,BLOCK2 。目的串地址送 DI MOV CX,0050H 。重復(fù)次數(shù) (80)送 CX CLD 。使 DF=0, 2操作 REP MOVSW 。重復(fù)執(zhí)行 ,直到 CX=0為止 比較 DEST和 SOURCE中的 500個(gè)字節(jié) ,找出第一個(gè)不匹配 (不相同 )的字節(jié) ,如果找到 ,則將 SOURCE中的這個(gè)數(shù)送到 AL中 : CLD LEA DI,ES:DEST 。DEST偏移地址送 DI LEA SI,SOURCE 。SOURCE偏移地址送 SI MOV CX,500 。重復(fù)次數(shù)送 CX REPE CMPB 。重復(fù)比較不相等或 CX=0停止比較 JCXZ MATCH 。沒找到轉(zhuǎn) MATCH DEC SI 。找到 SI, 減 1,恢復(fù)到找到時(shí)地址 MOV AL,[SI] 。讀到 AL中 MATCH:… … … … 。沒找到 , 由此執(zhí)行 第七節(jié) 處理器控制指令 8086/8088處理器控制指令用于修改標(biāo)志寄存器 , 或與外部設(shè)備同步 ,以及用來控制處理器與協(xié)處理器之間的相互作用 。這類指令如表 。 一、標(biāo)志位操作指令 二、外部同步指令 一、標(biāo)志位操作指令 8086/8088有七條直接對(duì)單獨(dú)的標(biāo)志進(jìn)行操作的指令 。其中三條是針對(duì)進(jìn)位標(biāo)志 CF, 有兩條是針對(duì)標(biāo)志 DF的 , 有兩條是針對(duì)中斷標(biāo)志 IF的 。 標(biāo)志位操作指令用于改變檔志位的狀態(tài) , 如表 操作說明所示 。 匯 編 格 式 操 作標(biāo)志位操作指令STCCLCCMCSTDCLDSTICLI置 進(jìn) 位 標(biāo) 志 , 使 CF=1清 進(jìn) 位 標(biāo) 志 , 使 CF=0進(jìn) 位 標(biāo) 志 求 反置 方 向 標(biāo) 志 , 使 DF=1清 除 方 向 標(biāo) 志 , 使 DF=0開 中 斷 標(biāo) 志 , 使 IF=1清 中 斷 標(biāo) 志 , 使 IF=0外部同步指令 HLTWAITESCLOCK NOP使 8086/8088 處 理 器 處 于 停 止 狀 態(tài) , 不執(zhí)行指令使處理器處于等待狀態(tài)使協(xié)處理器可從 8086/8088 指 令 流 中 取得它們的指令鎖總線指令 , 可放在任一指令前 作為前綴空操作指令 , 處理器什么操作也 不作二、外部同步指令 8088有五條外部同步指令 。 HLT是暫停指令 , 將使 8088處于暫停狀態(tài) , 只有再重新啟動(dòng)或有一個(gè)外部中斷發(fā)生時(shí) , 則退出暫停狀態(tài) , 常用HLT指令來等待中斷的產(chǎn)生 。 NOP是空操作指令 , 什么也不作 , 但執(zhí)行卻需 3個(gè)時(shí)鐘周期 , 常用于延遲 。 WAIT是等待指令 , 它也使 8088處于空操作狀態(tài) , 但每隔 5個(gè)時(shí)鐘周期要檢查一下 8088的 TEST線 , 若該線為人 1,則使 8088處于等待 , 直到 TEST線為 0止 , 這主要用于 8088和協(xié)處理器及外部設(shè)備實(shí)現(xiàn)同步 。 LOCK指令是一個(gè)前綴 , 可放在任何一條指令的前面 , 這條指令執(zhí)行時(shí)鎖存了總線的控制權(quán),其它的處理器則得不到總線控制權(quán),這個(gè)過程一直持續(xù)到指令執(zhí)行完畢為止,它在多機(jī)系統(tǒng)中使用。 ESC指令是處理器交權(quán)指令。它可使協(xié)處理器從 8088的指令流中取出一部分指令,并在協(xié)處理器上執(zhí)行。
點(diǎn)擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1