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

正文內(nèi)容

[工學(xué)]匯編語言與接口技術(shù)第四章(參考版)

2024-12-10 23:42本頁面
  

【正文】 求最大值保并保存在 BX中 MAX1:MOV AX,[SI] ADD SI,2 CMP AX,BX JNA NEXT XCHG AX,BX NEXT:LOOP MAX1 MOV CS:[DI2],BX。修改地址 MOV [BP],DI 。取 BUF的偏移地址 MOV CX,CS:[DI+2]。子程序 MAX PROC MOV BP,SP MOV DI,[BP] 。*************************** …… CALL MAX DW BUF,COUNT SMAX DW 0 …… 112 。************************** 。***************子程序 ************************ MAX PROC PUSH BP MOV BP,SP 110 PUSH CX MOV CX,[BP+4] 。判斷數(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 。若信息較多 ,可以是信息的地址 → 間接賦值法 . ? 有時主 ﹑ 子之間無參數(shù)傳遞 ,子程序只是完成一個特定動作 → 無參數(shù)子程序 . ? 以上參數(shù)的傳遞方法各有優(yōu)缺點 ,采用哪種方法 ,具體問題具體分析 ,有時 ,幾種方法混合使用 . ( 3)參數(shù)賦值法 93 4﹑ 主程序和子程序公用寄存器的問題 子程序要進行計算處理,自然要使用一些寄存器 .子程序執(zhí)行后,某些寄存器的內(nèi)容會發(fā)生變化 .如果主程序在這些寄存器中已經(jīng)存放了有用信息,則子程序返回后,主程序的運行勢必因原存放信息被破壞而出錯,所以要保護寄存器中內(nèi)容不被破壞 → 保護現(xiàn)場 ;在子程序處理后,恢復(fù)寄存器的內(nèi)容 → 恢復(fù)現(xiàn)場 . ?保護現(xiàn)場 ﹑ 恢復(fù)現(xiàn)場的工作可以在主程序中完成,也可以在子程序中完成: 94 PUSH AX PUSH BX 保護現(xiàn)場 PUSH CX ﹕ 子程序工作部分 POP CX POP BX 恢復(fù)現(xiàn)場(注:先進后出) POP AX RET 如:某子程序要用到 AX ﹑BX ﹑CX ,可用進棧 ﹑ 出棧實現(xiàn)保護與恢復(fù)現(xiàn)場 . ( 1)子程序中保護(一般用此法) → 在子程序開始,將子程序用到的所有寄存器的內(nèi)容保護起來,在返回之前恢復(fù)這些寄存器的內(nèi)容 . 95 如:調(diào)用 DEF子程序,主、子程序中均要使用 AX,可用以下方法保護: PUSH AX ;保護現(xiàn)場 CALL DEF POP AX ;恢復(fù)現(xiàn)場 ? 子程序結(jié)構(gòu): 保護現(xiàn)場 → 取入口參數(shù)進行加工處理 → 存結(jié)果至指定單元(作出口準備) → 恢復(fù)現(xiàn)場 → 返回 ( 2)在主程序中保護與恢復(fù) → 在調(diào)用前保護某些寄存器 的內(nèi)容,返回后再恢復(fù) . 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 在進行子程序設(shè)計時,一般應(yīng)對子程序加以說明,一般說明以下內(nèi)容: 子程序名: 子程序功能: 入口參數(shù): 出口參數(shù): 子程序及其調(diào)用程序設(shè)計舉例 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è)備輸出的十進制數(shù)的 ASCII碼子程序。確定各模塊 的入口及出口參數(shù),為 各模塊分配不同的名字 (入口地址),然后對每一模塊編制獨立的程序段→ 子程序,最后將這些子程序根據(jù)調(diào)用關(guān)系連成一個整體 A A1 A2 A3 A11 A12 A13 A31 A32 子程序設(shè)計 87 主程序 (調(diào)用程序) → 調(diào)用子程序的程序 子程序(被調(diào)用程序)調(diào)用 → 進入子程序的操作。若不同,將不同處的偏移地址送 DIFF字變量,否則將 1送 DIFF。元素每行之和 CBW ADD DX,AX INC SI LOOP INSIDE 80 MOV [DI],DX ADD DI,2 DEC M JNZ OUTSID 81 【 例如 】 用串操作指令編寫將 sourcestring傳送到deststring的程序 Data segment SSTRING DB ‘*FGDHFJGU’ COUNT EQU $SSTRING Data ends DATAE SEGMENT DSTRING DB COUNT DUP(0) DATAE ENDS 82 MOV AX,DATA MOV DS,AX MOV AX,DATAE 。取第一個數(shù) INSIDE: INC SI CMP AL , [SI] JNC NEXCHG XCHG [SI] , AL NEXCHG: LOOP INSIDE 。 內(nèi)循環(huán)初始化 PUSH SI 。 AX*10+Di MOV BX,0AH MUL BX MOV BX,AX ADD BX,CX JMP INPUT WRITE: MOV IN,BX 。 。從鍵盤輸入一個數(shù)字字符 INT 21H CMP AL,0DH 。顯示 MOV AH ,9 INT 21H ret 73 思考 : 鍵入 16位無符號數(shù) ( 0~ FFFFH,即 0~65535) ,若要讓這 16位無應(yīng)符號數(shù)參加某運算,并顯示運算結(jié)果,應(yīng)如何修改程序? 鍵入( 0~ FFFFH) → 將字符串變換為真值參加該運算,存結(jié)果入某單元 → 轉(zhuǎn)換 → 輸出 . 鍵入補碼 ( 8000H~ 7FFFH,即 ﹣32768 ~32767的符號數(shù)),應(yīng)如何修改程序? 鍵入( 8000H~ 7FFFH) → 將字符串變換為真值參加該運算,存結(jié)果入某單元 → 判符號(正、負) → 對絕對值進行轉(zhuǎn)換 → 判正負 → 輸出 74 無符號數(shù)的輸入
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1