版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì)--雙機(jī)并行通訊問(wèn)題
- 微機(jī)原理課程設(shè)計(jì)--中斷實(shí)現(xiàn)雙機(jī)通訊程序
- 《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)--雙機(jī)串行通訊程序設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)報(bào)告-雙機(jī)串行通信
- 雙機(jī)通訊課程設(shè)計(jì)報(bào)告--雙機(jī)通信的設(shè)計(jì)
- 雙機(jī)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)-計(jì)算機(jī)微機(jī)原理課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)
- 接口技術(shù)課程設(shè)計(jì)-雙機(jī)串行通訊
- 單片機(jī)課程設(shè)計(jì)報(bào)告--雙機(jī)串行通訊
- 微機(jī)原理課程設(shè)計(jì)報(bào)告
- 微機(jī)原理課程設(shè)計(jì).rar
- 微機(jī)原理課程設(shè)計(jì)報(bào)告
- 2017微機(jī)原理課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì).rar
- 微機(jī)原理課程設(shè)計(jì).rar
- 微機(jī)原理課程設(shè)計(jì).rar
- 微機(jī)原理課程設(shè)計(jì)報(bào)告
- 《微機(jī)原理》課程設(shè)計(jì)報(bào)告
- 微機(jī)原理課程設(shè)計(jì)報(bào)告
- 通訊系統(tǒng)原理課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論