2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  本課程設(shè)計(jì)要求完成的任務(wù)是實(shí)現(xiàn)兩臺(tái)PC機(jī)之間1K數(shù)據(jù)的并行傳輸。為了使程序編寫(xiě)簡(jiǎn)單并便于進(jìn)行調(diào)試,本設(shè)計(jì)采用DOS功能調(diào)用,由鍵盤輸入字符串來(lái)模擬要傳輸?shù)?K數(shù)據(jù)。因?yàn)閭鬏敯òl(fā)送和接收兩方面內(nèi)容,所以程序采用模塊化思想,將整個(gè)程序分為發(fā)送和接收兩個(gè)功能模塊分別來(lái)進(jìn)行編寫(xiě),然后通過(guò)調(diào)用來(lái)實(shí)現(xiàn)整體的功能。程序設(shè)計(jì)的關(guān)鍵部分是8

2、255A的編程控制,本設(shè)計(jì)按要求采用方式2,在傳輸過(guò)程中通過(guò)查詢相關(guān)端口來(lái)判斷是否發(fā)送或接收完畢,從而實(shí)現(xiàn)1K數(shù)據(jù)的接收與發(fā)送。關(guān)鍵詞:并行通訊 發(fā)送 接收 8255A DOS功能調(diào)用</p><p>  1 問(wèn)題的描述與分析</p><p>  題目要求:由甲乙兩臺(tái)微機(jī)之間并行傳送1K字節(jié)數(shù)據(jù)。先甲機(jī)發(fā)送,乙機(jī)接收,后乙機(jī)發(fā)送,甲機(jī)接收。甲乙雙方的8255A均采用方式2工作。8255

3、A控制口地址為303。</p><p>  本題屬于雙機(jī)并行通訊問(wèn)題,應(yīng)分為發(fā)送和接收兩方面分別來(lái)進(jìn)行研究。由于程序需要對(duì)地址進(jìn)行直接操作,所以選擇匯編語(yǔ)言來(lái)編寫(xiě)較為簡(jiǎn)單方便。在寫(xiě)程序的過(guò)程中,由于要用8255A芯片作為并行傳輸芯片,所以要熟練掌握8255A的控制方法;此外,程序多處還要用到DOS功能調(diào)用,所以還要對(duì)DOS的各種功能進(jìn)行系統(tǒng)的學(xué)習(xí)。</p><p>  兩臺(tái)PC各與一個(gè)82

4、55A芯片相連,程序分為兩部分,分別運(yùn)行與兩臺(tái)PC機(jī)上以實(shí)現(xiàn)并行傳輸。連接圖如下:</p><p>  圖1-1 雙機(jī)通訊的連接圖</p><p>  程序分為兩個(gè)部分,分別在甲機(jī)和乙機(jī)上面運(yùn)行。甲機(jī)運(yùn)行的程序是先發(fā)送后接收,乙機(jī)上運(yùn)行的程序時(shí)先接收后發(fā)送,實(shí)現(xiàn)先從甲機(jī)到乙機(jī)傳輸1KB的數(shù)據(jù),后從乙機(jī)到甲機(jī)傳輸1KB的數(shù)據(jù)的功能。我們?cè)趦膳_(tái)微機(jī)的內(nèi)存中各開(kāi)辟一個(gè)1KB的字符區(qū)BUF1,象征

5、性的輸入少許字符,來(lái)模擬要傳輸?shù)?KB的數(shù)據(jù)。再各開(kāi)辟一個(gè)1KB的字符區(qū)BUF2用來(lái)存儲(chǔ)接收到的1KB數(shù)據(jù)。</p><p>  2 8255A芯片的介紹</p><p>  2.1 8255A簡(jiǎn)介及引腳功能</p><p>  8255A是一種通用的可編程并行I/O接口芯片,廣泛用于幾乎所有系列的微機(jī)系統(tǒng)中,如8086、MCS51、Z80等。8255A具有3個(gè)帶鎖

6、存或緩沖的數(shù)據(jù)端口,可與外設(shè)并行進(jìn)行數(shù)據(jù)交換。每個(gè)端口都有一個(gè)數(shù)據(jù)輸入寄存器和一個(gè)數(shù)據(jù)輸出寄存器,輸入時(shí)端口有三態(tài)緩沖器的功能,輸出時(shí)端口有數(shù)據(jù)鎖存器功能。控制A、B和C3個(gè)端口的工作方式,A組控制A口和C口的上半部(PC7~PC4),B組控制B口和C口的下半部(PC3~PC0)的工作方式和輸入/輸出。作用:指定3個(gè)并行端口(PA、PB、PC)是作輸入還是作輸出端口以及選擇8255的工作方式。利用按位置位/復(fù)位控制字可以使PC口的8根線

7、中的任意一根置成高電平輸出或低電平輸出。</p><p>  8255A的芯片引腳圖見(jiàn)圖2-1:</p><p>  圖2-1 8255A的芯片引腳圖</p><p>  RESET:復(fù)位輸入線,當(dāng)該輸入端外于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。 </p><p>  PA0~PA7:端口A輸入輸

8、出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器,一個(gè)8位的數(shù)據(jù)輸入鎖存器。 </p><p>  PB0~PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器,一個(gè)8位的輸入輸出緩沖器。 </p><p>  PC0~PC7:端口C輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器,一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過(guò)工作方式設(shè)定而分成2個(gè)4位的端口,每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和端

9、口B配合使用,可作為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口。 </p><p>  CS:片選信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),表示芯片被選中,允許8255A與CPU進(jìn)行通訊。 </p><p>  RD:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),允許8255A通過(guò)數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 </p><p>  WR:寫(xiě)入信號(hào),當(dāng)這個(gè)

10、輸入引腳為低電平時(shí),允許CPU將數(shù)據(jù)或控制字寫(xiě)入8255A。 </p><p>  D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255A與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過(guò)它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫(xiě)操作,控制字和狀態(tài)信息也通過(guò)數(shù)據(jù)總線傳送。</p><p>  A1、A0:端口地址總線,8255A中有端口A、B、C和一個(gè)內(nèi)部控制字寄存器,共4個(gè)端口,由A0、A1輸入地址信號(hào)來(lái)尋址。(

11、A0、A1的組合與端口關(guān)系,見(jiàn)表2-1)</p><p>  表2-1 A0、A1的組合與端口關(guān)系</p><p>  2.2 8255A的編程</p><p>  所謂8255A編程,就是用戶在使用8255A前,可用軟件來(lái)定義端口的工作方式,選擇所需要的功能。</p><p>  8255A是將所有端口分為兩組來(lái)控制的,因此方式控制字也分為

12、了兩部分:A組控制D6~D3和B組控制D2~D0。其具體格式見(jiàn)表2-2。</p><p>  表2-2 8255A的方式控制字</p><p>  此外,方式控制字未規(guī)定C口的工作方式,只規(guī)定了C口數(shù)據(jù)的傳輸方向,這就表明C口要么作為聯(lián)絡(luò)線用,要么就只工作在方式0。</p><p>  此外,8255A還有一個(gè)特殊的功能,即對(duì)C口直接進(jìn)行置“1”或清“0”操作,這種

13、方法使C口的控制變得更加簡(jiǎn)單、方便。其具體格式見(jiàn)表2-4。</p><p>  表2-4 8255A的C口控制字</p><p>  2.3 8255A的工作方式</p><p>  8255A有三種工作方式:</p><p>  方式0——基本輸入/輸出方式</p><p>  方式1——選通輸入/輸出方式</

14、p><p>  方式2——雙向傳輸方式</p><p>  方式0基本特點(diǎn):方式0是一種基本輸入或輸出方式,該方式適合于通信雙方不需要聯(lián)絡(luò)信號(hào)(應(yīng)答信號(hào))的簡(jiǎn) 單輸入/輸出場(chǎng)合,CPU可以隨時(shí)用輸入/輸出指令對(duì)指定端口進(jìn)行讀寫(xiě)操作。</p><p>  方式1基本特點(diǎn):方式1為選通輸入/輸出方式,即可借助于選通(應(yīng)答式)聯(lián)絡(luò)信號(hào)的I/O方式。PC3~PC0、PC6、PC

15、7作為控制口。A口工作于方式1輸出,所用的聯(lián)絡(luò)信號(hào) 線為PC7、PC6和PC3,而B(niǎo)口工作于方式1輸出時(shí),使用PC2~PC0作其聯(lián)絡(luò)信號(hào)線。</p><p>  方式2基本特點(diǎn):方式2是一種雙向選通輸入/輸出方式,它把A口作為雙向輸入/輸出口,把C口的5根線(PC3~PC7)作為專用應(yīng)答線,所以,8255A只有A口才有2方式。</p><p>  由于本題要求工作在方式2,所以這里只重點(diǎn)

16、介紹方式2的工作原理。</p><p>  方式2的雙向傳輸方式是指在同一端口內(nèi)分時(shí)進(jìn)行輸入/輸出的操作,可用來(lái)在兩臺(tái)處理機(jī)之間實(shí)現(xiàn)雙向并行通信。它需要5個(gè)控制信號(hào)進(jìn)行“聯(lián)絡(luò)”,這5個(gè)控制信號(hào)由C口提供。由于方式2的A口既能發(fā)送,也能接收數(shù)據(jù),所以A口的引腳在“空閑”狀態(tài)下是三態(tài)的。A口在某一時(shí)刻下,輸入或輸出是由相應(yīng)“聯(lián)絡(luò)”線確定的。工作時(shí)可用軟件查詢方式,也可用中斷方式。A口工作在方式2時(shí),C口的“聯(lián)絡(luò)”線既

17、要提供A口的輸入“聯(lián)絡(luò)”線和,又要提供A口的輸出“聯(lián)絡(luò)”線和,具體聯(lián)絡(luò)信號(hào)定義見(jiàn)圖2-2,同時(shí)還要有一個(gè)處理A口中斷的中斷申請(qǐng)線,具體端口分配見(jiàn)表2-5。</p><p>  圖2-2 方式2下的A口聯(lián)絡(luò)線</p><p><b>  I/O</b></p><p><b>  INTRA</b></p>&

18、lt;p><b>  OBFA</b></p><p><b>  ACKA</b></p><p><b>  STBA</b></p><p><b>  IBFA</b></p><p>  當(dāng)8255A的A口工作在方式2時(shí),輸入和輸出共用同一

19、個(gè)中斷請(qǐng)求信號(hào)線。所以,當(dāng)使用中斷方式傳輸數(shù)據(jù)時(shí),可以通過(guò)C口置“1”/清“0”控制字來(lái)設(shè)置中斷屏蔽觸發(fā)器INTE1和INTE2,實(shí)現(xiàn)對(duì)中斷源的控制,禁止/允許輸入時(shí)中斷或輸出時(shí)中斷。</p><p>  表2-5 8255A的方式控制字</p><p>  ——A口的中斷請(qǐng)求信號(hào)。當(dāng)其有效時(shí),8255A的A口向CUP申請(qǐng)中斷。</p><p>  ——A口的選通信

20、號(hào)(外設(shè)發(fā)出,低電平有效)。當(dāng)其有效時(shí),外設(shè)把數(shù)據(jù)輸入A口的輸入緩沖器。</p><p>  ——A口的輸入緩沖器“滿”信號(hào)。當(dāng)其有效時(shí),表示A口的輸入緩沖器已經(jīng)暫存一個(gè)有效數(shù)據(jù)。</p><p>  ——外設(shè)應(yīng)答信號(hào)。由外設(shè)發(fā)出,低電平時(shí)有效。當(dāng)其有效時(shí),表示外設(shè)已經(jīng)接收數(shù)據(jù)。</p><p>  ——A口的輸出緩沖器“滿”信號(hào)。當(dāng)其有效時(shí)表示A口的輸出緩沖器已經(jīng)

21、暫存一個(gè)有效數(shù)據(jù)。</p><p>  3 DOS常用功能的介紹</p><p>  DOS是美國(guó)Microsoft公司為IBM PC研制的磁盤操作系統(tǒng)。DOS不僅為用戶提供了許多使用命令,而且還有用戶可以直接調(diào)用的上百個(gè)常用子程序。對(duì)這些子程序的調(diào)用,稱為系統(tǒng)功能調(diào)用。這些子程序的功能主要是進(jìn)行磁盤讀/寫(xiě)、控制管理、內(nèi)存管理、基本輸入/輸出管理等。在使用時(shí),用戶不需要了解各種I/O接口硬

22、件的詳細(xì)情況就能直接完成對(duì)I/O接口的控制和管理。</p><p><b>  其調(diào)用過(guò)程為:</b></p><p>  DOS功能調(diào)用號(hào)送AH寄存器。</p><p>  如果需要,按要求給定輸入?yún)?shù)(有的不需要輸入?yún)?shù))。</p><p>  寫(xiě)入中斷指令“INT 21H”。</p><p&g

23、t;  調(diào)用結(jié)束,按功能使用其輸出參數(shù)。</p><p>  DOS系統(tǒng)啟動(dòng)時(shí),DOS層功能模塊從系統(tǒng)盤被裝入內(nèi)存。調(diào)用這些功能模塊稱為DOS功能調(diào)用。DOS功能調(diào)用可以完成文件管理、存儲(chǔ)管理、作業(yè)管理和設(shè)備管理等。表3-1列出了一些常用的DOS功能調(diào)用。</p><p>  表3-1 常用DOS功能調(diào)用</p><p><b>  4 系統(tǒng)方框圖<

24、/b></p><p>  編寫(xiě)的程序有兩種類型:甲機(jī)是先發(fā)送后接收類型,乙機(jī)是先接收后發(fā)送類型。這兩種類型程序非常相似,只是在調(diào)用發(fā)送、接收子函數(shù)時(shí),順序有所不同。甲機(jī)程序的系統(tǒng)方框圖如圖4-1所示。</p><p>  圖4-1 甲機(jī)程序的系統(tǒng)方框圖</p><p><b>  5 各部分程序設(shè)計(jì)</b></p><

25、;p>  5.1 甲機(jī)源程序見(jiàn)附錄1</p><p>  5.2 乙機(jī)源程序見(jiàn)附錄2</p><p><b>  5.3 發(fā)送子程序</b></p><p><b>  OUT1 PROC</b></p><p>  MOV DX,303H ;

26、對(duì)控制端口進(jìn)行初始化</p><p>  MOV AL,0C9H </p><p>  OUT DX,AL</p><p>  MOV AL,0FH ;將OBFA置1</p><p>  OUT DX,AL </p>

27、<p>  MOV CX,1024 ;設(shè)置循環(huán)次數(shù)</p><p><b>  L1: </b></p><p>  MOV DX,300H ;開(kāi)始傳輸字符</p><p>  MOV AL,[SI]</p><p

28、>  OUT DX,AL </p><p><b>  INC SI</b></p><p><b>  L11: </b></p><p>  MOV DX,302H</p><p>  IN AL,DX</p><p>  AND AL,80H

29、 ;測(cè)試OBFA</p><p>  JZ L11 ;OBFA有效,說(shuō)明前一個(gè)數(shù)還未傳送完,則繼續(xù)等待,否則傳送下一個(gè)數(shù)</p><p><b>  LOOP L1</b></p><p><b>  RET</b>&l

30、t;/p><p>  OUT1 ENDP </p><p><b>  5.4 接收子程序</b></p><p>  IN1 PROC</p><p>  MOV DX,303H ;對(duì)控制端口進(jìn)行初始化</p><p>  MOV AL,0F

31、9H</p><p>  OUT DX,AL</p><p>  MOV AL,0AH ;將IBFA置0</p><p>  OUT DX,AL </p><p>  MOV CX,1024 ;設(shè)置循環(huán)次數(shù)</p>

32、<p><b>  L2:</b></p><p>  MOV DX,302H</p><p>  IN AL,DX</p><p>  AND AL,10H ;測(cè)試IBFA,看是否收到數(shù)</p><p><b>  JZ L2&l

33、t;/b></p><p>  MOV DX,300H ;讀一個(gè)數(shù)</p><p>  IN AL,DX</p><p>  MOV [DI],AL</p><p><b>  INC DI</b></p><p><b&

34、gt;  K2:</b></p><p>  MOV DX,302H</p><p>  IN AL,DX</p><p>  AND AL,10H ;測(cè)試IBFA,看是已存好數(shù)</p><p><b>  JNZ K2</b></p&g

35、t;<p><b>  LOOP L2</b></p><p><b>  RET</b></p><p>  IN1 ENDP</p><p><b>  6 硬件連線</b></p><p>  6.1 8086CPU芯片引腳見(jiàn)圖6-1</p>

36、;<p>  6-1 8086CPU引腳圖</p><p>  針對(duì)本次設(shè)計(jì)只介紹以下幾個(gè)引腳功能:</p><p>  AD15-AD0——分時(shí)復(fù)用的地址數(shù)據(jù)總線。傳送地址時(shí)以三態(tài)輸出,傳送數(shù)據(jù)時(shí)可以以雙向三態(tài)輸入/輸出。</p><p>  A19/S6、A18/S5、A17/S4、A16/S3——分時(shí)復(fù)用的地址/狀態(tài)線。當(dāng)它作為地址線用時(shí)可以構(gòu)成

37、訪問(wèn)存儲(chǔ)器的20位物理地址。</p><p>  M/——存儲(chǔ)器或I/O端口訪問(wèn)信號(hào)(三態(tài)輸出)。M/為高電平時(shí),表示當(dāng)前CPU正在訪問(wèn)存儲(chǔ)器;M/為低電平時(shí),表示當(dāng)前CPU正在訪問(wèn)I/O端口。</p><p>  ——讀信號(hào)(三態(tài)輸出,低電平有效),表示當(dāng)前CPU正在讀存儲(chǔ)器或I/O端口。</p><p>  ——寫(xiě)信號(hào)(三態(tài)輸出,低電平有效),表示當(dāng)前CPU正在

38、寫(xiě)存儲(chǔ)器或I/O端口。</p><p>  INTR——中斷請(qǐng)求信號(hào)(由外部輸入,電平觸發(fā),高電平有效)。INTR有效時(shí),表示外部設(shè)備向CPU發(fā)出中斷請(qǐng)求,CPU在每條指令的最后一個(gè)時(shí)鐘周期對(duì)INTR進(jìn)行測(cè)試,一旦測(cè)試到有中斷請(qǐng)求,并且當(dāng)中斷允許標(biāo)志IF=1時(shí),則暫停執(zhí)行下條指令轉(zhuǎn)入中斷響應(yīng)周期。</p><p>  VCC(電源)——8086CPU只需要單一的+5V電源,由VCC輸入。&

39、lt;/p><p>  6.2 74LS138芯片引腳見(jiàn)圖6-2</p><p>  圖6-2 74LS138引腳圖</p><p>  A0、A1、A2——二進(jìn)制輸入端,它們共有8種狀態(tài)的組合,即可譯出8個(gè)輸出信號(hào)Y0-Y7。</p><p>  、、E3——三個(gè)使能輸入端,其中當(dāng)E1=0、E2=0、E3=1時(shí),譯碼器才能正常工作。</p

40、><p>  Y0-Y7——8個(gè)輸出端。</p><p>  VCC、GND——分別為電源和和接地線。</p><p>  74LS138譯碼器功能表見(jiàn)表6-1。</p><p>  表6-1 74LS138功能表</p><p><b>  6.3 電路連接圖</b></p><

41、p>  由題目所給的控制口地址303H,可知8255A的A口地址為300H,由此可得如圖6-3的硬件連線圖。</p><p>  圖6-3 電路連線圖</p><p>  其中,A19-A0為8086CPU的地址線。</p><p><b>  7 程序調(diào)試</b></p><p>  7.1 命令提示符窗口簡(jiǎn)介&

42、lt;/p><p>  命令提示符窗口(cmd.exe)是Windows的“標(biāo)配”組件,它可以實(shí)現(xiàn)用戶與操作系統(tǒng)的直接交流,并負(fù)責(zé)用戶輸入的所有命令的解釋和支持。使用命令提示符進(jìn)行的操作往往更具有專業(yè)性——實(shí)際上很多Windows中的操作只能通過(guò)命令來(lái)實(shí)現(xiàn)。命令提示符也就是Windows95/98下的“MS-DOS方式”,雖然隨著計(jì)算機(jī)的發(fā)展,Windows操作系統(tǒng)的應(yīng)用越來(lái)越廣泛,DOS面臨著被淘汰的命運(yùn),但是因?yàn)?/p>

43、它運(yùn)行安全、穩(wěn)定,有的用戶還在使用,所以一般操作系統(tǒng)的各種版本都與之兼容,用戶可以在Windows系統(tǒng)下運(yùn)行DOS,另外,中文版的Windows XP的命令提示符進(jìn)一步提高了與DOS下的操作命令的兼容性,用戶可以在命令提示符中直接輸入中文調(diào)用文件。</p><p><b>  7.2 匯編源程序</b></p><p>  匯編源程序檢查程序?qū)﹀e(cuò)并生成obj文件,見(jiàn)圖

44、7-1。</p><p>  圖7-1 匯編源程序</p><p><b>  7.3 程序調(diào)試</b></p><p>  程序調(diào)試見(jiàn)圖7-2。</p><p><b>  圖7-2 程序調(diào)試</b></p><p>  從程序調(diào)試結(jié)果可以看出兩機(jī)實(shí)現(xiàn)并行發(fā)送/接收1KB數(shù)

45、據(jù)基本可以實(shí)現(xiàn),故本次設(shè)計(jì)完成。</p><p><b>  8 小結(jié)與體會(huì)</b></p><p>  本次課程設(shè)計(jì)中,有一些知識(shí)是我們?cè)谡n堂上所沒(méi)有講過(guò)的,因此就需要我們查閱各種資料。通過(guò)這短短一周半的實(shí)踐,我感覺(jué)到自己學(xué)到了很多有用的理論和實(shí)踐知識(shí)。從程序的設(shè)計(jì)到調(diào)試、運(yùn)行,任何一個(gè)步驟都是對(duì)自己的考驗(yàn)。通過(guò)本次課程設(shè)計(jì),我熟練的掌握了8255A芯片的使用方法,

46、了解了雙機(jī)并行通訊的原理,還學(xué)會(huì)了程序編寫(xiě)的一般步驟以及匯編語(yǔ)言的使用,更重要的時(shí),本次課設(shè)很好的鍛煉了我的思維嚴(yán)謹(jǐn)性,因?yàn)槿魏我粋€(gè)錯(cuò)誤都會(huì)導(dǎo)致程序運(yùn)行失敗。</p><p>  總之,通過(guò)本次課設(shè),我感覺(jué)自己受益匪淺。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 邵玉祥. 匯編語(yǔ)言程序設(shè)計(jì). 北京:科學(xué)出版社.2

47、005</p><p>  [2] 陽(yáng)平. 匯編語(yǔ)言與微機(jī)原理. 北京:中國(guó)水利水電出版社.2006</p><p>  [3] 胡薔. 微機(jī)原理及應(yīng)用. 北京:機(jī)械工業(yè)出版社.2006</p><p>  [4] 錢曉捷 . 新版匯編語(yǔ)言程序設(shè)計(jì). 北京:電子工業(yè)出版社.2007</p><p>  [5] 周佩玲. 微機(jī)原理與接

48、口技術(shù). 北京:電子工業(yè)出版社.2007</p><p>  [6] 朱金鈞. 微機(jī)計(jì)算機(jī)原理及應(yīng)用技術(shù). 機(jī)械工業(yè)出版社.2006</p><p>  [7] 楊記文. 匯編語(yǔ)言程序設(shè)計(jì)教程. 北京. 清華大學(xué)出版社</p><p>  [8] 姚君遺. 匯編語(yǔ)言程序設(shè)計(jì). 南京. 南京大學(xué)出版社</p><p>  [9] (美)埃爾溫.

49、 Assembly language for intel-board computers. 清華大學(xué)出版社</p><p>  [10] (美)布魯姆. Professional Assembly Language 機(jī)械工業(yè)出版社</p><p>  附錄1:甲機(jī)原程序代碼</p><p>  ;*********************************

50、**************************************</p><p>  ; 主程序:由甲乙兩臺(tái)微機(jī)之間并行傳送1K字節(jié)數(shù)據(jù)。甲機(jī)發(fā)送,乙機(jī)接收。 *</p><p>  ; 甲乙雙方的8255A均采用方式2工作。 *</p><p>  ; 825

51、5A控制口地址為303 *</p><p>  ;***********************************************************************</p><p>  DATA SEGMENT</p><p>  BUF DB 100

52、 ;表示1KB的數(shù)據(jù)緩沖區(qū)</p><p><b>  DB ?</b></p><p>  DB 100 dup(1)</p><p>  BUF1 DB 1024 DUP(0) ;表示甲PC要傳輸?shù)?KB數(shù)據(jù)</p

53、><p>  BUF2 DB 1024 DUP(0) ;表示甲PC接收的1KB數(shù)據(jù)</p><p>  PUT1 DB 0ah,0dh,'if you want to quit ,please press Q/q! '</p><p>  DB 0ah,0dh,'press other

54、 key to start',0ah,0dh,' $'</p><p>  PUT2 DB 0aH,0dH,'input some words for transfer:'</p><p>  DB 0ah,0dh,'$'</p><p>  DATA ENDS</p><p>

55、;  STACK1 SEGMENT STACK</p><p>  DB 1024 DUP(?)</p><p>  STACK1 ENDS</p><p>  CODE SEGMENT</p><p>  ASSUME DS:DATA,SS:STACK1,CS:CODE</p><p>  START: MO

56、V AX,DATA</p><p>  MOV DS,AX </p><p>  T1: LEA DX,PUT1 ;輸入提示信息PUT1</p><p><b>  MOV AH,9</b></p><p><b>  INT 21h<

57、/b></p><p>  MOV AH,08h ;從鍵盤輸入單個(gè)字符</p><p>  INT 21h </p><p>  CMP AL,'Q' ;輸入字符與Q進(jìn)行比較</p><p>  JE ex

58、it</p><p>  cmp al,'q' ;輸入字符與q進(jìn)行比較</p><p><b>  je exit</b></p><p>  T2: lea dx,PUT2 ;輸入提示信息PUT2

59、 </p><p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><p>  lea dx,BUF ;輸入一串字符到緩沖區(qū)以供</p><p>&

60、lt;b>  傳輸?shù)揭襭c機(jī)</b></p><p>  mov ah,10</p><p><b>  int 21h</b></p><p>  lea di,BUF+2 ;將緩沖區(qū)中字符串的偏移</p><p><b>  地址賦

61、予di</b></p><p>  lea si,BUF1</p><p>  next1: mov dl,[di] ;將緩沖區(qū)的字符移到寄存器dl</p><p><b>  inc di</b></p><p>  cmp dl,0dh

62、 ;檢測(cè)寄存器中的字符是否為回車</p><p>  jne aa1 ;不是回車就跳轉(zhuǎn)到aa1</p><p>  jmp T ;是回車就跳轉(zhuǎn)到T</p><p>  aa1: mo

63、v [si],dl</p><p><b>  inc si</b></p><p>  jmp next1</p><p>  T: LEA SI,BUF1 ;甲機(jī)開(kāi)始傳輸數(shù)據(jù)</p><p><b>  CALL OUT1</b&g

64、t;</p><p>  LEA DI,BUF2 ;甲機(jī)開(kāi)始接收數(shù)據(jù)</p><p><b>  CALL IN1</b></p><p><b>  JMP T1 </b></p><p>  exit: MOV AH,4CH

65、 ;退出程序</p><p><b>  INT 21H </b></p><p>  OUT1 PROC</p><p>  MOV DX,303H ;對(duì)控制端口進(jìn)行初始化</p><p>  MOV AL,0C9H

66、 </p><p>  OUT DX,AL</p><p>  MOV AL,0FH ;將OBFA置1</p><p>  OUT DX,AL </p><p>  MOV CX,1024

67、 ;設(shè)置循環(huán)次數(shù)</p><p><b>  L1: </b></p><p>  MOV DX,300H ;開(kāi)始傳輸字符</p><p>  MOV AL,[SI]</p><p>  OUT DX,AL </p><p><b

68、>  INC SI</b></p><p><b>  L11: </b></p><p>  MOV DX,302H</p><p>  IN AL,DX</p><p>  AND AL,80H ;測(cè)試OBFA</p><

69、;p>  JZ L11 ;OBFA有效,說(shuō)明前一個(gè)數(shù)還未傳 送完,則繼續(xù)等待,否則傳送下一個(gè)數(shù)</p><p><b>  LOOP L1</b></p><p><b>  RET</b></p><p>  OUT1 ENDP </p&g

70、t;<p>  IN1 PROC</p><p>  MOV DX,303H ;對(duì)控制端口進(jìn)行初始化</p><p>  MOV AL,0F9H</p><p>  OUT DX,AL</p><p>  MOV AL,0AH

71、 ;將IBFA置0</p><p>  OUT DX,AL </p><p>  MOV CX,1024 ;設(shè)置循環(huán)次數(shù)</p><p><b>  L2:</b></p><p>  MOV DX,302H</p><p

72、>  IN AL,DX</p><p>  AND AL,10H ;測(cè)試IBFA,看是否收到數(shù)</p><p><b>  JZ L2</b></p><p>  MOV DX,300H ;讀一個(gè)數(shù)</p>&l

73、t;p>  IN AL,DX</p><p>  MOV [DI],AL</p><p><b>  INC DI</b></p><p><b>  K2:</b></p><p>  MOV DX,302H</p><p>  IN AL,D

74、X</p><p>  AND AL,10H ;測(cè)試IBFA,看是已存好數(shù)</p><p><b>  JNZ K2</b></p><p><b>  LOOP L2</b></p><p><b>  RET</b>

75、</p><p>  IN1 ENDP</p><p>  CODE ENDS</p><p>  END START</p><p>  附錄2:乙機(jī)原程序代碼</p><p>  ;***********************************************************

76、************</p><p>  ; 主程序:由甲乙兩臺(tái)微機(jī)之間并行傳送1K字節(jié)數(shù)據(jù)。乙機(jī)發(fā)送,甲機(jī)接收。 *</p><p>  ; 甲乙雙方的8255A均采用方式2工作。 *</p><p>  ; 8255A控制口地址為303

77、 * </p><p>  ;***********************************************************************</p><p>  DATA SEGMENT</p><p>  BUF DB 100

78、 ;表示1KB的數(shù)據(jù)緩沖區(qū)</p><p><b>  DB ?</b></p><p>  DB 100 dup(1)</p><p>  BUF1 DB 1024 DUP(0) ;表示乙PC要傳輸?shù)?KB數(shù)據(jù)</p><p>  BUF2

79、 DB 1024 DUP(0) ;表示乙PC接收的1KB數(shù)據(jù)</p><p>  PUT1 DB 0ah,0dh,'if you want to quit ,please press Q/q! '</p><p>  DB 0ah,0dh,'press other key to start',0ah

80、,0dh,' $'</p><p>  PUT2 DB 0aH,0dH,'input some words for transfer:'</p><p>  DB 0ah,0dh,'$'</p><p>  DATA ENDS</p><p>  STACK1 SEGMENT STAC

81、K</p><p>  DB 1024 DUP(?)</p><p>  STACK1 ENDS</p><p>  CODE SEGMENT</p><p>  ASSUME DS:DATA,SS:STACK1,CS:CODE</p><p>  START: MOV AX,DATA</p>

82、<p>  MOV DS,AX </p><p>  T1: lea dx,PUT1 ;輸入提示信息PUT1</p><p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><

83、p>  mov ah,08h ;從鍵盤輸入單個(gè)字符</p><p>  int 21h </p><p>  cmp al,'Q' ;輸入字符與Q進(jìn)行比較</p><p>  JE exit</p><p>

84、;  cmp al,'q' ;輸入字符與q進(jìn)行比較</p><p><b>  je exit</b></p><p>  T2: lea dx,PUT2 ;輸入提示信息PUT2 &l

85、t;/p><p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><p>  lea dx,BUF ;輸入一串字符到緩沖區(qū)以供</p><p><b>  傳輸?shù)郊譸c機(jī)</b&g

86、t;</p><p>  mov ah,10</p><p><b>  int 21h</b></p><p>  lea di,BUF+2 ;將緩沖區(qū)中字符串的</p><p><b>  偏移地址賦予di</b></p>&

87、lt;p>  lea si,BUF1</p><p>  next1: mov dl,[di] ;將緩沖區(qū)的字符移到寄存器dl</p><p><b>  inc di</b></p><p>  cmp dl,0dh

88、 ;檢測(cè)寄存器中的字符是否為回車</p><p>  jne aa1 ;不是回車就跳轉(zhuǎn)到aa2</p><p>  jmp T ;是回車就跳轉(zhuǎn)到T</p><p>  aa1: mov [si],dl</p><p

89、><b>  inc si</b></p><p>  jmp next1</p><p>  T: LEA DI,BUF2 ;乙機(jī)開(kāi)始接收數(shù)據(jù)</p><p><b>  CALL IN1</b></p><p>  LEA S

90、I,BUF1 ;乙機(jī)開(kāi)始傳輸數(shù)據(jù)</p><p><b>  CALL OUT</b></p><p><b>  JMP T1 </b></p><p>  exit: MOV AH,4CH ;退出程序</p&g

91、t;<p><b>  INT 21H </b></p><p>  OUT1 PROC</p><p>  MOV DX,303H ;對(duì)控制端口進(jìn)行初始化</p><p>  MOV AL,0C9H </p>

92、<p>  OUT DX,AL</p><p>  MOV AL,0FH ;將OBFA置1</p><p>  OUT DX,AL </p><p>  MOV CX,1024 ;設(shè)置循環(huán)次數(shù)</p><p><b&g

93、t;  L1: </b></p><p>  MOV DX,300H ;開(kāi)始傳輸字符</p><p>  MOV AL,[SI]</p><p>  OUT DX,AL </p><p><b>  INC SI</b></p><

94、;p><b>  L11: </b></p><p>  MOV DX,302H</p><p>  IN AL,DX</p><p>  AND AL,80H ;測(cè)試OBFA</p><p>  JZ L11

95、 ;OBFA有效,說(shuō)明前一個(gè)數(shù)還未傳送完,則繼續(xù)等待,否則傳送下一個(gè)數(shù)</p><p><b>  LOOP L1</b></p><p><b>  RET</b></p><p>  OUT1 ENDP </p><p>  IN1 PROC</p>&

96、lt;p>  MOV DX,303H ;對(duì)控制端口進(jìn)行初始化</p><p>  MOV AL,0F9H</p><p>  OUT DX,AL</p><p>  MOV AL,0AH ;將IBFA置0</p><p>  O

97、UT DX,AL </p><p>  MOV CX,1024 ;設(shè)置循環(huán)次數(shù)</p><p><b>  L2:</b></p><p>  MOV DX,302H</p><p>  IN AL,DX</p><p>  A

98、ND AL,10H ;測(cè)試IBFA,看是否收到數(shù)</p><p><b>  JZ L2</b></p><p>  MOV DX,300H ;讀一個(gè)數(shù)</p><p>  IN AL,DX</p><p>

99、  MOV [DI],AL</p><p><b>  INC DI</b></p><p><b>  K2:</b></p><p>  MOV DX,302H</p><p>  IN AL,DX</p><p>  AND AL,10H

100、 ;測(cè)試IBFA,看是已存好數(shù)</p><p><b>  JNZ K2</b></p><p><b>  LOOP L2</b></p><p><b>  RET</b></p><p>  IN1 ENDP</

溫馨提示

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

評(píng)論

0/150

提交評(píng)論