微機原理實驗指導書_第1頁
微機原理實驗指導書_第2頁
微機原理實驗指導書_第3頁
微機原理實驗指導書_第4頁
微機原理實驗指導書_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

/微機原理實驗指導書(版本0。1)余有靈副教授控制科學與工程系2007年11月13日

說明本實驗指導書是依據西安唐都科教儀器公司的產品手冊編制,在實驗中心相關領導和實驗工作人員的幫助下完成的,在此表示感謝.

本次實驗包括四個實驗系統(tǒng)。任意完成其中兩個即可。實驗3—1基本I/O接口電路設計實驗實驗目的掌握基本I/O接口電路的設計方法.熟練匯編語言I/O端口操作指令的使用。實驗設備PC微機一臺、TD—PIT+實驗系統(tǒng)一套。實驗內容利用三態(tài)緩沖器74LS245、鎖存器74LS374設計微機總線和外部設備的數據通道,實現微機對外部輸入數據的讀取和對輸出數據的輸出。用開關及LED顯示單元的開關和數據燈作為輸入和輸出顯示設備,將讀到開關的數據顯示在數據燈上。實驗原理輸入接口設計輸入接口一般用三態(tài)緩沖器實現,外部設備輸入數據通過三態(tài)緩沖器,通過數據總線傳送給微機系統(tǒng).74LS245是一種8通道雙向的三態(tài)緩沖器,其管腳結構如圖1所示.DIR引腳控制緩沖器數據方向,DIR為1表示數據由A[7:0]至B[7:0],DIR為0表示數據由B[7:0]至A[7:0]。G引腳為緩沖器的片選信號,低電平有效.圖174LS245雙向三態(tài)緩沖器管腳圖輸出接口設計輸出接口一般用鎖存器實現,從總線送出的數據可以暫存在鎖存器中。74LS374是一種8通道上沿觸發(fā)鎖存器。其管腳結構如圖2所示。D[7:0]為輸入數據線,Q[7:0]為輸出數據線。CLK引腳為鎖存控制信號,上升沿有效。當上升沿到時,輸出數據線鎖存輸入數據線上的數據。OE引腳為鎖存器的片選信號,低電平有效。圖274LS374上沿觸發(fā)鎖存器管腳圖輸入輸出接口設計用74LS245和74LS374可以組成一個輸入輸出接口電路,既實現數據的輸入又實現數據的輸出,輸入輸出可以占用同一個端口。是輸入還是輸出用總線讀寫信號來區(qū)分。總線讀信號IOR和片選信號CS相“或”來控制輸入接口74LS245的使能信號G.總線寫信號IOW和片選信號CS相“或”來控制輸出接口74LS374的鎖存信號CLK。實驗系統(tǒng)中基本輸入輸出單元就實現了兩組這種的電路,任意A組的電路連接如圖3所示。圖3用74LS245和74LS374組成的輸入輸出接口電路實驗說明及步驟本實驗實現的是將開關K[7:0]的數據通過輸入數據通道讀入CPU的寄存器,然后再通過輸出數據通道將該數據輸出到數據燈顯示,該程序循環(huán)運行,直到按動鍵盤上任意按鍵再退出程序。實驗程序流程如圖4所示。參考實驗接線如圖5所示。實驗步驟如下。確認從PC機引出的兩根扁平電纜已經連接在實驗平臺上。參考圖5所示連接實驗線路。首先運行CHECK程序,查看并記錄與片選信號對應的I/O端口始地址。參考實驗流程圖編寫程序,注意使用正確的端口地址,然后編譯鏈接。運行程序,撥動開關,觀看數據燈顯示是否正確。圖4基本I/O接口設計實驗參考程序流程圖圖5基本I/O接口設計實驗參考接線圖實驗程序:;8位I/O接口電路設計實驗;***********根據查看端口資源修改下列符號值***************IOY0 ?EQU9C00H;片選IOY0對應的端口始地址;*********************************************************STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATA1SEGMENT?MES?DB'Pressanykeytoexit!’,0AH,0DH,0AH,0DH,'$'DATA1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA1START:?MOV?AX,DATA1?MOV?DS,AX?MOV DX,OFFSETMES;顯示退出提示 ?MOV?AH,09H????INT 21H ?A1:?MOV?DX,IOY0;讀寫基本I/O單元低8位的端口?IN??AL,DX OUT DX,AL MOV AH,1;判斷是否有按鍵按下?INT16H JZA1;無按鍵則跳回繼續(xù)循環(huán),有則退出QUIT: MOVAX,4C00H;結束程序退出 INT21HCODE?ENDS ENDSTART?實驗3-2地址譯碼電路設計實驗實驗目的學習3-8譯碼器在接口電路中的應用。掌握地址譯碼電路的一般設計方法。實驗設備PC微機一臺、TD—PIT+實驗系統(tǒng)一套。實驗內容用74LS138譯碼器設計地址譯碼電路,并用其輸出作為基本輸入輸出單元的片選信號,使用設計的端口地址編寫程序,實現數據的輸入輸出。實驗原理微機接口電路中,常采用74LS138譯碼器來實現I/O端口或存儲器的地址譯碼.74LS138有3個輸入引腳、3個控制引腳及8個輸出引腳,其管腳信號如圖6所示。當3個控制信號有效時,相應于輸入信號A、B、C狀態(tài)的那個輸出端為低電平,該信號即可作為片選信號.圖674LS138譯碼器管腳32位擴展系統(tǒng)總線上有一個IOM/信號,該信號為低電平時指示當前操作為I/O操作,為高電平指示當前操作為存儲器操作,它和譯碼器不同的連接可以用來區(qū)分是I/O端口譯碼還是存儲器端口譯碼。32位總線地址是由A2開始,所以地址是以4字節(jié)邊界對齊的.實驗系統(tǒng)的I/O地址空間共有256字節(jié),偏移地址一般從00H~FFH。起始地址由PC機系統(tǒng)分配,可以用CHECK程序讀出。所以設計地址譯碼電路,主要是針對低8位地址線譯碼,得到偏移在00H~FFH之間的端口。本實驗要求不使用總線上的片選信號,自行設計端口偏移地址分別為C0H~DFH和E0H~FFH的譯碼電路,然后用譯碼輸出作為基本輸入輸出單元的片選。編寫程序,完成I/O數據操作。實驗參考線路如圖3—2—2所示。圖7地址譯碼設計實驗參考接線圖實驗步驟確認從PC機引出的兩根扁平電纜已經連接在實驗平臺上。按圖7所示連接實驗線路。首先運行CHECK程序,查看I/O端口始地址。利用設計好的端口地址編寫程序,然后編譯鏈接。運行程序,撥動開關,觀看數據燈顯示是否正確.實驗程序:;地址譯碼電路設計實驗;**********根據查看端口資源修改下列符號值*******************IOY0??EQU9C00H ?;片選IOY0對應的端口始地址;***********************************************************Y7? EQUIOY0+0E0H??;譯碼電路輸出Y7對應的端口地址STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATA1SEGMENT MESDB'Pressanykeytoexit!’,0AH,0DH,0AH,0DH,'$'DATA1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA1START:?MOV?AX,DATA1?MOV DS,AX MOV?DX,OFFSETMES;顯示退出提示??MOV AH,09H ???INT 21H A1: MOV?DX,Y7;讀寫片選接Y7的端口?IN ?AL,DX OUT DX,AL?MOV AH,1;判斷是否有按鍵按下?INT?16H JZ A1;無按鍵則跳回繼續(xù)循環(huán),有則退出QUIT:?MOV AX,4C00H;結束程序退出 INT?21HCODE?ENDS?ENDSTART?實驗3—3存儲器擴展實驗實驗目的學習靜態(tài)存儲器操作原理.學習32位總線存儲器接口電路設計。掌握不同總線字節(jié)寬度訪問存儲器的編程方法。實驗設備PC微機一臺、TD—PIT+實驗系統(tǒng)一套.實驗內容在32位擴展系統(tǒng)總線上分別進行32位存儲器擴展和8位存儲器擴展連接。編寫程序,將PC機內存中的一段數據傳送至擴展的存儲器中.并進行規(guī)則和不規(guī)則雙字讀寫操作以及不同的總線字節(jié)訪問寬度指令操作,調試程序并分析時序的區(qū)別。實驗原理SRAM62256介紹存儲器是用來存儲信息的部件,是計算機的重要組成部分,靜態(tài)RAM是由MOS管組成的觸發(fā)器電路,每個觸發(fā)器可以存放1位信息.只要不掉電,所儲存的信息就不會丟失。因此,靜態(tài)RAM工作穩(wěn)定,不要外加刷新電路,使用方便.但一般SRAM的每一個觸發(fā)器是由6個晶體管組成,SRAM芯片的集成度不會太高,目前較常用的有6116(2K×8位),6264(8K×8位)和62256(32K×8位).62256SRAM有32768個存儲單元,每個單元為8位字長。62256的引腳如圖8所示,WE、OE、CE的共同作用決定了芯片的運行方式.圖862256引腳圖32位總線的存儲器接口32位擴展系統(tǒng)總線提供XA2~XA23、BE0~BE3信號為存儲器提供物理地址。XA2~XA23用來確定一個4字節(jié)的存儲單元,BE0~BE3用來確定當前操作中所涉及到4字節(jié)存儲單元中的那個字節(jié).BE0對應D[7:0],BE1對應D[15:8],BE2對應D[23:16],BE3對應D[31:24].其對應關系如表1所示.表1BE[3:0]指示和數據總線有效對照表在SRAM實驗單元中,使用了4片62256SRAM構成4×8bits的32位存儲器,存儲體分為0體、1體、2體和3體,分別為字節(jié)使能線BE0、BE1、BE2和BE3選通。其電路結構如圖9所示.圖932位存儲器單元電路結構圖32位存儲器操作在存儲器中,從4的整數倍地址開始存放的雙字稱為規(guī)則雙字.從4的非整數倍地址開始存放的雙字稱為非規(guī)則雙字.CPU訪問規(guī)則雙字只需要一個總線周期,BE0、BE1、BE2和BE3同時有效,從而同時選通0、1、2和3四個存儲體。例如: MOV[0000],EAX MOV[0004],EAX兩次規(guī)則雙字操作對應的時序如圖10所示.圖1032位存儲器規(guī)則雙字操作時序圖CPU訪問非規(guī)則雙字需要兩個總線周期.通過BE0、BE1、BE2和BE3在兩個周期中選通不同的字節(jié).例如從4的整數倍地址加1的單元開始訪問,第一個總線周期BE1、BE2和BE3有效,訪問3個字節(jié);第二個總線周期地址遞增,BE0有效,訪問剩余的一個字節(jié)。然后自動將4個字節(jié)組合為一個雙字。例如:?MOV[0001],EAX??? MOV[0005],EAX兩次非規(guī)則雙字操作對應的時序如圖11所示。圖1132位存儲器非規(guī)則雙字操作時序圖8位存儲器操作在32位總線上可以進行8位存儲器的操作,允許CPU用字節(jié)指令進行訪問.這樣的操作相當于32位總線上其它3個字節(jié)不訪問。如圖9中只對0體存儲器(62256—0)進行操作,其它3個存儲器的數據線不連接,字節(jié)使能始終是BE0有效,4字節(jié)空間只訪問最低的1個字節(jié)。實驗說明及步驟實驗系統(tǒng)的存儲器空間共有16MB,偏移為000000H~FFFFFFH。起始地址由PC機系統(tǒng)分配,可以用CHECK程序讀出。分配的存儲器空間遠大于1MB,在實地址模式下無法操作,需要在CPU的保護模式下操作.實驗程序要按照保護模式程序結構編寫,在集成環(huán)境里的保護模式調試平臺上運行。程序流程如圖12所示(a圖表示32位存儲器操作,b圖表示8位存儲器操作)。實驗接線如圖13和圖14所示。(a)32位存儲器操作(b)8位存儲器操作圖12存儲器擴展實驗參考程序流程圖圖1332位存儲器擴展實驗參考接線圖圖148位存儲器擴展實驗參考接線圖實驗步驟確認從PC機引出的兩根扁平電纜已經連接在實驗平臺上。按圖13或圖14所示連接實驗線路。首先運行CHECK程序,查看存儲器空間始地址。利用查出的地址編寫32位及8位存儲器操作的程序,然后編譯鏈接。在保護模式調試環(huán)境(Tddebug的PmRun)下運行程序,查看數據操作是否正確。將程序改為非規(guī)則雙字寫入操作,調試程序,查看在數據區(qū)讀出的存儲器數據,分析寫入雙字的排列規(guī)則以及總線操作時序的原理。程序代碼;32位存儲器擴展實驗(32位寬度訪問).386P;*********根據CHECK配置信息修改下列符號值**************MY0_H?EQU0D9H? ?;片選MY0起始地址的最高位字節(jié)MY0_M EQU00H ??;片選MY0起始地址的次高位字節(jié)MY0_L EQU0000H ;片選MY0起始地址的低兩位字節(jié);******************************************************ATDW ?EQU92h;存在的可讀寫數據段屬性值ATCE EQU98h;存在的只執(zhí)行代碼段屬性值Desc STRUCLimitL DW??0000H;段界限(BIT0—15)BaseL?? DW 0000H;段基地址(BIT0-15)BaseM? DB???00H;段基地址(BIT16-23)Attributes? DB???00H;段屬性LimitH ? DB ??00H;段界限(BIT16-19)(含段屬性的高4位)BaseH DB? 00H;段基地址(BIT24—31)Desc?ENDS?DSEG? SEGMENT?USE16GDT LABELBYTEID1 DESC?〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉SCODE?DESC?〈0FFFFH,CSEG,,ATCE,,〉DATAS?DESC 〈D1LEN,DSEG1,,ATDW,,〉 ;源數據段描述符DATAD?DESC 〈2000H,MY0_L,MY0_M,ATDW,,MY0_H〉;目的數據段描述符GDTLEN =$—GDTSCODE_SEL =SCODE—GDTDATAS_SEL =DATAS-GDTDATAD_SEL?=DATAD-GDTID2? DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>ID3 ?DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉DSEG??ENDS?DSEG1 ?SEGMENTUSE16TDATA DD? 11111111H,22222222H,33333333H,44444444H;定義原數據段數據DD? 55555555H,66666666H,77777777H,88888888HDD??11111111H,22222222H,33333333H,44444444H;定義原數據段數據DD 55555555H,66666666H,77777777H,88888888HDD 11111111H,22222222H,33333333H,44444444H;定義原數據段數據DD??55555555H,66666666H,77777777H,88888888HD1LEN=$-1DSEG1 ENDSCSEG?SEGMENTUSE16???ASSUMECS:CSEGSTART?PROC MOV AX,DATAS_SEL;裝入數據段地址? MOV?DS,AX? ?MOV?AX,DATAD_SEL???MOV?ES,AX ?XOR SI,SI XOR?DI,DI ?;ADD?DI,1 MOV?CX,18HLOOP1:?MOV EAX,DS:[SI];將源數據段數據傳輸到目的數據段 MOV?ES:[DI],EAX? ADD SI,4? ADD?DI,4 LOOP?LOOP1INT0FFHSTART ENDPCLEN =$—1CSEG ENDS?ENDSTART

;8位存儲器擴展實驗(8位寬度訪問)。386P;***********根據CHECK配置信息修改下列符號值*******************MY0_H EQU0D9H;片選MY0起始地址的最高位字節(jié)MY0_M EQU00H;片選MY0起始地址的次高位字節(jié)MY0_L?EQU0000H;片選MY0起始地址的低兩位字節(jié);*************************************************************ATDW??EQU92h;存在的可讀寫數據段屬性值ATCE EQU98h;存在的只執(zhí)行代碼段屬性值Desc STRUCLimitL ?DW0000H;段界限(BIT0-15)BaseL?DW0000H;段基地址(BIT0-15)BaseM ?DB00H;段基地址(BIT16—23)Attributes?DB00H;段屬性LimitH? DB00H;段界限(BIT16—19)(含段屬性的高4位)BaseH? DB00H;段基地址(BIT24—31)Desc?ENDS??DSEG SEGMENT?USE16GDT LABELBYTEID1??DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>SCODE?DESC〈0FFFFH,CSEG,,ATCE,,>DATAS?DESC<D1LEN,DSEG1,,ATDW,,〉?;源數據段描述符DATAD?DESC〈2000H,MY0_L,MY0_M,ATDW,,MY0_H〉;目的數據段描述符GDTLEN =$—GDTSCODE_SEL =SCODE—GDTDATAS_SEL =DATAS—GDTDATAD_SEL?=DATAD-GDTID2? DESC〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉ID3? DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉DSEG ENDS?DSEG1SEGMENTUSE16TDATA DB? 00H,11H,22H,33H,44H,55H,66H,77H;定義源數據段數據DB88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFHDB00H,11H,22H,33H,44H,55H,66H,77H;定義源數據段數據DB88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFHDB00H,11H,22H,33H,44H,55H,66H,77H;定義源數據段數據DB88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFHD1LEN=$-1DSEG1 ENDSCSEG? SEGMENTUSE16? ?ASSUMECS:CSEGSTART PROC ? MOV AX,DATAS_SEL;裝入數據段 ??MOV?DS,AX???MOV AX,DATAD_SEL ??MOV?ES,AX XOR?SI,SI XOR DI,DI MOV?CX,30HLOOP1: MOV?AL,DS:[SI];將源數據段數據傳輸到目的數據段 MOV?ES:[DI],AL?ADD SI,1?ADD?DI,4 LOOP?LOOP1?INT?0FFHSTART?ENDPCLEN ?=$-1CSEG?ENDSENDSTART?實驗3-4FLASH存儲器擴展實驗實驗目的學習FLASH存儲器操作原理。了解AT29C010FLASHROM的編程特性。實驗設備PC微機一臺、TD-PIT+實驗系統(tǒng)一套。實驗內容編寫程序對FLASHROM單元的AT29C010進行數據傳輸操作,將PC機內存中一段數據寫入到FLASHROM中.并利用FLASHROM的擦除和寫保護命令對存儲器進行擦除和寫保護.實驗原理FLASHROM介紹可編程只讀存儲器FLASH通常也稱“閃爍”存儲器(或簡稱“閃存”),該類型的存儲器具有掉電時信息不丟失、塊擦除、單一供電、高密度信息存儲等特點,主要用于保存系統(tǒng)引導程序和系統(tǒng)參數等需要長期保存的重要信息,現在又廣泛應用于移動存儲設備中。AT29C010是一種5V的在系統(tǒng)可編程可擦除FLASHROM,存儲容量為128K×8bits,其引腳如圖15所示。圖15AT29C010引腳圖AT29C010編程特性FLASHROM的操作與SRAM不同,數據是以數據塊的形式傳輸。AT29C010共有1024個扇區(qū),每扇區(qū)128字節(jié)。當寫存儲器時,連續(xù)的128字節(jié)被內部鎖存器鎖存,然后存儲器進入編程周期,將鎖存器中的128字節(jié)數據依次寫入存儲器扇區(qū)中,在此期間必須等待10ms以上再對下一扇區(qū)操作。寫一個扇區(qū)之前,存儲器會自動擦除該扇區(qū)全部內容,然后再進行編程.AT29C010具有軟件數據保護功能,啟動該功能是通過在編程之前寫入三個連續(xù)的程序命令,如圖16(a)所示。以后每次編程之前都要加上這三個命令,否則數據無法寫入.這樣可以防止意外的存儲器操作,而使數據被刪除。該功能可以通過寫入六個連續(xù)的程序命令取消,如圖16(b)所示。存儲器還提供一個軟件擦除功能,通過寫入六個連續(xù)的程序命令將整個存儲器的內容全部擦除,如圖16(c)所示。(a)寫保護命令(b)取消寫保護命令(c)擦除命令圖16AT29C010軟件編程命令格式實驗說明及步驟本實驗要求編寫程序將緩沖區(qū)內定義的一段數據寫到FLASHROM的一個扇區(qū)中。并且通過帶軟件數據保護和不帶軟件數據保護不同的寫入方法,比較這兩種寫入方法有什么區(qū)別。最后用軟件擦除方法擦除FLASHROM中的內容。程序編寫方法同靜態(tài)存儲器擴展,用CHECK程序讀出存儲器空間始地址。按保護模式程序結構編寫,在集成環(huán)境里的保護模式調試環(huán)境中運行。參考線路連接如圖17所示。圖17FLASH存儲器擴展實驗參考接線圖實驗步驟確認從PC機引出的兩根扁平電纜已經連接在實驗平臺上。參考如圖17所示連接實驗電路.首先運行CHECK程序,查看存儲器空間始地址.利用查出的地址分別編寫帶數據保護寫、去掉數據寫保護、不帶保護寫和軟件擦除程序,然后編譯鏈接。在保護模式調試環(huán)境下先運行帶數據保護寫程序,查看數據是否寫入正確。運行不帶保護寫程序,查看數據是否寫入(應該無法寫入)。運行去掉寫保護程序,再用不帶保護寫程序寫FLASH,查看數據寫入是否正確。運行軟件擦除FLASH程序,查看數據是否都已擦除。通過這幾步的操作,分析FLASH存儲器的操作特性。程序代碼;帶保護寫FLASH實驗.386P;***********根據CHECK配置信息修改下列符號值*******************MY0_H EQU0D9H;片選MY0起始地址的最高位字節(jié)MY0_M?EQU00H;片選MY0起始地址的次高位字節(jié)MY0_L EQU0000H;片選MY0起始地址的低兩位字節(jié);**************************************************************ADD5555 EQU5555H*4;寫命令時用到的地址ADD2AAA?EQU2AAAH*4;寫命令時用到的地址ATDW? EQU92h;存在的可讀寫數據段屬性值ATCE? EQU98h;存在的只執(zhí)行代碼段屬性值DescSTRUCLimitL? DW0000H;段界限(BIT0-15)BaseL DW0000H;段基地址(BIT0-15)BaseM DB00H;段基地址(BIT16—23)Attributes DB00H;段屬性LimitH DB00H;段界限(BIT16-19)(含段屬性的高4位)BaseH??DB00H;段基地址(BIT24-31)DescENDSDSEG?SEGMENTUSE16GDT??LABELBYTEID1 DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>SCODE?DESC<0FFFFH,CSEG,,ATCE,,>DATAS DESC<D1LEN,DSEG1,,ATDW,,>?;源數據段DATAD DESC<0FFFFH,MY0_L,MY0_M,ATDW,01H,MY0_H>;目的數據段描述符GDTLEN =$—GDTSCODE_SEL?=SCODE-GDTDATAS_SEL?=DATAS—GDTDATAD_SEL =DATAD—GDTID2 ?DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>ID3??DESC〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>DSEG ?ENDSDSEG1 SEGMENTUSE16D1LEN ?=$-1DSEG1?ENDSCSEG ?SEGMENTUSE16 ?ASSUMECS:CSEGSTART?PROC ? MOVAX,DATAS_SEL ?MOVDS,AX???MOVAX,DATAD_SEL?MOVES,AXMOVEDI,ADD5555MOVES:[EDI],BYTEPTR0AAHMOVEDI,ADD2AAAMOVES:[EDI],BYTEPTR55HMOVEDI,ADD5555MOVES:[EDI],BYTEPTR0A0HMOVCX,0080HMOVAL,00HMOVDI,0000HLOOP1:MOVES:[DI],ALADDDI,4INCALLOOPLOOP1INT0FFhSTART?ENDPCLEN? =$—1CSEG? ENDSEND ?START

;去除FLASH寫保護實驗。386P;*********根據CHECK配置信息修改下列符號值*******************MY0_H?EQU0D9H;片選MY0起始地址的最高位字節(jié)MY0_M?EQU00H;片選MY0起始地址的次高位字節(jié)MY0_L?EQU0000H;片選MY0起始地址的低兩位字節(jié);*********************************************************ADD5555 ?EQU5555H*4;寫命令時用到的地址ADD2AAA?EQU2AAAH*4;寫命令時用到的地址ATDW EQU92h;存在的可讀寫數據段屬性值ATCE EQU98h;存在的只執(zhí)行代碼段屬性值Desc STRUCLimitL? DW0000H;段界限(BIT0—15)BaseL DW0000H;段基地址(BIT0—15)BaseM?DB00H;段基地址(BIT16-23)Attributes?DB00H;段屬性LimitH? DB00H;段界限(BIT16—19)(含段屬性的高4位)BaseH?DB00H;段基地址(BIT24-31)Desc ENDSDSEG SEGMENTUSE16GDT??LABELBYTEID1??DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>SCODE??DESC〈0FFFFH,CSEG,,ATCE,,〉DATAS ?DESC〈D1LEN,DSEG1,,ATDW,,> ;源數據段DATAD?DESC<0FFFFH,MY0_L,MY0_M,ATDW,01H,MY0_H>;目的數據段描述符GDTLEN??=$—GDTSCODE_SEL?=SCODE-GDTDATAS_SEL =DATAS-GDTDATAD_SEL?=DATAD—GDTID2 DESC〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>ID3 ?DESC〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>DSEG ENDSDSEG1?SEGMENTUSE16D1LEN ?=$-1DSEG1 ENDSCSEG? SEGMENTUSE16? ASSUMECS:CSEGSTART PROC???MOVAX,DATAD_SEL ?MOVDS,AXMOVESI,ADD5555;將AA送入5555HMOV[ESI],BYTEPTR0AAHMOVESI,ADD2AAA;將55寫入2AAAHMOV[ESI],BYTEPTR55HMOVESI,ADD5555;將80寫入5555HMOV[ESI],BYTEPTR80HMOVESI,ADD5555;將AA寫入5555HMOV[ESI],BYTEPTR0AAHMOVESI,ADD2AAA;將55寫入2AAAHMOV[ESI],BYTEPTR55HMOVESI,ADD5555;將10寫入5555HMOV[ESI],BYTEPTR20HINT0FFhSTARTENDPCLEN ?=$—1CSEG? ENDSEND START;不帶保護寫FLASH實驗。386P;***********根據CHECK配置信息修改下列符號值*******************MY0_H EQU0D9H;片選MY0起始地址的最高位字節(jié)MY0_M?EQU00H;片選MY0起始地址的次高位字節(jié)MY0_L EQU0000H;片選MY0起始地址的低兩位字節(jié);*********************************************************ADD5555 ?EQU5555H*4;寫命令時用到的地址ADD2AAA EQU2AAAH*4;寫命令時用到的地址ATDWEQU92h;存在的可讀寫數據段屬性值ATCEEQU98h;存在的只執(zhí)行代碼段屬性值Desc STRUCLimitL ?DW0000H;段界限(BIT0-15)BaseL DW0000H;段基地址(BIT0—15)BaseM DB00H;段基地址(BIT16—23)Attributes?DB00H;段屬性LimitH? DB00H;段界限(BIT16-19)(含段屬性的高4位)BaseH? DB00H;段基地址(BIT24—31)Desc ENDSDSEG SEGMENTUSE16GDT? LABELBYTEID1? DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>SCODE DESC〈0FFFFH,CSEG,,ATCE,,>DATAS DESC<D1LEN,DSEG1,,ATDW,,>?;源數據段DATAD DESC<0FFFFH,MY0_L,MY0_M,ATDW,01H,MY0_H〉;目的數據段描述符GDTLEN ?=$—GDTSCODE_SEL?=SCODE-GDTDATAS_SEL?=DATAS—GDTDATAD_SEL =DATAD-GDTID2 ?DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>ID3??DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉DSEG ENDSDSEG1 SEGMENTUSE16D1LEN?=$-1DSEG1?ENDSCSEG ?SEGMENTUSE16 ??ASSUMECS:CSEGSTART PROC ? MOV?AX,DATAS_SEL ??MOV?DS,AX???MOV AX,DATAD_SEL ? MOV?ES,AX MOVCX,0080H MOVAL,7FH? MOV?DI,0000HLOOP1:MOVES:[DI],ALADDDI,4DEC

溫馨提示

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

評論

0/150

提交評論