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

正文內(nèi)容

微機(jī)原理課件-第3章-資料下載頁

2025-01-21 23:47本頁面
  

【正文】 MOV NUM,BL … 87 4. 過程調(diào)用和返回指令 ?過程 (子程序 ) 一段具有特定功能的,供其它程序調(diào)用的公用程序。 ?特點(diǎn) ? 調(diào)用子程序時(shí), IP(CS)的內(nèi)容被壓入堆棧棧頂。從子程序返回時(shí),棧頂?shù)膬?nèi)容又被彈出到 IP(CS)。 ? 子程序執(zhí)行結(jié)束后一般均要返回調(diào)用程序。 ? 一次定義,多次調(diào)用; ? 可帶參數(shù)調(diào)用,以完成不同的功能。 ?優(yōu)點(diǎn) 程序代碼短 ,結(jié)構(gòu)清晰 ,便于編程、調(diào)試、修改和閱讀。 ?兩條相關(guān)指令: 子程序調(diào)用指令 CALL 子程序返回指令 RET 88 一般格式: CALL sub 。sub為子程序的入口 根據(jù)子程序入口的尋址方式,子程序調(diào)用有四類。 ①段內(nèi)直接調(diào)用 子程序的偏移地址直接由 CALL指令給出。 格式: CALL near_proc CALL執(zhí)行時(shí),它首先將 IP內(nèi)容壓棧,然后把指令中給出的位移量加到 IP上。 注:匯編以后的調(diào)用地址是相對(duì)于 CALL的下一條指令的位移量。 例: CALL 0120H 。子程序偏移地址由指令給出 (1)調(diào)用指令 CALL 89 位移量由匯編程序在匯編時(shí)進(jìn)行計(jì)算 ,如下例 : CS:0102 CALL 0120H 。3字節(jié) CS:0105 …… 則位移量為 : 01200105H=001BH 于是 CALL 0120H的機(jī)器碼為 E8 1B 00 CS:0102 E8 CS:0103 1B CALL 0120H CS:0104 00 CS:0105 …… 90 子程序的偏移地址在寄存器或存儲(chǔ)器中 。 格式: CALL mem16/reg16 CALL執(zhí)行時(shí),它首先將 IP內(nèi)容壓棧,然后把指定的寄存器 /存儲(chǔ)器的內(nèi)容送入 IP。 例: CALL BX 。子程序地址由 BX給出 CALL WORD PTR[SI] 。子程序地址在存儲(chǔ)器中 ②段內(nèi)間接調(diào)用 91 CALL IPH IPL 代碼段 數(shù)據(jù)段 CALL WORD PTR [SI]指令的 操作圖示: 假定: (DS) = 8000H, (SI) = 1200H 81200H 81201H 92 子程序的段地址和偏移地址直接由 CALL指令給出。 格式: CALL far_proc 。far_proc為遠(yuǎn)過程的地址 指令的操作為: ? CS內(nèi)容壓棧 ? IP內(nèi)容壓棧 ? CS← 段地址 ? IP← 偏移地址 例: CALL 2022H:1000H CALL TIMER 。TIMER為遠(yuǎn)過程 ③段間直接調(diào)用 93 子程序的段和偏移地址為存儲(chǔ)器的連續(xù) 4個(gè)單元中的內(nèi)容。 格式: CALL mem32 指令的操作為: SP←(SP) 2 ((SP)+1,(SP))←(CS) 。CS 壓棧 CS← (mem32+2) SP←(SP) 2 ((SP)+1,(SP))←(IP) 。IP 壓棧 IP← (mem32) 例: CALL DWORD PTR[DI] 調(diào)用地址在 [DI], [DI]+1, [DI]+2, [DI]+3四個(gè)存儲(chǔ)單元中。低字內(nèi)容為偏移地址 ,高字內(nèi)容為段地址 。 ④段間間接調(diào)用 94 CALL 代碼段 數(shù)據(jù)段 IPH IPL CSH CSL [DI] [DI]+1 [DI]+2 [DI]+3 段間間接調(diào)用示意圖 CALL DWORD PTR[DI] 95 例:下面的程序執(zhí)行后, (AX)=? (DX)=? CS:2022H MOV AX, 2022H 2022H MOV CX, 200CH 2022H PUSH CX 2022H CALL 4000H 200AH ADD AX, BX 200CH ADD AX, DX 200EH HLT … … … … CS:4000H MOV BX, 200AH POP DX RET 96 段內(nèi) 返回指令 RET的操作為: 恢復(fù)子程序執(zhí)行前 IP的內(nèi)容。 段間 返回指令 RET的操作為: 恢復(fù)子程序執(zhí)行前 IP和 CS的內(nèi)容。 另有一種帶立即數(shù)的返回指令 “ RET n ” ,其中 n為偶數(shù),表示從棧頂彈出地址后另外丟棄的字節(jié)數(shù)。 例: RET 4 。返回后再丟棄棧頂?shù)?4個(gè)字節(jié) (2)返回指令 RET 97 MOV SP ,1009H MOV AX ,2022H MOV BX ,4000H PUSH AX PUSH BX CALL NEAR ADDPRG MOV AX ,MEM1 HLT ADDPRG: PUSHF MOV BP ,SP SP 1009 MOV AX ,[BP+4] ADD AX ,[BP+6] MOV MEM1 ,AX POPF RET 4 98 8086/8088 CPU在程序中允許安排一條中斷指令來引起一個(gè)中斷過程 ,這種中斷叫內(nèi)部中斷 ,或叫軟中斷。被中斷的指令地址處稱為 “ 斷點(diǎn) ” 。有關(guān)中斷的詳細(xì)情況將在第六章討論。 中斷指令共有三條: (1)INT n 執(zhí)行類型 n的中斷服務(wù)程序, N=0~ 255 (2)INTO 執(zhí)行溢出中斷的中斷服務(wù)程序 (3)IRET 從中斷服務(wù)程序返回調(diào)用程序 99 ( 1) INT n ? 格式: INT n ? 說明: n 4 = 向量地址。該向量地址中的內(nèi)容即為中斷服務(wù)程序入口地址 (段 :偏移 ),入口地址也稱為“中斷向量 ”。 0000 : n 4 XXH XXH YYH YYH 中斷服務(wù)程序入口的偏移地址 (IP) 中斷服務(wù)程序入口的段地址 (CS) 中斷類型碼 n = 0? 255 內(nèi)存 中斷向量 100 INT指令的操作: ? 將 FLAGS壓入堆棧; ? 將 INT指令下一條指令的地址壓棧(即把 CS和 IP的內(nèi)容壓棧); ? 取中斷服務(wù)程序入口地址送入 CS和 IP。 – INT指令只影響 IF和 TF, 對(duì)其余標(biāo)志位無影響 – INT指令可用于調(diào)用系統(tǒng)服務(wù)程序,如 INT 21H 101 INT指令的操作例: ? INT 21H IPL IPH CSL CSH SP=1200 FLAGSL FLAGSH SP=11FA 執(zhí)行 INT 21H指令后 保護(hù)斷點(diǎn) 堆棧 執(zhí)行 INT 21H指令前 102 INT指令的操作例(續(xù)): ? 執(zhí)行 INT 21H指令后, CS=? IP=? 因?yàn)?n=21H,所以 n 4=84H。 下圖中, (0:0084H)=2022H:1123H 所以: CS=2022H IP=1123H 0000:0084H 23H 11H 00H 20H IP CS 0000 : 21H 4 103 INTO檢查溢出標(biāo)志 OF,如果 OF=1,則啟動(dòng)一個(gè)類型 4的中斷過程;如果 OF=0,不做任何操作。 通常 INTO指令安排在有符號(hào)數(shù)算術(shù)運(yùn)算指令后面 。 如 IMUL DX INTO 。若溢出 , 則啟動(dòng) INT 4, 否則往下執(zhí)行 MOV RESULT,AX MOV RESULT+2,DX …… ( 2) 溢出中斷 INTO 104 用于從中斷服務(wù)程序返回被中斷的程序。 IRET負(fù)責(zé) 恢復(fù)斷點(diǎn) (CS和 IP)和恢復(fù)標(biāo)志寄存器內(nèi)容。 任何中斷服務(wù)程序不管是外部中斷引起的 ,還是內(nèi)部中斷引起的 ,最后都要用 IRET返回。 IRET指令執(zhí)行的操作為: ?棧頂內(nèi)容彈出到 IP ?棧頂內(nèi)容彈出到 CS ?棧頂內(nèi)容彈出到 FLAG (3)中斷返回指令 IRET 105 處理器控制指令 用來設(shè)置標(biāo)志位的狀態(tài) 。 ( 1) CF設(shè)置指令 CLC 0→CF STC 1→CF CMC CF變反 ( 2) DF設(shè)置指令 CLD 0→DF (串操作的指針移動(dòng)方向從低到高) STD 1→DF (串操作的指針移動(dòng)方向從高到低 ) ( 3) IF設(shè)置指令 CLI 0→IF (禁止 INTR中斷 ) STI 1→IF (開放 INTR中斷 ) 106 執(zhí)行 HLT指令時(shí) ,CPU進(jìn)入暫停狀態(tài) ,設(shè)置該指令通常是為了等待中斷。 外部中斷 (包括 IF=1時(shí)的可屏蔽中斷請(qǐng)求INTR及非屏蔽中斷請(qǐng)求 NMI)或復(fù)位信號(hào)可讓 CPU退出暫停狀態(tài)。 HLT不影響標(biāo)志位 。 2. 外部同步指令 (1)暫停指令 HLT 107 (2)空操作指令 NOP NOP指令不做任何實(shí)質(zhì)性的操作 ,但占用 3個(gè)時(shí)鐘周期 ,然后執(zhí)行下一條指令。 多用于延時(shí)或預(yù)留存儲(chǔ)空間 (占位子 )。 108 作業(yè): ? P152(新版 p146) 、 、 、 、 、 , , ,
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1