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

正文內(nèi)容

微機原理與匯編語言及接口技術(shù)(4)(編輯修改稿)

2025-11-14 14:50 本頁面
 

【文章內(nèi)容簡介】 ECX=數(shù)組元素個數(shù) xor eax,eax 。 求和初值為 0 mov ebx,eax 。 數(shù)組指針為 0 again: add eax,array[ebx*(type array)] 。 求和 inc ebx 。 指向下一個數(shù)組元素 loop again mov sum,eax 。 保存結(jié)果 call dispsid 。 顯示結(jié)果 循環(huán)體 循環(huán)控制 循環(huán)初始 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 計數(shù)控制循環(huán) ?通過次數(shù)控制循環(huán) 利用 LOOP指令屬于計數(shù)控制 常見是 “ 先循環(huán) 、 后判斷 ” 循環(huán)結(jié)構(gòu) ?計數(shù)可以減量進行 , 即減到 0結(jié)束 ?計數(shù)可以增量進行 , 即達到規(guī)定值結(jié)束 循環(huán)程序結(jié)構(gòu)的關(guān)鍵是如何控制循環(huán) 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 〔 例 411〕 簡單加密解密程序- 1 。 數(shù)據(jù)段 key byte 234 bufnum = 255 buffer byte bufnum+1 dup(0) 。 定義鍵盤輸入需要的緩沖區(qū) msg1 byte 39。Enter messge: 39。,0 msg2 byte 39。Encrypted message: 39。,0 msg3 byte 13,10,39。Original messge: 39。,0 。 代碼段 mov eax,offset msg1 。 提示輸入字符串 call dispmsg mov eax,offset buffer 。 設(shè)置入口參數(shù) EAX call readmsg 。 調(diào)用輸入字符串子程序 push eax 。 字符個數(shù)保存進入堆棧 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 〔 例 411〕 簡單加密解密程序- 2 mov ecx,eax 。 ECX=實際輸入的字符個數(shù) , 作為循環(huán)的次數(shù) xor ebx,ebx 。 EBX指向輸入字符 mov al,key 。 AL=加密關(guān)鍵字 encrypt: xor buffer[ebx],al 。 異或加密 inc ebx dec ecx 。 等同于指令: loop encrypt jnz encrypt 。 處理下一個字符 mov eax,offset msg2 call dispmsg mov eax,offset buffer 。 顯示密文 call dispmsg 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 〔 例 411〕 簡單加密解密程序- 3 pop ecx 。 從堆棧彈出字符個數(shù) , 作為循環(huán)的次數(shù) xor ebx,ebx 。 EBX指向輸入字符 mov al,key 。 AL=解密關(guān)鍵字 decrypt: xor buffer[ebx],al 。 異或解密 inc ebx dec ecx jnz decrypt 。 處理下一個字符 mov eax,offset msg3 call dispmsg mov eax,offset buffer 。 顯示明文 call dispmsg 示意圖 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 條件控制循環(huán) ?根據(jù)條件決定是否進行循環(huán) 需要使用有條件轉(zhuǎn)移指令實現(xiàn) 多見 “ 先判斷 、 后循環(huán) ” 結(jié)構(gòu) ?先行判斷的條件控制循環(huán)程序 很像雙分支結(jié)構(gòu) 主要分支需要重復(fù)執(zhí)行多次 ( JMP的目標位置是循環(huán)開始 ) 另一個分支用于跳出這個循環(huán) ?先行循環(huán)的條件控制循環(huán)程序 類似單分支結(jié)構(gòu) , 循環(huán)體就是分支體 順序執(zhí)行就跳出循環(huán) 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 〔 例 412〕 字符個數(shù)統(tǒng)計程序 。 數(shù)據(jù)段 string byte ‘ Do you have fun with Assembly?’ ,0 。 以 0結(jié)尾的字符串 。 代碼段 xor ebx,ebx 。 EBX用于記錄字符個數(shù) , 也用于指向字符的指針 again: mov al,string[ebx] cmp al,0 。 用指令 “ test al,al” 更好 jz done inc ebx 。 個數(shù)加 1 jmp again 。 繼續(xù)循環(huán) done: mov eax,ebx 。 顯示個數(shù) call dispuid 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 〔 例 413〕 字符剔除程序- 1 mov eax,offset string 。 顯示處理前字符串 call dispmsg mov esi,offset string outlp: cmp byte ptr [esi],0 。 外循環(huán) , 先判斷后循環(huán) jz done 。 為 0結(jié)束 again: cmp byte ptr [esi],39。 39。 。 是否是空格 jnz next 。 不是空格繼續(xù)循環(huán) mov edi,esi 。 是空格 , 剔除空格分支 inlp: inc edi 。 該分支是循環(huán)程序 mov al,[edi] 。 前移一個位置 mov [edi1],al 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 〔 例 413〕 字符剔除程序- 2 cmp byte ptr [edi],0 。 內(nèi)循環(huán) , 先循環(huán)后判斷 jnz inlp 。 內(nèi)循環(huán)結(jié)束處 jmp again 。 再次判斷是否為空格 ( 處理連續(xù)空格 ) next: inc esi 。 繼續(xù)對后續(xù)字符進行判斷處理 jmp outlp 。 外循環(huán)結(jié)束處 done: mov eax,offset string 。 顯示處理后字符串 call dispmsg 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 子程序結(jié)構(gòu) ?經(jīng)常用到的應(yīng)用問題編寫成一個通用子程序 ?大型處理過程分解成能夠解決的模塊 ?使用子程序可以 使程序的結(jié)構(gòu)更為清楚 程序的維護更為方便 有利于大程序開發(fā)時的多個程序員分工合作 子程序 ( Subroutine) =函數(shù) ( Function) =過程 ( Procedure) 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 子程序指令 ?子程序 :與主程序分開的 、 完成特定功能的一段程序 ?當 主程序 ( 調(diào)用程序 )執(zhí)行調(diào)用指令 CALL調(diào)用子程序 ?子程序 ( 被調(diào)用程序 )執(zhí)行返回指令 RET返回主程序 CALL label 主程序 RET 子程序 回到 CALL指令后的指令處 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 1. 子程序調(diào)用指令 CALL ?CALL指令用在主程序中 , 實現(xiàn)子程序的調(diào)用 ?分成段內(nèi)調(diào)用 ( 近調(diào)用 ) 和段間調(diào)用 ( 遠調(diào)用 ) ?目標地址采用相對尋址 、 直接尋址或間接尋址 ?入棧返回地址:將 CALL下條指令的地址壓入堆棧 CALL label 。調(diào)用標號指定的子程序 CALL reg16/reg32 。調(diào)用寄存器指定地址的子程序 CALL mem16/mem32 。調(diào)用存儲單元指定地址的子程序 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 2. 子程序返回指令 RET ?RET指令用在子程序結(jié)束 , 實現(xiàn)返回主程序 RET 。無參數(shù)返回:出棧返回地址 RET i16 。有參數(shù)返回:出棧返回地址 。ESP←ESP + i16 MASM會根據(jù)存儲模型等信息確定子程序的遠近調(diào)用 , 并相應(yīng)產(chǎn)生返回指令 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 3. 過程定義偽指令 ?MASM利用過程定義偽指令獲得子程序信息 過程名 PROC ?? 。過程體 過程名 ENDP 。過程名為符合語法的標識符 ?PROC后面可加參數(shù): NEAR或 FAR ?簡化段定義源程序格式中 , 通常不需指定 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 〔 例 414〕 子程序調(diào)用程序- 1 。 代碼段 , 主程序 00000000 B8 00000001 mov eax,1 00000005 BD 00000005 mov ebp,5 0000000A E8 00000016 call subp 。 子程序調(diào)用 0000000F B9 00000003 retp1: mov ecx,3 00000014 BA 00000004 retp2: mov edx,4 00000019 E8 00000000 E call disprd 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 〔 例 414〕 子程序調(diào)用程序- 2 。 子程序 subp proc 。 過程定義 , 過程名為 subp push ebp mov ebp,esp mov esi,[ebp+4] 。 ESI= CALL下條指令 (標號 RETP1)偏移地址 mov edi,offset retp2 。 EDI= 標號 RETP2的偏移地址 mov ebx,2 pop ebp 。 彈出堆棧 , 保持堆棧平衡 ret 。 子程序返回 subp endp 。 過程結(jié)束 MOV [EBP+4],EDI 示意圖 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 子程序設(shè)計 ?子程序的編寫方法與主程序一樣 ?但需要留意幾個問題: ?利用過程定義 , 獲得子程序名和調(diào)用屬性 ?RET指令返回主程序 , CALL指令調(diào)用子程序 ?壓入和彈出操作要成對使用 , 保持堆棧平衡 ?開始保護寄存器 , 返回前相應(yīng)恢復(fù) ?安排在代碼段的主程序之外 ?子程序允許嵌套和遞歸 最好有完整的注釋 難點是參數(shù)傳遞 微 機 原 理 與 接 口 技 術(shù) 第 4 版 機 械 工 業(yè) 出 版 社 〔 例 415〕 十六進制顯示程序- 1 mov eax, 1234abcdh 。 假設(shè)一個數(shù)據(jù) xor ebx,ebx mov ecx,8 。 8位十六進制數(shù) again: rol eax,4 。 高 4位循環(huán)移位進入低 4位
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1