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

正文內(nèi)容

模塊化程序設(shè)計與混合編程-文庫吧資料

2025-01-13 21:46本頁面
  

【正文】 cbw ;將 AL內(nèi)容符號擴(kuò)展為一個字(這是導(dǎo)致錯誤處) push ax ;調(diào)用 printf所需的第一個參數(shù)壓棧 mov ax, offset DGROUP:s+83 push ax ;調(diào)用 printf所需的第二個參數(shù)壓棧 call near ptr _printf pop cx pop cx ;清除堆棧中的廢參數(shù) 3: inc si ; i++ 5: cmp si, word ptr [bp22] ; inumber? jb 4 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 顯然,原因在于因為壓棧只能按字進(jìn)行, AL內(nèi)的待顯示內(nèi)容被 CBW語句符號擴(kuò)展為一個字,然后通過堆棧傳遞給了 printf函數(shù),而 printf并不知道原參數(shù)是一個字還是一個字節(jié),它按一個字進(jìn)行了顯示,若 AL內(nèi)的二進(jìn)制數(shù)最高位 1,則符號擴(kuò)展后 AH內(nèi)為 FFH,所以大于 80H的數(shù)均在前面加顯示了 FFH。 _move 函數(shù)四個參數(shù)的含義依次為:接收數(shù)據(jù)的目標(biāo)地址,要傳送的內(nèi)存單元個數(shù),要傳送的內(nèi)存起始位置的偏移量和段地址。其次,提示用戶輸入要顯示的內(nèi)存單元的個數(shù)(為簡單起見,不超過 20個),然后將這一數(shù)據(jù)讀到變量number中。offset); printf(\n Plesae input the number( less than 20) :); scanf(%u,amp。整個程序如下: C語言模塊: ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 include extern void move(char *,unsigned int,unsigned int,unsigned int); main() { unsigned int segment,offset,number; char buf[20]; int i; printf(\n Please input the address (segment:offset):); scanf(%x:%x,amp。 分析:從鍵盤接收用戶輸入的內(nèi)存地址及內(nèi)存長度的工作可由 C語言完成,因為 C語言的庫函數(shù) printf()及 scanf()在給出輸入提示,讀取用戶輸入方面比較方便。 (5) 被調(diào)函數(shù)要保護(hù)的寄存器,同嵌入?yún)R編中對寄存器的限制情況相同?;厩闆r如 表 91所示: 注:若函數(shù)調(diào)用是遠(yuǎn)調(diào)用,則棧頂部的返回地址為 4字節(jié),各參數(shù)的偏移值應(yīng)相應(yīng)修改。當(dāng)程序進(jìn)入被調(diào)函數(shù)時,堆棧結(jié)果如圖 92 a所示: C語言的被調(diào)函數(shù)是通過 BP間址的方式訪問堆棧的,為不破壞 BP的值,在使用 BP前將其壓棧,這時各參數(shù)的位置如圖 92 b所示。另外 C語言大小寫敏感,而匯編語言大小寫不敏感,為不致命名混淆,應(yīng)使匯編語言也保持大小寫敏感,匯編程序的命令行選項 /ml(所有符號區(qū)分大小寫)和 /mx(僅公共標(biāo)識符和外部標(biāo)識符區(qū)分大小寫)可做到這一點。 ② 先編寫一個只有空架的 C程序,用 Turbo C的 B參數(shù)編譯生成匯編輸出,即得到了完整的程序框架。CODE39。 ;未初始化的數(shù)據(jù)段 _para2 label word db 2 dup (?) _BSS ends ?debug C E9 _DATA segment word public 39。 ;代碼段 ; ?debug L5 ;注明以下代碼是由源程序的第 5行產(chǎn)生,下同 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 _add proc near ;函數(shù) add push bp mov bp, sp ; ?debug L7 mov ax, word ptr [bp+4] ;取第一個參數(shù) add ax, word ptr [bp+6] ;取第二個參數(shù),并加 ;到在 AX內(nèi)的第一個參數(shù)上 jmp short 1 1: ; ?debug L8 pop bp ret _add endp ; ?debug L10 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 _main proc near ;主函數(shù) ; ?debug L12 inc word ptr DGROUP:_para1 ;語句 para1++ ; ?debug L13 mov ax, 20 push ax ;為調(diào)用 add壓棧第二個參數(shù)(最右參數(shù)) push word ptr DGROUP:_para1 ;為調(diào)用 add壓棧第一個參數(shù) call near ptr _add ;調(diào)用 add函數(shù) pop cx pop cx ;以上兩句清除堆棧中的二個參數(shù) mov word ptr DGROUP:_para2, ax ; add返回值在 AX ;中,將其賦給 para2 ; ?debug L 14 push word ptr DGROUP:_para2 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 ;為調(diào)用 printf壓棧最右參數(shù) push word ptr DGROUP:_para1 ;為調(diào)用 printf壓棧第二個參數(shù) mov ax, offset DGROUP:s push ax ;為調(diào)用 printf壓棧第一個參數(shù)(最左參數(shù)) call near ptr _printf;調(diào)用 printf add sp, 6 ;清除堆棧中的三個參數(shù) 2: ; ?debug L15 ret _main endp _TEXT ends ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 _BSS segment word public 39。 ;數(shù)據(jù)段 _para1 label word dw 10 _DATA ends _TEXT segment byte public 39。CODE‘ ;代碼段 DGROUP group _DATA, _BSS assume cs:_TEXT, ds:DGROUP, ss:DGROUP _TEXT ends _DATA segment word public 39。 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 3. Turbo C的調(diào)用約定 為了解 Turbo C的調(diào)用接口機(jī)制,觀察其以匯編形式給出的編譯結(jié)果是最好的方式。 ⑥ 極大模式: 代碼、數(shù)據(jù)均用 far指針。代碼最多 64K,數(shù)據(jù)可多達(dá) 1M。 ③ 中模式: 代碼段用 far指針,數(shù)據(jù)段用 near指針,代碼段可多達(dá) 1M,數(shù)據(jù)不能超過 64K。 ② 小模式: 代碼和數(shù)據(jù)各占一個段,因而代碼和數(shù)據(jù)分別不能超過 64K。 ④ 參數(shù)傳遞約定: 調(diào)用參數(shù)以什么方式傳遞的,例如傳遞的是參數(shù)的值還是參數(shù)的地址等。 ② 命名約定: 即標(biāo)識符的命名規(guī)則,以及是否區(qū)分大小寫等。若二種語言對段的劃分情況不同,則雙方指針或地址的使用便不同,這時極易發(fā)生運行錯誤。 返回本章首頁 返回本節(jié)首頁 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 匯編語言與C語言的混合編程 1. 調(diào)用約定 在混合編程中,雙方在如下方面必須遵循相同的接口約定,才可使雙方的代碼協(xié)同工作。 在嵌入?yún)R編碼的末尾,下列寄存器的值必須與進(jìn)入嵌入?yún)R編碼時的值保持一致: BP、 SP、 CS、 DS、 SS。a39。 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 【 例 】 從嵌入?yún)R編語句中訪問 C定義的局部及全局變量。若程序中使用了嵌入?yún)R編,調(diào)用 TCC時必須選擇 B參數(shù),或者是在程序中使用偽指令“ pragma inline” ,此偽指令功能與“ B” 參數(shù)等效。 : 其中 file[s]需要編譯或連接的文件,可有一個或多個。 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 含有嵌入式匯編的程序不能在 Turbo C集成開發(fā)環(huán)境下進(jìn)行編譯,因為集成開發(fā)環(huán)境不支持這一功能。一行內(nèi)如果只有一個 asm語句,則后面不需要“;”, asm 語句是 C語言中唯一的依靠換行的語句。 參數(shù) 是匯編指令或偽指令的操作數(shù),它可引用 C語言中的常量、變量和標(biāo)號。 返回本章首頁 返回上一節(jié) 返回本節(jié)首頁 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 在 C程序中可以直接插入?yún)R編語言語句,稱為嵌入式匯編。 C語言提供了三種調(diào)用匯編語言功能的方法:( 1)嵌入?yún)R編 (2)寄存器偽變量與 bdos()、 intdos()、 int86()等系列 DOS、 BIOS服務(wù)調(diào)用函數(shù) (3)C語言與匯編語言的混合編程。 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 高級語言種類較多,本章主要討論與 C語言的混合編程問題,流行的 C編譯器主要有 Turbo C和 MS C,本書主要以 Turbo C為例。 ② 某些程序段需要頻煩運行,單次運行速度的提高可顯著提高整個系統(tǒng)運行效率。匯編語言與高級語言在語言表達(dá)能力、表達(dá)的方便程度、編程效率和運行效率方面各有特點,這就需要它們相互“取長補(bǔ)短”,即混合編程,以便取得最大的綜合效益。039。 【 例 】 利用 COMMON段訪問另一個模塊的數(shù)據(jù)區(qū)。539。 這個例子的關(guān)鍵是訪問外部模塊的變量前事先要調(diào)整 DS使之保存外部變量所在段的段地址。 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA SET PROC FAR PUSH DS MOV AX, DATA MOV DS, AX MOV BL, BUF2 MOV AX, SEG BUF1 MOV DS, AX MOV AL, BUF1 ADD AL, BL MOV BUF1, AL POP DS RET SET ENDP CODE ENDS END 運行顯示: 8 ?第 9章 模塊化程序設(shè)計與混合編程 匯編語 言程序 設(shè)計 高等 教 育出版社 這個例子中模塊 A與模塊 B各有自已的數(shù)據(jù)段,當(dāng)控制從模塊 A轉(zhuǎn)移到模塊 B時, DS仍指向模塊 A的數(shù)據(jù)段,由于模塊 B要使用 DS訪問自已的數(shù)據(jù)段,所以它先將 DS壓棧保存,然后使 DS指向自己的數(shù)據(jù)段,完成數(shù)據(jù)的讀取后,又修改 DS使之指向模塊 A的數(shù)據(jù)段,從而訪問模塊 A的 BUF1變量 。對例 : EXTRN SET: FAR PUBLIC BUF1 .MODEL SMALL .DATA
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1