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

正文內(nèi)容

微機(jī)原理指令系統(tǒng)的學(xué)習(xí)-資料下載頁(yè)

2025-01-18 18:18本頁(yè)面
  

【正文】 107 子程序調(diào)用和返回指令 CALL T RET 調(diào)用處 子程序首地址 :T 子程序 返回處 返回指令 CALL NEAR PTR OPRD CALL FAR PTR OPRD 功能:調(diào)用子程序 RET 功能:返回主程序 同樣分段內(nèi)調(diào)用和段間調(diào)用,一般為直接調(diào)用 如: CALL T 其中 T為子程序入口標(biāo)號(hào) 108 1)段內(nèi)調(diào)用: 子程序距調(diào)用語(yǔ)句不超過(guò) 64KB, 在同一個(gè)代碼段內(nèi),調(diào)用時(shí),只改變 IP即可。 如執(zhí)行 CALL LL, LL標(biāo)號(hào)的偏移地址是 8050H CALLLL RET 3010H 8050H SS CS SP 1. 將 3010H入棧,保護(hù) 返回地址 SP 30H 10H SP 2. 將 8050H賦給 IP 3. 執(zhí)行子程序 4. 執(zhí)行 RET, 棧頂內(nèi)容彈出送 IP 5. 繼續(xù)運(yùn)行主程序 SP 109 2)段間調(diào)用: 子程序距調(diào)用語(yǔ)句可以超過(guò) 64KB, 不在同一代碼段,調(diào)用時(shí), 需要同時(shí)改變 CS和 IP。 CALL RET 調(diào)用指令 2022H:1500H 3400H:2460H SS 20H 00H SP 15H 00H 原 CS 原 IP 3400H?CS 2460H?IP 1500H?IP 2022H?CS 執(zhí)行 CALL NEXT, NEXT指向的地址是 3400H: 2460H 110 段間調(diào)用步驟: 1. 將調(diào)用指令后的第一條指令地址的 CS入棧; 2. 將調(diào)用指令后的第一條指令地址的 IP入棧; 3. 將 調(diào)用目的地 地址的段地址賦值 CS; 4. 將 調(diào)用目的地 地址的偏移地址賦值 IP; 5. 執(zhí)行子程序 , 直至遇到 RET指令; 6. 將棧頂當(dāng)前內(nèi)容賦值 IP; 7. 將棧頂當(dāng)前內(nèi)容賦值 CS; 8. 返回主程序。 111 3)返回指令: RET 將當(dāng)前堆棧內(nèi)容返回到 IP(段內(nèi)調(diào)用 )或 IP, CS(段間調(diào)用 ), 具體是段內(nèi)調(diào)用還是段間調(diào)用由定義子程序的語(yǔ)句決定的 。 RET n: 從棧頂彈出返回地址后, SP+n?SP, n為偶數(shù),即棧頂位置跳過(guò) n個(gè)字節(jié) 。 返回地址后 SP RET 4 SP+4?SP 4 112 中斷指令(三條) 一般格式: INT N 功能 : 響應(yīng) N號(hào)中斷; 一般格式: INTO 功能 : 對(duì)溢出情況進(jìn)行中斷響應(yīng); 一般格式: IRET 功能 : 從中斷服務(wù)子程序返回主程序; 113 五、串操作指令 ? 用一條指令實(shí)現(xiàn)對(duì)一串?dāng)?shù)據(jù)或字符的操作,字符或數(shù)據(jù)的個(gè)數(shù)在 CX中,每執(zhí)行一次 CX自動(dòng)減 1,直至減到零串操作自動(dòng)停止; ? 源操作數(shù)在 DS:[SI]中,目的操作數(shù)在 ES:[DI]中; ? 源操作數(shù)和目的操作數(shù)都在內(nèi)存中,是唯一一條從內(nèi)存到內(nèi)存的指令; ? DF=1, 地址自動(dòng)由高至低減量,進(jìn)行串運(yùn)算;DF=0, 地址自動(dòng)由低至高增量,進(jìn)行串運(yùn)算。 114 串傳送指令 MOVSB: 每次傳送一個(gè)字節(jié); MOVSW: 每次傳送一個(gè)字; 將位于 DS段,由 SI所指出的存儲(chǔ)單元的字節(jié)或字傳送到位于 ES段,由 DI所指的存儲(chǔ)單元中,再根據(jù) DF修改 SI和 DI, 從而指向下一個(gè)元素,繼續(xù)傳送,直到 CX為 0為止。 DS:SI ES:DI DS:SI ES:DI DS:SI ES:DI 115 LEA SI, STAR LEA DI, NEXT MOV CX, 100 CLD AGAIN: MOVSB DEC CX JNZ AGAIN 將 STAR開始的 100個(gè)字節(jié)傳到 NEXT開始的存區(qū): 。設(shè)置源操作數(shù)指針 。設(shè)置目的操作數(shù)指針 。傳送的元素個(gè)數(shù) 。DF=0,每傳送一次 ,地址自動(dòng)加 1 。每次傳送一個(gè)字節(jié) 。 傳送一次, CX減 1 。 CX不為 0,轉(zhuǎn)向 AGAIN處 MOVSB: 相當(dāng)于 [DS:SI]?[ES:DI] 跳出 SI=SI+1 DI=DI+1 (DF=0) 116 LEA SI, STAR LEA DI, NEXT MOV CX, 100 CLD REP MOVSB 通常,在串傳送指令前加重復(fù)前綴 REP, 程序可自動(dòng)計(jì)數(shù)并判別是否傳送完畢。 REP MOVSB 相當(dāng)于 [DS:SI]?[ES:DI] SI=SI+1 DI=DI+1 CX=CX1 CX≠0 時(shí)轉(zhuǎn)移 117 串比較指令 CMPSB : 每次比較一個(gè)字節(jié); CMPSW: 每次比較一個(gè)字; 將位于 DS段由 SI所指出的存儲(chǔ)單元的字節(jié)或字和 ES段由 DI所指的字節(jié)或字相比較,并且在比較之后根據(jù) DF自動(dòng)修改 SI和 DI, 通過(guò)重復(fù)前綴的控制, 可以實(shí)現(xiàn)在兩個(gè)字符串中尋找第一個(gè)不相等的元素或第一個(gè)相等的元素。 118 依次比較兩個(gè)字符串是一個(gè)循環(huán)過(guò)程,這個(gè)循環(huán)過(guò)程有兩種退出條件,一是滿足比較條件,比如找到第一個(gè)相等字符或找到第一個(gè)不相等的字符;二是沒(méi)有滿足比較條件但已比較完所有的字符。 119 比較串操作的重復(fù)前綴: REPNZ/REPNE: 不相等時(shí)繼續(xù)尋找,直到尋找到第一個(gè)相等的字符或?qū)ふ彝晁械淖址?CX=0)。 REPZ/REPE: 比較結(jié)果相等時(shí)繼續(xù)尋找,直到尋找到第一個(gè)不相等的字符或?qū)ふ彝晁械淖址?(CX=0)。 CX的值不影響 ZF 120 判斷一個(gè)微型機(jī)系統(tǒng)是否為初次加電,如果不是初次加電可以檢測(cè)到在 RAM的 400H單元開始的 4個(gè)字節(jié)分別設(shè)置了加電標(biāo)志 12, 23, 34, 45。這 4個(gè)字節(jié)的加電標(biāo)志是在初次加電時(shí),由 ROM區(qū) (位于 0E2DH單元開始的 4個(gè)字節(jié) )復(fù)制過(guò)去的。當(dāng)然, ROM區(qū)中的 E2DH處的加電標(biāo)志是永存的。 假設(shè) ES指向 RAM區(qū),DS指向 ROM區(qū) MOV SI, 0E2DH MOV DI, 0400H MOV CX, 4 CLD REPZ CMPSB JZ DONE RET DONE: …… ; 后續(xù)處理 相等繼續(xù)比較 如果 4個(gè)字節(jié)都符合,表明設(shè)置好了加電標(biāo)志 否則返回 ZF與 CX無(wú)關(guān) 121 MOVSB MOVSW CMPSB CMPSW 指令完成后指針 (SI, DI) 自動(dòng)增加或減少 (DF)。 加上重復(fù)前綴后 CX自動(dòng)減 1,并判斷 CX是否為 0。若為 0,終止循環(huán)。 REP REPNZ/REPNE REPZ/REPE 122 取字符串指令 LODSB/LODSW (Load String) 將位于 DS段 SI所指的存儲(chǔ)單元的內(nèi)容取到 AL或 AX中。 用 LODSB時(shí),每次取一個(gè)字節(jié),取完后,地址自動(dòng)加 1或減 1;用 LODSW時(shí),每次取一個(gè)字,取完后,地址自動(dòng)加 2或減 2。 該指令一般不用重復(fù)前綴 ,否則, AL或 AX中的內(nèi)容會(huì)被后一次操作覆蓋,最后只能得到內(nèi)存中字符串的最后一個(gè)字節(jié)或字。 123 AL LODSB DS:SI DS:SI DS:SI DS:SI 124 存字符串指令 STOSB/STOSW (Store String) 把 AL或 AX中的數(shù)據(jù)存放到位于 ES段 DI所指的存儲(chǔ)單元中,并自動(dòng)修改地址指針。 該指令可加重復(fù)前綴,使內(nèi)存中連續(xù)的空間填滿相同的數(shù)據(jù) 。 將從 DBB開始的256個(gè)單元清零 CLD LEA DI, DBB MOV CX, 80H XOR AX, AX REP STOSW 125 將從 0700H單元開始的 5個(gè)字節(jié)的內(nèi)容逐一取來(lái),放在累加器中進(jìn)行處理,處理完后再送到 0700H的內(nèi)存區(qū)域。 CLD MOV SI, 0700H MOV DI, 0700H MOV CX, 5 L1: LODSB PUSH CX …… POP CX STOSB DEC CX JNZ L1 處理字符指令 不用考慮指針DI, SI的變化 126 字符串檢索指令 SCASB/SCASW (Scan String) 將 AL或 AX中的數(shù)據(jù)與位于 ES段 DI指針?biāo)傅膬?nèi)存單元的數(shù)據(jù)相比較,通過(guò)重復(fù)前綴的控制,可以尋找到內(nèi)存單元中的第一個(gè)與AL(或 AX)不同或相同的數(shù)據(jù)。 127 REPNZ SCASB: (AL)[ES:DI] , 不為 0(不相等 ) 時(shí)繼續(xù)比較, DI自動(dòng)加 1或減 1, CX自動(dòng)減1,直到相等或 CX為 0時(shí)退出循環(huán)。 尋找第一個(gè)相同的數(shù)據(jù) REPZ SCASB: (AL)[ES:DI] , 為 0(相等 ) 時(shí)繼續(xù)比較, DI自動(dòng)加 1或減 1, CX自動(dòng)減 1,直到不相等或 CX為 0時(shí)退出循環(huán)。 尋找第一個(gè)不同的數(shù)據(jù)。 128 有一字符串放在以 2022H單元為始地址的內(nèi)存中,從中搜索串結(jié)束符 $,若有,將串長(zhǎng)度 x放入 2100H單元,若沒(méi)有$, 2100H單元放入 0FFH。 CLD MOV DI, 2022H MOV CX, 100 MOV AL, ‘$’ REPNE SCASB JZ DONE MOV AL, 0FFH JMP STO DONE: MOV BX,100 SUB BX, CX DEC BL MOV AL, BL STO: MOV [2100H], AL 不等繼續(xù)比較 若相等,轉(zhuǎn)向 DONE 比較完畢 CX=0, 不等,設(shè)立標(biāo)志 計(jì)算字符串長(zhǎng)度 129 六、標(biāo)志處理和 CPU控制指令 1. 標(biāo)志處理指令 對(duì) PSW寄存器的某些位進(jìn)行操作,有如下三種: 置位 (SET): 賦值 1。 清除 (CLEAR): 賦值 0 取補(bǔ) (COMPLEMENT): 對(duì)當(dāng)前值取反 130 OF DF IF TF SF ZF AF PF CF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 CLC 。CF=0 STC 。CF=1 CMC 。 ?CF CFCLD 。DF=0 , 地址增量 STD 。DF=1, 地址減量 CLI 。IF=0 , 中斷屏蔽 STI 。IF=1 , 中斷允許 131 2. 處理器暫停指令 HLT ( Processor Halt) 用軟件的方法使 CPU處于暫停狀態(tài),等待硬件中斷,硬件中斷響應(yīng)時(shí),使 CPU退出暫停狀態(tài),執(zhí)行中斷服務(wù)子程序,中斷返回后, CPU接著執(zhí)行 HLT的后續(xù)指令。 132 3. 空操作指令 NOP 執(zhí)行該指令占一個(gè)指令周期,不影響任何操作,常用于精確定時(shí)。 DELAY: MOV CX, 1000 A1: MOV AX, 250 A2: DEC AX …… JNZ A2 DEC CX JNZ A1 延時(shí) 4us ;延時(shí) 1s NOP …… NOP
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1