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

正文內(nèi)容

[工學]匯編語言與接口技術第四章-資料下載頁

2024-12-07 23:42本頁面
  

【正文】 ( 1)寄存器法 主程序與子程序間傳遞的參數(shù)都在約定的寄存器中 — 傳遞 單元在 CPU內(nèi)部 . 在調(diào)用子程序前主程序?qū)⑷肟趨?shù)送約定寄存器中 ,子程序直接從這些寄存器中取得參數(shù)進行計算處理 ,經(jīng)加工處理后得到的結(jié)果 (出口參數(shù) )也放在約定寄存器中 ,返回主程序后 ,主程序直接到該寄存器中取得結(jié)果 .該法簡單 ﹑ 直觀 ,信息傳遞快 ,但寄存器個數(shù)有限 ,所以適用于參數(shù)較少的情況 . 91 入口和出口參數(shù)都放在堆棧中 — 傳遞單元在 SS段 . 調(diào)用前 ,入口參數(shù)由主程序送入堆棧 ,子程序從堆棧中取得這些參數(shù)進行處理 ,處理后的結(jié)果又送到堆棧中 .返回主程序后,主程序從堆棧取得結(jié)果 .此法不占用公共寄存器 ,也無需另外開辟單元,但因為子程序的返回地址也在堆棧中 ,所以一定要小心計算參數(shù)與地址 ,否則出錯 . ( 2)堆棧法 92 入口 ﹑ 出口參數(shù)存放在主程序的調(diào)用指令之后 ,即在 CS段 ,書寫指令時 ,用偽指令定義參數(shù) . — 傳遞單元在 CS段 . 此時一定要注意區(qū)分參數(shù)與代碼 . 參數(shù) — 可以是信息本身 → 直接賦值法 。若信息較多 ,可以是信息的地址 → 間接賦值法 . ? 有時主 ﹑ 子之間無參數(shù)傳遞 ,子程序只是完成一個特定動作 → 無參數(shù)子程序 . ? 以上參數(shù)的傳遞方法各有優(yōu)缺點 ,采用哪種方法 ,具體問題具體分析 ,有時 ,幾種方法混合使用 . ( 3)參數(shù)賦值法 93 4﹑ 主程序和子程序公用寄存器的問題 子程序要進行計算處理,自然要使用一些寄存器 .子程序執(zhí)行后,某些寄存器的內(nèi)容會發(fā)生變化 .如果主程序在這些寄存器中已經(jīng)存放了有用信息,則子程序返回后,主程序的運行勢必因原存放信息被破壞而出錯,所以要保護寄存器中內(nèi)容不被破壞 → 保護現(xiàn)場 ;在子程序處理后,恢復寄存器的內(nèi)容 → 恢復現(xiàn)場 . ?保護現(xiàn)場 ﹑ 恢復現(xiàn)場的工作可以在主程序中完成,也可以在子程序中完成: 94 PUSH AX PUSH BX 保護現(xiàn)場 PUSH CX ﹕ 子程序工作部分 POP CX POP BX 恢復現(xiàn)場(注:先進后出) POP AX RET 如:某子程序要用到 AX ﹑BX ﹑CX ,可用進棧 ﹑ 出棧實現(xiàn)保護與恢復現(xiàn)場 . ( 1)子程序中保護(一般用此法) → 在子程序開始,將子程序用到的所有寄存器的內(nèi)容保護起來,在返回之前恢復這些寄存器的內(nèi)容 . 95 如:調(diào)用 DEF子程序,主、子程序中均要使用 AX,可用以下方法保護: PUSH AX ;保護現(xiàn)場 CALL DEF POP AX ;恢復現(xiàn)場 ? 子程序結(jié)構(gòu): 保護現(xiàn)場 → 取入口參數(shù)進行加工處理 → 存結(jié)果至指定單元(作出口準備) → 恢復現(xiàn)場 → 返回 ( 2)在主程序中保護與恢復 → 在調(diào)用前保護某些寄存器 的內(nèi)容,返回后再恢復 . 96 格式: CALL 子程序名 功能:將返回地址進棧,將程序控制轉(zhuǎn)移到子程序 子程序名有類型屬性: NEAR→ 主 ﹑ 子在同一段內(nèi),F(xiàn)AR→ 主 ﹑ 子在不同段 .段內(nèi)只改變 IP,段間改變CS: IP,具體操作: 段內(nèi)調(diào)用: IP→ [SP2], SP2→ SP, OFFSET 子程序名 → IP 段間調(diào)用: CS→ [SP2], IP→ [SP4], SP4→ SP SEG 子程序名 → CS, OFFSET 子程序名 → IP 子程序的調(diào)用指令與返回指令 97 格式: CALL dest 功能:將返回地址進棧,將目的操作數(shù)的內(nèi)容送 IP或 CS:IP(轉(zhuǎn)移) 段內(nèi)操作 :IP→ [SP2], SP2→ SP, REG16/MEM16→IP 段間操作 :CS→[SP 2], IP→[SP 4], SP4→SP MEM32→IP, MEM32+2→CS 98 不管是直接或間接調(diào)用,執(zhí)行 CALL指令后,堆棧內(nèi)容均發(fā)生變化: 原 IPL 原 IPH 原 SP→ 原 SP2→ 段內(nèi)調(diào)用 原 CSL 原 CSH 原 SP→ 原 IPL 原 IPH 原 SP2→ 原 SP4→ 段間調(diào)用 99 格式: RET [N] 功能:將程序控制返回到主程序 . ? N一般可省 ,有 N表示返回后 ,再將 SP+N→ SP,即廢除 N/2個無用字 . 段內(nèi)返回: [SP]→IP, SP+2→SP 段間返回: [SP]→IP, [SP+2]→CS, SP+4→SP 100 在進行子程序設計時,一般應對子程序加以說明,一般說明以下內(nèi)容: 子程序名: 子程序功能: 入口參數(shù): 出口參數(shù): 子程序及其調(diào)用程序設計舉例 101 例 編制將鍵入的十進制數(shù)( 0~ 65535)的 ASCII碼轉(zhuǎn)換為 16位二進制數(shù)的子程序 ;子程序名: ABCDCB ;功能:將十進制數(shù)轉(zhuǎn)換為二進數(shù) ;入口參數(shù): DS: SI← 待轉(zhuǎn)換的十進制數(shù)的 ASCII碼的首地址 CX← 十進制數(shù)的的位數(shù) ;出口參數(shù): AX← 轉(zhuǎn)換結(jié)果 , 即 16位二進制數(shù) 102 ?程序結(jié)構(gòu)為 : 主子程序在同一個 模塊,同一代碼段 . 子程序定義為 NEAR 方法 1 ABCDCB PROC MOV AX, 0 ABCDC1: PUSH CX MOV CX, 10 ; Xi?10+Xi1 MUL CX AND BYTE PTR[SI], 0FH ADD AL, [SI] ADC AH, 0 INC SI POP CX LOOP ABCDC1 RET ABCDCB ENDP 103 ?程序結(jié)構(gòu)為 : 主子程序在同一個 模塊,不同代碼段 . 子程序定義為 FAR 方法 2 SUBCODE SEGMENT ASSUME CS: SUBCODE ABCDCB PROC FAR MOV AX, 0 ABCDC1: PUSH CX MOV CX, 10 ; Xi?10+Xi1 MUL CX AND BYTE PTR[SI], 0FH ADD AL, [SI] ADC AH, 0 INC SI POP CX LOOP ABCDC1 RET ABCDCB ENDP SUBCODE ENDS 104 例 16位二進制補碼數(shù)轉(zhuǎn)換為可供標準輸出設備輸出的十進制數(shù)的 ASCII碼子程序。 ;子程序名 :BCABCD ;功能:二進制補碼轉(zhuǎn)換為十進制數(shù) ASCII碼并顯示 ;入口參數(shù):待轉(zhuǎn)換的二進制數(shù) → AX ;出口參數(shù):轉(zhuǎn)換后的十進制數(shù)的 ASCII碼首地址 → ES:DI ? 參數(shù)傳遞方式:通過寄存器傳遞待轉(zhuǎn)換的二進制數(shù)與結(jié)果的存放首地址 . BCABCD PROC PUSH AX PUSH BX PUSH CX 105 PUSH DX PUSH DI OR AX,AX 。判斷數(shù)的符號 JNS PLUS MOV BYTE PTR ES:[DI],’ ’ INC DI NEG AX PLUS: MOV CX,0 MOV BX,10 LOP1: MOV DX,0 DIV BX 106 PUSH DX INC CX OR AX,AX JNZ LOP1 LOP2: POP AX ADD MOV ES:[DI],AL INC DI LOOP LOP2 MOV AL,’$’ MOV ES:[DI],AL 107 POP DI POP DX POP CX POP BX POP AX RET BCABCD: ENDP 108 例 用它的主程序 ;子程序名: MAX ;功能:求某數(shù)據(jù)區(qū)中無符號字數(shù)據(jù)最大值 ;入口參數(shù):數(shù)據(jù)區(qū)中無符號字數(shù)據(jù)的首地址 ;出口參數(shù):求得的最大值 參數(shù)傳遞方式:通過堆棧傳遞、子程序存取參數(shù)都由 BP間址 BUF dw 63,76,857,829,323,66,21,888 COUNT EQU($BUF)/2 SMAX dw 0 109 。*************主程序 **************** MOV AX,OFFSET BUF PUSH AX MOV AX,COUNT PUSH AX CALL MAX ABC: POP SMAX 。***************子程序 ************************ MAX PROC PUSH BP MOV BP,SP 110 PUSH CX MOV CX,[BP+4] 。 CDE: ADD CX,8967H MOV [BP+6],CX POP CX POP BP RET 111 方法2 參數(shù)賦值法 ── 將參數(shù)存放到 CALL指令后的一串單元中,子程序通過返回地址存取參數(shù)并修改返回地址 。************************** 。主程序 。*************************** …… CALL MAX DW BUF,COUNT SMAX DW 0 …… 112 。******************************* 。子程序 MAX PROC MOV BP,SP MOV DI,[BP] 。取返回地址 MOV SI,CS:[DI] 。取 BUF的偏移地址 MOV CX,CS:[DI+2]。取 COUNT ADD DI,6 。修改地址 MOV [BP],DI 。修改后的返址存入堆棧 113 MOV BX,0 。求最大值保并保存在 BX中 MAX1:MOV AX,[SI] ADD SI,2 CMP AX,BX JNA NEXT XCHG AX,BX NEXT:LOOP MAX1 MOV CS:[DI2],BX。存最大值 RET MAX ENDP
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1