




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第六章 C語言和匯編語言的混合編程 一、一、匯編指令的嵌入式編程 在Turbo C語言程序中,嵌入?yún)R編語言指令是在匯編語句前加一個ASM關鍵字。 語法如下: ASM 操作碼 操作數(shù) ;或回車換行 例6-1.在C語言源程序中嵌入?yún)R編語言語句實現(xiàn)3個整數(shù)求和。 INT SUMS(INT VAR1,INT VAR2,INT VAR3) ASM PUSH AX ASM MOV AX,VAR1 ASM ADD AX,VAR2 ASM ADD AX,VAR3 ASM MOV VAR,AX ASM POP AX RETURN (VAR1) MAIN ( ) -* C語言主程序* PRINTF(“DN”,SU
2、M3(10,20,30); 嵌入?yún)R編的編譯過程 C語言程序中含有嵌入式匯編語言語句時,C編譯器要完成以下三個步驟: 1) 代碼轉換:將*.C源程序的代碼轉換成*.ASM擴展名的匯編語言代碼源文件; 2) 編譯:用默認的匯編程序TASM. EXE把產生的*.ASM匯編語言源文件編譯成*.OBJ目標文件; 3)用TI_INK將目標文件鏈接成*.EXE可執(zhí)行文件。返回返回二、匯編語言程序以傳址方式傳遞參數(shù)調用二、匯編語言程序以傳址方式傳遞參數(shù)調用C函數(shù)函數(shù)例6-2 輸出字符串。 /* C語言程序:*/ extern asub(); main() asub(); /* 調用匯編語言子程序 */ csu
3、b(char * str) /* C語言函數(shù),str是地址參數(shù) */ printf(%sn,str); ; 匯編語言程序 .model small,c extern csub:near .data astring db OK, Assembly !,0dh,0ah,$ cstring db Good, Turbo C 2.0 !,0 .code PUBLIC _asub _asub proc mov dx,offset astring ;匯編語言子程序顯示信息 mov ah,09h int 21h mov ax,offset cstring ;得到字符串的偏移地址 push ax ;壓入調用參
4、數(shù) call csub ;調用C函數(shù) add sp,2 ;平衡堆棧 ret _asub endp end命名約定命名約定C語言程序編譯時自動在函數(shù)名、過程名前加上下劃線“_”,而調用時直接使用過程名。C程序中直接調用sum(3, 5)則匯編語言的過程名應為_sum調用約定調用約定C程序中對要調用的外部過程用extern關鍵字進行說明extern int sum(int, int);參數(shù)傳遞約定參數(shù)傳遞約定C程序向匯編程序傳送參數(shù)通過堆棧進行,采用C調用規(guī)則進行參數(shù)傳遞:參數(shù)壓棧順序與參數(shù)表中出現(xiàn)的順序相反,第一個參數(shù)最后壓棧通過AL、AX或DX:AX寄存器返回結果高地址高地址低地址低地址堆棧堆
5、棧生長生長方向方向BP保護保護IPCS參數(shù)參數(shù)1參數(shù)參數(shù)2BPBP+2BP+4BP+6PUBLIC _sum_sum PROC NEAR PUSH BP MOV BP, SP MOV AX, BP+6 POP BP RET_sum ENDP例6-3 兩個數(shù)求和。.MODEL SMALL.CODEPUBLIC _SUM_SUM PROCPUSH BPMOV BP, SPMOV AX, BP+6MOV BX, BP+8ADD AX, BXPOP BPRET_SUM ENDPEND#include extern int sum(int a, int b);void main() printf(The sum is %d n, sum(5, 3);編譯、匯編、連接方法編譯、匯編、連接方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度IT運維中心員工勞動合同范本
- 2025版新材料研發(fā)投資虧損風險規(guī)避與收益保證合同
- 2025版汽車租賃公司車輛運輸及事故處理服務合同范本
- 二零二五版保姆雇傭合同與雇主文化融合協(xié)議
- 2025版辦公家具智能化辦公解決方案合同
- 2025版汽車抵押財產保險合同范本
- 2025年教育信息化基礎設施建設與教育信息化產業(yè)未來展望研究報告
- 2025年智能家居產品銷售渠道消費者需求分析評估報告
- 2025年生態(tài)修復工程生物多樣性保護與生態(tài)修復工程生態(tài)修復技術政策建議報告
- 陜西計量支付管理辦法
- 奉賢區(qū)教育系統(tǒng)師德師風建設學習測試附有答案
- 西方經濟學(第二版)完整整套課件(馬工程)
- 扶貧農產品購銷合同協(xié)議(農產品購銷合同模板)
- 汽車維修高級工考試試題及參考答案
- 檢驗科安全管理制度匯總
- 英語音標拼讀方法講解
- GB/T 5782-2016六角頭螺栓
- GB/T 23445-2009聚合物水泥防水涂料
- GB/T 13451.2-1992著色顏料相對著色力和白色顏料相對散射力的測定光度計法
- GB/T 11264-2012熱軋輕軌
- 山東省中小學校檔案管理暫行辦法
評論
0/150
提交評論