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

正文內容

模塊化程序設計與混合編程-文庫吧

2024-12-23 21:46 本頁面


【正文】 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章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 這個例子中模塊 A與模塊 B各有自已的數據段,當控制從模塊 A轉移到模塊 B時, DS仍指向模塊 A的數據段,由于模塊 B要使用 DS訪問自已的數據段,所以它先將 DS壓棧保存,然后使 DS指向自己的數據段,完成數據的讀取后,又修改 DS使之指向模塊 A的數據段,從而訪問模塊 A的 BUF1變量 。最后,在返回模塊 A前通過出棧將 DS恢復為進入時的初值(本例中由于在訪問模塊 A的變量 BUF1時已使 DS指向了模塊 A的數據段,保存恢復 DS的工作可以省略)。 這個例子的關鍵是訪問外部模塊的變量前事先要調整 DS使之保存外部變量所在段的段地址。由于訪問內存并不一定非要用 DS,若用其它段寄存器(如 ES),則除了要事先調整該段寄存器使之存儲被訪問外部變量所在段的段值外,還要在使用變量時在前面加上段超越標記,如可將模塊 B修改如下: ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 EXTRN BUF1: BYTE PUBLIC SET DATA SEGMENT BUF2 DB 39。539。 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 ES, AX MOV AL, ES: BUF1 ;使用段超越標記 ADD AL, BL MOV ES: BUF1, AL POP DS RET SET ENDP CODE ENDS END ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 模塊間信息傳遞的另一個方法是利用 COMMON段,只要二個模塊中都定義一個同名同類別的數據段,且組合類型都為 COMMON,由于這二個段在鏈接時要重合為一個段,只要在這二個段內將變量安排在相同的位置上,那么它們對應的是相同的存儲區(qū)。 【 例 】 利用 COMMON段訪問另一個模塊的數據區(qū)。 將上例進行修改,如下: ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 模塊 A: EXTRN SET: FAR DATA SEGMENT COMMON BUF1 DB 3 BUF2 DB 39。039。 DATA ENDS CODE1 SEGMENT ASSUME CS: CODE1, DS: DATA START: MOV AX, DATA MOV DS, AX CALL SET MOV DL, BUF2 MOV AH, 2 INT 21H MOV AH, 4CH INT 21H CODE1 ENDS END START ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 模塊 B: PUBLIC SET DATA SEGMENT BUF1 DB ? BUF2 DB ? DATA ENDS CODE2 SEGMENT ASSUME CS: CODE2, DS: DATA SET PROC FAR MOV AL, BUF1 ADD BUF2, AL RET SET ENDP CODE2 ENDS END 返回本章首頁 返回本節(jié)首頁 ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 匯編語言與高級語言的接口 概述 嵌入式匯編 匯編語言與 C語言的接口 ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 對于一項軟件工程而言,首要目標是保證達到軟件所需質量,其次是盡可能降低開發(fā)成本。匯編語言與高級語言在語言表達能力、表達的方便程度、編程效率和運行效率方面各有特點,這就需要它們相互“取長補短”,即混合編程,以便取得最大的綜合效益。高級語言與匯編語言的混合編程通常發(fā)生在下列情況下: ① 需要訪問機器的硬件特征,這些特征用高級語言表達比較困難。 ② 某些程序段需要頻煩運行,單次運行速度的提高可顯著提高整個系統(tǒng)運行效率。 ③ 有現成的匯編語言程序段可用。 ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 高級語言種類較多,本章主要討論與 C語言的混合編程問題,流行的 C編譯器主要有 Turbo C和 MS C,本書主要以 Turbo C為例。 C語言的目標是追求效率,因而它與匯編語言與較多的“血源關系”。 C語言提供了三種調用匯編語言功能的方法:( 1)嵌入匯編 (2)寄存器偽變量與 bdos()、 intdos()、 int86()等系列 DOS、 BIOS服務調用函數 (3)C語言與匯編語言的混合編程。其中第二種方法因主要涉及 C語言的編程問題,本書不作討論,請讀者參考相關 C語言書籍。 返回本章首頁 返回上一節(jié) 返回本節(jié)首頁 ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 在 C程序中可以直接插入匯編語言語句,稱為嵌入式匯編。 asm [標號 ] 匯編指令或偽指令 參數 ;或新行 說明: asm 是嵌入匯編語句的關鍵字 匯編指令或偽指令 可是任何有效的匯編指令或偽指令 標號 是可選的。 參數 是匯編指令或偽指令的操作數,它可引用 C語言中的常量、變量和標號。 ;或新行 都表示 asm語句的結束,一行內可寫多條嵌入式匯編語句,它們以“;”分隔。一行內如果只有一個 asm語句,則后面不需要“;”, asm 語句是 C語言中唯一的依靠換行的語句。 asm語句如需要注釋,必須采用 C格式的注釋,即“ /* 注釋內容 */” 編譯后,函數外的匯編語句放在數據段內,函數內的匯編語句放在代碼段內。 ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 含有嵌入式匯編的程序不能在 Turbo C集成開發(fā)環(huán)境下進行編譯,因為集成開發(fā)環(huán)境不支持這一功能。這樣的程序必須使用 Turbo C的命令行編譯器 ,而 TASM.EXE,所以當前目錄下必須保證有匯編程序 。 : 其中 file[s]需要編譯或連接的文件,可有一個或多個。 [ options ]為各個參數選項,常用的有“ B” 用于指示源程序中使用了嵌入匯編,“ – S” 能使 。若程序中使用了嵌入匯編,調用 TCC時必須選擇 B參數,或者是在程序中使用偽指令“ pragma inline” ,此偽指令功能與“ B” 參數等效。 TCC [ options ] file[s] ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 【 例 】 嵌入式匯編的編譯連接 有如下程序: asm BUF DB “this is a test $” main() { asm MOV AH, 9 asm MOV DX, OFFSET BUF asm INT 21H } 在 TC的集成開發(fā)環(huán)境下編輯完以上程序后,存盤(假設文件名為 ),然后以如下命令行進行編譯連接: tcc – B . (注意: tcc的參數是區(qū)分大小寫的,不要將“ B” 寫成“ b” ) 則可生成 ,在 DOS下運行之,即可在屏幕上顯示“ this is a test” 。 ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 【 例 】 從嵌入匯編語句中訪問 C定義的局部及全局變量。分析如下程序: include int i=3; main() { char j=39。a39。; struct s{ int x; int y; }stru; =50; =20; printf(\nj=%c, j); asm inc byte ptr j printf(\nj=%c, j); printf(\ni=%d, i); asm mov ax, asm sub ax, asm mov i, ax printf(\ni=%d, i); } 該程序的運行結果如下: j=a j=b i=3 i=30 ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 嵌入匯編碼中的轉移指令只能引用 C中定義的標號,而嵌入匯編碼中的非轉移指令則可引用除標號以外的任何 C元素。 在嵌入匯編碼的末尾,下列寄存器的值必須與進入嵌入匯編碼時的值保持一致: BP、 SP、 CS、 DS、 SS。如果 C程序中用到了寄存器變量,還需再保證 SI、 DI的值不變,其它寄存器的值可自由改變。 返回本章首頁 返回本節(jié)首頁 ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 匯編語言與C語言的混合編程 1. 調用約定 在混合編程中,雙方在如下方面必須遵循相同的接口約定,才可使雙方的代碼協(xié)同工作。 ① 內存模式: 即對內存的使用,主要是段、組的劃分,以及段名、組名的約定等。若二種語言對段的劃分情況不同,則雙方指針或地址的使用便不同,這時極易發(fā)生運行錯誤。如在函數調用中,一方將四節(jié)地址壓棧,而另一方則只將二字節(jié)地址出棧,可能造成程序崩潰。 ② 命名約定: 即標識符的命名規(guī)則,以及是否區(qū)分大小寫等。 ③ 調用約定: 調用者以什么順序將參數壓棧,被調用者以什么順序提取參數,由誰負責最后清除堆棧中的參數等。 ④ 參數傳遞約定: 調用參數以什么方式傳遞的,例如傳遞的是參數的值還是參數的地址等。 ?第 9章 模塊化程序設計與混合編程 匯編語 言程序 設計 高等 教 育出版社 2. Tucbo C的六種存儲模式 為允許程序員決定內存布局結構,以便更合理高效地使用內存, Tucbo C提供了六種存儲模式( MS C相同),如下: ① 極小模式: 程序的所有代碼和數據限制在 64K內,即程序只有一個段, CS=DS=ES=SS,所有指針全部為 near指針。 ② 小模式: 代碼和數據各占一個段,因而代碼和數據分別不能超過 64K。DS=SS=ES,所有指針都為 near指針。 ③ 中模式:
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1