- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5章程序
* 下一章 連結外部函式庫 本書所用的連結函式庫 堆疊運算 定義和使用程序 運用程序的程式設計 * 規劃使用程序的設計 由上而下的設計 (功能的分解)包括下列各項: 在開始編碼之前設計你的計畫 中斷大的工作進入更小的一些 使用以程序呼叫為基礎的階層的結構 分開地測試個別的程序 * 整數總和計畫(1 of 4) 主要部份步驟: 為多個整數的提示使用者 計算排列的總數 顯示總數 描述:寫一個對於多個 32 位元整數促使使用者的計畫,在排列中儲存他們,計算排列的總數,而且顯示在螢幕上的總數。 * 程序設計(2 of 4) Main Clrscr ; 清除螢幕 PromptForIntegers WriteString ; 顯示字串 ReadInt ; 數入整數 ArraySum ; 整數總加 DisplaySum WriteString ; 顯示字串 WriteInt ; 顯示整數 * 結構圖(3 of 4) 灰色指出程式館程序 顯示 stub program 顯示final program * 樣本輸出(4 of 4) Enter a signed integer: 550 Enter a signed integer: -23 Enter a signed integer: -96 The sum of the integers is: +431 * 摘要 程序–命名了可執行編碼的區段 執行時期堆疊– LIFO 構成 保存回復位址,參數,局部變數 PUSH –增加數值堆疊 POP –除去堆疊的距離數值 使用irvine32 程式館作為所有的標準輸入/輸出和資料轉變 在 c:\ Irvine\examples\Lib32 文件夾中學習程式館原始碼 * 結束 * 執行時期堆疊 想像板塊的堆疊. . . 板塊只被加到頂端 板塊只從頂端被移動 LIFO結構 * 執行時期堆疊 藉著中央處理器處理,使用二個暫存器 SS (堆疊片段) ESP (堆疊指針) * * SP in Real-address mode * PUSH 運算(1 of 2) 一個 32位元推動行動漸減堆疊指針在 4 之前而且拷貝價值進入被堆疊指針指向的地點。 * PUSH 運算 (2 of 2) 相同的堆疊在推動另外二個整數之後: 在 ESP 下面的區域總是可得的。(除非堆疊已經氾濫) * POP 運算 副本進入一個暫存器或變數之內在堆疊〔ESP〕評價. 把 n 加入 ESP, n 是或 2 或 4. n 的價值靠接受資料的運算元的屬性 * PUSH 和 POP 指令 PUSH 語法: PUSH r/m16 PUSH r/m32 PUSH imm32 POP 語法: POP r/m16 POP r/m32 * 使用 PUSH 和 POP push esi ; push registers push ecx push ebx mov esi,OFFSET dwordVal ; display some memory mov ecx,LENGTHOF dwordVal mov ebx,TYPE dwordVal call DumpMem pop ebx ; restore registers pop ecx pop esi 當他們包含重要的價值時候,解救而且回復暫存器.PUSH和POP協議指導在相反的次序中發生 . * 例子:築巢環路 mov ecx,100 ; set outer loop count L1: ; begin the outer loop push ecx ; save outer loop count mov ecx,20 ; set inner loop count L2: ; begin the inner loop ; ; loop L2 ; repeat the inner loop pop ecx ; restore outer loop count loop L1 ; repeat the outer loop 當創造一個被巢狀環路的時候,在進入內部的環路之前推動外部的環路櫃台: * 例子:字串倒轉 和編入索引一起使用一個環演說 push在堆疊上的每個字符 從最初的地方開始字串,彈出在反面的次序中的堆疊,進入字串之內把每個字符插入回來 原始碼 Q: 壓入之前,為什麼每個字符必須被提出 EAX? 因為只有字 (16 位元)或 doubleword(32 位元)價值能是急忙前進壓入。 * 你輪到的. . . 以相反規劃的字串作為出發點, #1:修正計畫,如此使用者能輸入在 1 和 50個字符之間包含的字串. #2:修正計畫,如此它輸入來自使用者的一連串的 3
文档评论(0)