計算機通信接口技術實踐課_第1頁
計算機通信接口技術實踐課_第2頁
計算機通信接口技術實踐課_第3頁
計算機通信接口技術實踐課_第4頁
計算機通信接口技術實踐課_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、實習目的熟悉與掌握PC匯編語言程序的熟悉環(huán)境、輸入輸出軟中斷調(diào)用、調(diào)試和運行方法。二、實驗任務(1)編程1:要求按任一個數(shù)字、字母鍵就在屏幕上顯示出來,當鍵入的鍵為Q時返回DOS;(2)編程2:附圖1-1-1流程圖編程。三、實驗原理(一)匯編語言程序的組成8088匯編語言程序主要由以下幾部分組成:代碼段、數(shù)據(jù)段、堆棧斷。.代碼段代碼段是由匯編CPU指令組成的程序部分,這些指令挖成各種任務,如數(shù)據(jù)傳送、實現(xiàn)算術運算功能等等。代碼段的定義形式如下:段標識符,SEGMENT定位類型組合類型類別段標識符ENDS定位類型組合類型類別在一般情況下可以省略不寫。一些講要講述的數(shù)據(jù)段、堆棧斷的定義形式與上同。

2、.數(shù)據(jù)段雖然代碼斷是一個匯編程序必不可少的部分,但是幾乎所有是8088匯編語言程序都至少需要一個數(shù)據(jù)段,用來存放有關數(shù)據(jù)。例:以下數(shù)據(jù)段定義了3個變量(A,B,C)。DATASEGMENT從數(shù)據(jù)口3F8H讀數(shù)據(jù)并顯示。附圖1-1-1流程圖ADB2BDB3CDW?DATAENDS上述語句中的DB和DW是匯編偽指令,分別定義了兩個字節(jié)和一個屬性為字的存儲單元。A存儲單元存放數(shù)值2,B中存放數(shù)字3,而16存儲單元C中存放不定值。.堆棧段堆棧是8088體系中的一種特殊類型的存儲器,它的特點是“先進后出,后進先出”,即最先入棧的數(shù)據(jù)最后才彈出。堆棧段是匯編程序設計中,一般用來保存程序的返回地址,在調(diào)用子

3、程序前保存當前各個寄存器的值(也稱保存程序現(xiàn)場)。也可以用來臨時保存一些變量值。在段定義SEGMWNT后加上類別為STACK就可以定義一個段為堆棧段。(二)匯編語言程序設計1.簡單程序設計簡單程序只具有順序結構,是按照語句出現(xiàn)的選后次序執(zhí)行一系列的動作,它沒有分支、循環(huán)和轉(zhuǎn)換,如附圖1-1-2所示。(2)分支程序設計在很多實際問題中,往往都需要根據(jù)不同的情況進行不同的處理。這種思想體現(xiàn)在程序設計中,就是根據(jù)不同條件而跳到不同的程序段去執(zhí)行,如附圖1-1-3所示。語句1語句2語句N附圖1-1-2順醋結構附圖1-1-3分支電路在匯編程語言程序中,判斷條件跳轉(zhuǎn)是通過條件轉(zhuǎn)移指令來實現(xiàn)的。例子如下:例

4、:判斷AX的第5是否為1,如果為1將BX內(nèi)容加1。TESTAL,B;將AL內(nèi)容與20H相與JZNEXT;如果結果為0,則轉(zhuǎn)入NEXT去執(zhí)行INCBX;如果結果非0,則表示第5位為1,BX內(nèi)容加1NEXT:TEST指令可改變標志位,當AL第5位為1是,AL內(nèi)容與B想與的結果是非0,即ZF標志位為0,執(zhí)行JZ指令時不跳轉(zhuǎn)。反之,當?shù)?位為0時,想與的結果為0,執(zhí)行JZ指令時則跳轉(zhuǎn)到標號NEXT處。.循環(huán)程序設計循環(huán)結構是重復做一系列動作,直到滿足條件為止,流程圖如附圖1-1-4所示。一種結構(a)是黨某一條件一直成立,則重復做同一個動作或一系列動作,直到條件不成立為止。它是先檢查條件,再執(zhí)行動作。

5、另一種(b)是先執(zhí)行動作,再檢查條件成立與否,因此,這種結構至少要執(zhí)行循環(huán)體內(nèi)同一次。循環(huán)程序一般分為4個部分:設置循環(huán)的初值。如設置循環(huán)次數(shù),為使循環(huán)體正常工作而建立的初始狀態(tài)等。循環(huán)體。循環(huán)體是循環(huán)工作的主要部分,也是在循環(huán)程序中被重復執(zhí)行的部分,是為完成某種特定功能而設計的程序段。修改部分。為保證每次循環(huán),相關信息日循環(huán)計數(shù)器的值、操作數(shù)地址等能發(fā)生有規(guī)律的變化,為下次循環(huán)做偶好準備。循環(huán)控制部分。循環(huán)控制是循環(huán)程序是個戶的關鍵。每個循環(huán)程序必須選擇一個恰當?shù)难h(huán)控制條件來控制循環(huán)的運行和結束。有時循環(huán)次數(shù)是已知的,可使用循環(huán)次數(shù)計數(shù)器來控制:有時循環(huán)次數(shù)是未知的,則應該根據(jù)具體情況設置

6、控制循環(huán)結束的條件。下面舉例說明循環(huán)程序設計的方法。附圖1-1-4循環(huán)結構例:計算從NTADAD單元開始連接20附圖1-1-4循環(huán)結構DATASEGMENTNDATADB2010896701763908702367343291018DATAENDSCSEGSEGMENTASSUMECS:CSEG,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETNDTATMOVAH,0MOVCX,20REPEAT:MOVAL,BXCMPAL,0JNZNEXT;取首地址,建立地址指針;計數(shù)器清零;取首地址,建立地址指針;計數(shù)器清零;循環(huán)次數(shù);取一個數(shù);與零比較;不為零則繼續(xù)取

7、下一個數(shù);為零則計數(shù)器加1;地址指針加1;重復比較,直到20個數(shù)都比較完;程序結束軟中斷調(diào)用指令(功能號:;4c21HDOS中斷調(diào)用指令)NEST:INcBXLOOPREPEATMOVAX,4c00HINT21HcSEGENDSENDSTART.子程序設計子程序又稱為過程,它相當于高幾語言中的過程和函數(shù)。在一個程序的不同部分,往往要用到類似的程序段,這些程序段的功能和結構形式都相同,只是某些變量的賦值不同此時就可以把這些程序段寫成子程序的形式,以便需要時可以調(diào)用它。也可以將具有一定功能的程序段寫成子程序的形式,使程序結構清楚,實現(xiàn)模塊化程序設計。子程序是用過程定義語句PROC和ENDP來定義的

8、。一般格式如下:過程名PROC屬性RET過程名ENDP其中過程名為過程名,它是子程序入口的符號地址。屬性為類別屬性,它可以是NEAR或FAR,由它指出對該過程的調(diào)用還是段間調(diào)用。NEAR用于段內(nèi)調(diào)用,而FAR用于段間調(diào)用。過程屬性確定原則是:(1)調(diào)用程序和過程若在同一代碼段中,則使用NEAR屬性;(2)調(diào)用程序和過程若不在同一代碼段中,則使用FAR屬性;(3)過程是主程序也稱主過程,應定義為FAR屬性。因為我們把程序的主過程看作DOS調(diào)用的一個子過程,而DOS對主過程的調(diào)用和返回都是FAR屬性。另外,調(diào)用過程的指令格式為:過程名例:CODESEGMENT主過程調(diào)用過程功能調(diào)用與功能調(diào)用與高級

9、語言準備了許多標準過程供用戶直接調(diào)用一樣,匯編程序也可以調(diào)用兩種系統(tǒng)服務軟件,即系統(tǒng)功能調(diào)用,這兩個服務所提供的例行程序都是實現(xiàn)微機系統(tǒng)中最基本的功能程序。這些基本功能包括顯示器、鍵盤、打印機、串行口等設備提供輸入與輸出服務,對存儲空間進行分配和釋放的管理;對磁盤設備提供讀寫服務和磁盤空間的管理;以及對文件的讀寫、程序的運行等提供服務。有了這些例行程序,程序員就不必了解硬件接口的特征,可直接用指令設置參數(shù)后,用軟中斷指令調(diào)用。中斷使用方法是:首先按照中斷的規(guī)定,輸入入口參數(shù),然后執(zhí)行指令,最后分析出口參數(shù),如附圖所-示5。設置最后分析出口參數(shù),如附圖所-示5。設置入口參數(shù)執(zhí)行INTn分析出口參

10、數(shù)附圖1-1-5DOS軟中斷調(diào)用方法下面例舉部分功能子程序,中斷號為(1)帶顯示的鍵盤輸入(1號功能)入口參數(shù):無功能:從鍵盤取一個字符顯示。出口參數(shù):輸入字符的II值。說明:若鍵入的是則退出命令執(zhí)行。例如:(2顯)示字符(2號功能)入口參數(shù):待顯示字符。功能:顯示單個字符。出口參數(shù):無。例:要顯示字符可用下列幾條指令:(3顯)示字符串(9號功能)入口參數(shù):S字符串首地址(字符串以為結束語)。功能:在屏幕上顯示字符串(不含$)。如果要顯示字符串”,示例如下:有關調(diào)用的具體方法見有關手冊,這里不講訴。(三)編寫匯編語言程序應特別注意的問題在編寫匯編語言源程序時,除了要寫出能完成程序功能的指令,如

11、還必須加入偽指令,才能形成一個完整的匯編語言源程序。見下例:DATASEGMENT;定義數(shù)據(jù)段;數(shù)據(jù)定義DATAENDS;定義代碼段;主程序定義為一個過程;保存老的數(shù)據(jù)寄存器的值;對賦零值;對內(nèi)容送入堆棧保存;數(shù)據(jù)寄存器賦值;完成程序功能的指令程序段;返回到;主程序結束;定義子程序;子程序指令;子程序結束CSEGENDS;代碼段結束;程序結束()當把主程序建立為過程,由調(diào)用該過程。進入程序后,在源程序代碼中,開始一般都有如下的語句:將的內(nèi)容和作為段地址和便宜抵制入棧,以便在程序結束時用指令返回。如果在主程序開始沒有用上面三條指令在堆棧中建立返回信息或主程序非一個過程,則現(xiàn)在程序結束時就不能直接

12、用返回指令,而應該使用匯編號為的功能調(diào)用返回。如下所示:(程序結構可參考上面循環(huán)程序設計的程序示列)()程序除了需要有段說明語句對程序的各個段行進行說明外,數(shù)據(jù)段寄存器還需要用語句特別賦值。(3)另外,程序中除了每一段,每一個過程需要有相應的結束偽指令,整個的程序也需要一個結束指令。格式為:程序執(zhí)行首指令的標號(四)匯編語言程序上機操作的過程編寫的程序,必須在計算機上運行,才能解決實際問題。下面我們來介紹在機上,如何運行匯編語言源程序的具體步驟可分為4個階段,如附圖所-示6機上,如何運行匯編語言源程序的具體步驟可分為4個階段,如附圖所-示6。運行調(diào)試階段附圖1-1-6匯編語言上機步驟.輸入階段用任何一種文字編輯程序(如)輸入源程序,建立源程序文件,擴張名為匯2編.階段源程序就是用匯編怨言的語句編寫的程序,它是不能為機器所識別的,所以要經(jīng)過匯編程序加以翻譯,因此匯編程序的作用就是把源文件轉(zhuǎn)換成用二進制代碼表示的目標程序,即文件。在轉(zhuǎn)換的過程中,匯編程序?qū)υ闯绦蜻M行二遍掃視,如果源程序中有語法錯誤,最后得到無語法錯誤的文件。常用的匯編程序是,用法是:在鍵入后,要鍵入要匯編的程序文件名。例如,如果經(jīng)第一階段建立一個文件叫,要想生成文件只要鍵入命令:回車

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論