版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
..西安郵電大學〔計算機學院微機原理與接口技術(shù)實驗報告實驗名稱:尋址方式與基本指令實驗專業(yè)名稱:班級:學生__學號:指導實驗日期:2017年10月31日尋址方式與基本指令實驗1、實驗?zāi)康?.1、熟悉80x86尋址方式及基本指令的功能,進一步理解和鞏固課堂學習內(nèi)容。1.2、掌握匯編語言程序設(shè)計上機過程,掌握匯編語言源程序結(jié)構(gòu),為后續(xù)匯編語言程序設(shè)計打好基礎(chǔ)。1.3、熟悉Microsoft的DEBUG或Borland的TurboDEBUG調(diào)試工具的使用方法2、實驗預(yù)習要求2.1、認真閱讀本書第一部分第1章,熟悉匯編語言程序設(shè)計上機步驟。2.2、認真閱讀本書第三部分,熟悉DEBUG調(diào)試工具的使用方法。2.3、復(fù)習80x86操作數(shù)尋址方式及基本指令〔數(shù)據(jù)傳送、算術(shù)運算和邏輯運算等。2.4、了解實驗內(nèi)容,并在實驗前根據(jù)課堂所學知識回答有關(guān)問題〔個別取決于程序?qū)嶋H運行環(huán)境的問題除外,以便在實驗時進行驗證。3、實驗內(nèi)容3.1、讀懂下列源程序,使用EDIT生成名為EX11.ASM的源程序,匯編生成EX11.OBJ文件和EX11.LST文件,連接生成EX11.EXE文件;用EDIT打開EX11.LST文件,了解.LST文件包含的信息;使用DEBUG調(diào)試工具單步執(zhí)行EX11.EXE程序,注意觀察IP值的變化,并回答下列問題。程序裝入后,代碼段寄存器CS的內(nèi)容為____0913__H,代碼段第一條可執(zhí)行指令MOV AX,DATA對應(yīng)的機器代碼為__B81209__H,它是一個__3__字節(jié)指令,注意觀察執(zhí)行該指令時IP值的變化情況,該指令源操作數(shù)DATA的尋址方式是__立即數(shù)尋址__,其值為__0912H__。執(zhí)行完MOV DS,DATA指令后,數(shù)據(jù)段寄存器DS的內(nèi)容為_0912__H,源程序在數(shù)據(jù)段中定義的數(shù)據(jù)82H、68H和88H被裝入的存儲單元的物理地址分別為_09120_H、_09121__H和__09122__H。程序中第一條ADDAL,[BX]指令對應(yīng)的機器代碼為___0207__H,它是一個___2__字節(jié)指令,注意觀察執(zhí)行該指令時IP值的變化情況;該指令中源操作數(shù)的尋址方式為___寄存器間接尋址___,該操作數(shù)所在存儲單元的邏輯地址<DS>:<BX>為_0912:0001___,其物理地址為__09121___H;執(zhí)行完該指令后<AL>=___EA___H,CF=___0__,OF_=__0_,ZF=__0__,SF=1,AF=0,PF=0;若兩操作數(shù)為無符號數(shù),計算結(jié)果是否正確__是__?若兩操作數(shù)為帶符號數(shù),計算結(jié)果是否正確__是__?若計算結(jié)果正確,結(jié)果是正數(shù)還是負數(shù)___負___?執(zhí)行完第二條ADDAL,[BX]指令后<AL>=__72__H,CF=__1__,OF=__1_,ZF=_0___,SF=_0__,AF=_1__,PF=_1__;若兩操作數(shù)為無符號數(shù),計算結(jié)果是否正確__否___?若兩操作數(shù)為帶符號數(shù),計算結(jié)果是否正確___否_____?3.2、指令MOVSUM,AL中目的操作數(shù)的尋址方式為___寄存器尋址____。該指令執(zhí)行完后,注意觀察<DS>:0003H單元中值的變化,該單元的值變?yōu)開72__H。DATA SEGMENT NUM DB82H,68H,88H SUM DB?DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV BX,OFFSETNUM MOV AL,[BX] INC BX ADD AL,[BX] INC BX ADD AL,[BX] MOV SUM,AL MOV AH,4CH INT 21HCODE ENDS ENDSTART〔2讀懂下列源程序,編輯、匯編、連接生成EX12.ASM、EX12.OBJ、EX12.LST、EX12.EXE文件使用DEBUG單步調(diào)試EX12.EXE文件,并回答一下問題。①代碼的前三段指令"MOVAX,STACK"、"MOVSS,AX"和"MOVSP,LENGTHSTL"的功能為堆棧初始化,試問執(zhí)行完這三條指令后,堆棧棧底所在單元的邏輯地址〔SS:<SP>為0912:0100;執(zhí)行"PUSHAX"指令后,堆棧指針寄存器<SP>=00FEH,此時〔SS:<SP+1>和〔SS:<SP>單元的值為0AH和5BH;執(zhí)行完"PUSHBX"后,<SP>=00FCH;此時〔SS:<SP+1>和〔SS:<SP>單元的值為4CH和A3H;執(zhí)行完"POPAX"后,<SP>=00FEH;執(zhí)行完"POPBX"后,<SP>=0100H,此時〔AX=4CA3H,〔BX=5B0AH。請讀者通過對堆棧操作指令執(zhí)行情況的觀察,進一步掌握進、出棧操作過程。②執(zhí)行"ADDAX,BX"指令后,〔AX=A7ADH,CF=0,OF=1,ZF=0,SF=1,AF=0,PF=0,〔注意考慮PF值與計算結(jié)果高8位有無關(guān)系;若兩操作數(shù)為無符號數(shù),計算結(jié)果是否正確正確?若兩操作數(shù)為帶符號數(shù),計算結(jié)果是否正確不正確?③執(zhí)行"ANDAX,BX"指令后,〔AX=4802H,CF=0,OF=0,ZF=0,SF=0,AF=0,PF=0.STACK SEGMENT stack STL DW100HDUP<?>STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: MOV AX,STACK MOV SS,AX MOV SP,LENGTHSTL;表達式"LENGTHSTL"的功能為計算STL中定義的變量的個數(shù);匯編后其值為100H PUSH AX PUSH BX ADD AX,BX POP AX POP BX AND AX,BX MOV AH,4CH INT 21HCODEENDSEND START<3>指出下列指令的錯誤原因,上機運行,觀察匯編程序〔MASM.EXE給出的出錯信息,改正后上機驗證。①MOVBP,BL②MOV[BX],[BP]③MOV[BX],20H④INC[SI]⑤ADDAX,[SI+DI]⑥SHLAX,3⑦PUSH2000H⑧POPAL⑨MOVCS,AX⑩MOVDS,1000H答:①出錯信息:warningA4031:Operandtypesmustmatch錯誤原因:操作數(shù)類型不匹配,BP是一個16位寄存器,而BL是一個8位寄存器。改正后:MOVBP,BX;②出錯信息:errorA2052:Improperoperandtype錯誤原因:源操作數(shù)和目的操作數(shù)不能同時為存儲器。改正后:MOVAX,[BP]MOV[BX],AX;③出錯信息:error:A2035:Operandmusthavesize錯誤原因:源操作數(shù)長度不明確④出錯信息:error:A2035:Operandmusthavesize錯誤原因:操作數(shù)的長度未指定⑤出錯信息:error:A2047:Multipleindexregisters錯誤原因:同時使用了多個變址寄存器⑥出錯信息:errorA2052:Improperoperandtype錯誤原因:循環(huán)次數(shù)大于1應(yīng)該間接移位⑦出錯信息:errorA2056:Immediatemodeillegal錯誤原因:不能對立即數(shù)進行棧操作⑧出錯信息:errorA2058:Byteregisterillegal錯誤原因:要求用字寄存器而使用了字節(jié)寄存器⑨出錯信息:errorA2059:IllegaluseofCSregister錯誤原因:CS不能作為目的操作數(shù)⑩出錯信息:errorA2056:Immediatemodeillegal錯誤原因:立即數(shù)不能送入數(shù)據(jù)段4、實驗總結(jié)這是第一次上機實驗,并不知道具體怎樣做,通過老師講的知識和操作,理解和鞏固了課堂學習內(nèi)容,基本掌握了匯編語言程序設(shè)計上機過程和匯編語言源程序結(jié)構(gòu),為以后匯編語言程序設(shè)計打好基礎(chǔ)。初步掌握了調(diào)試工具的使用方法。西安郵電大學〔計算機學院微機原理與接口技術(shù)實驗報告實驗名稱:字符及字符串輸入輸出與順序程序設(shè)計專業(yè)名稱:班級:學生__學號:指導實驗日期:2017年11月14日字符及字符串輸入輸出與順序程序設(shè)計1、實驗?zāi)康?.1、學習和掌握字符及字符串的輸入輸出方法。1.2、掌握順序程序設(shè)計方法。1.3、進一步掌握調(diào)試工具的使用方法。2、實驗內(nèi)容從鍵盤輸入兩個一位十進制數(shù),計算這兩個數(shù)之和,并將結(jié)果在屏幕上顯示出來。2.1、問題分析比如使用功能號為01H的用于實現(xiàn)單個字符輸入的DOS功能調(diào)用接收從鍵盤輸入的兩個十進制數(shù)8和6,這時計算機內(nèi)部得到的是這兩個數(shù)的ASCII碼值38H和36H。由于數(shù)字09的ASCII碼值與其代表的數(shù)值之間相差30H,因此將其減去30H即可得到以非壓縮型BCD數(shù)形式表示的十進制數(shù)08H和06H,使用ADD指令對它們進行相加后結(jié)果為0EH〔00001110B,顯然需要用非壓縮型BCD數(shù)加法調(diào)整指令對ADD的運算結(jié)果進行調(diào)整,調(diào)整后得到兩個非壓縮型BCD數(shù)01H和04H,將它們分別加上30H后變?yōu)槠鋵?yīng)的ASCII碼31H〔1的ASCII碼和34H〔4的ASCII碼,然后調(diào)用功能號為02H用于單個字符輸出的DOS功能調(diào)用將它們顯示出來。綜上所述,需要考慮以下問題?!?從鍵盤輸入一個一位十進制數(shù)的方法通過功能號為1的DOS功能調(diào)用實現(xiàn)從鍵盤輸入一個字符,格式如下:MOVAH,01HINT21H;此時程序等待用戶鍵入,鍵入字符的ASCII碼值存在AL中SUBAL,30H;減去30H后得到鍵入數(shù)字所代表的數(shù)值〔2提示信息字符串的顯示通過功能號為9的DOS功能調(diào)用實現(xiàn)字符串顯示,注意字符串的最后一個字符必需為‘$’。指令格式如下:MOVDX,OFFSETINFOR1;INFOR1為在數(shù)據(jù)段中定義的要顯示的字符串MOVAH,09HINT21H〔3非壓縮型BCD數(shù)加法調(diào)整指令的使用設(shè)從鍵盤輸入的數(shù)值已存放在寄存器AL,BL中,可用下列程序完成數(shù)據(jù)相加和調(diào)整操作:XORAH,AHADDAL,BLAAA;執(zhí)行該指令后,AH中為和的十位上的數(shù)字,AL中為個位上的數(shù)字請讀者考慮,為什么要使用指令"XORAH,AH",不用行否?〔4計算結(jié)果的顯示執(zhí)行完AAA指令后,只需分別將AH〔十位上的數(shù)值和AL〔個位上的數(shù)值加上30H,并依次調(diào)用功能號為2的DOS功能調(diào)用來顯示字符。2.2、原程序框架DATASEGMENTINFOR1DB"PLEASEINPUTTHEFIRSTDATA<<10>:$"INFOR2DB0AH,0DH,"PLEASEINPUTTHESECONDDATA<<10>:$"INFOR3DB0AH,0DH,"THERESULTIS:$";0DH和0AH分別為非顯示字符回車和換行的ASCII碼值,;美元符號"$"為字符串結(jié)束標志,不能省略。DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA顯示提示信息INFOR1并從鍵盤接收一個字符的指令序列MOVDS,AX顯示提示信息INFOR1并從鍵盤接收一個字符的指令序列SUBAL,30H顯示提示信息INFOR2并從鍵盤接收一個字符的指令序列MOVBL,AL顯示提示信息INFOR2并從鍵盤接收一個字符的指令序列求和并調(diào)整指令序列SUBAL,30H求和并調(diào)整指令序列顯示提示信息INFOR3的指令序列PUSHAX顯示提示信息INFOR3的指令序列POPAX顯示十位及個位上數(shù)字的指令序列顯示十位及個位上數(shù)字的指令序列PUSHAXMOVAH,4CHINT21HCODEENDSENDSTART2.3、程序調(diào)試源程序編寫完成后,先靜態(tài)檢查,無誤后,對源程序進行匯編和連接,生成可執(zhí)行文件。在DOS命令提示符下運行該程序,分析運行結(jié)果是否正確。若結(jié)果不正確,使用DEBUG對其進行調(diào)試。2.4、源代碼1、源程序框架補全源代碼ASSUMECS:CODE,DS:DATADATA SEGMENT INFOR1 DB"PLEASEINPUTTHEFIRSTDATA<<10>:$" INFOR2 DB0AH,0DH,"PLEASEINPUTTHESECONDDATA<<10>:$" INFOR3 DB0AH,0DH,"THERESULTIS:$"DATA ENDSCODE SEGMENTSTART: MOV AX,DATA MOVDS,AX LEADX,INFOR1 ;獲取第一個數(shù) MOVAH,09H INT21H MOVAH,01H INT21H SUBAL,30H MOVBL,AL LEADX,INFOR2 ;獲取第二個數(shù) MOVAH,09H INT21H MOVAH,01H INT21H SUBAL,30H MOVAH,0 ;計算結(jié)果 ADDAL,BL AAA PUSHAX ;顯示結(jié)果 LEADX,INFOR3 MOVAH,09H INT21H POPAX PUSHAX MOVDL,AH OR DL,30H MOVAH,02H INT21H POPAX MOVDL,AL ORDL,30H MOVAH,02H INT21H MOVAH,4CH ;返回DOS INT21HCODE ENDS END START選做題:從鍵盤輸入兩個一位十進制數(shù),計算這兩個數(shù)之積,并將結(jié)果在屏幕上顯示出來。ASSUMECS:CODE,DS:DATADATA SEGMENT INFOR1 DB"PLEASEINPUTTHEFIRSTDATA<<10>:$" INFOR2 DB0AH,0DH,"PLEASEINPUTTHESECONDDATA<<10>:$" INFOR3 DB0AH,0DH,"THERESULTIS:$"DATA ENDSCODE SEGMENTSTART: MOV AX,DATA MOVDS,AX LEADX,INFOR1 ;獲取第一個數(shù) MOVAH,09H INT21H MOVAH,01H INT21H SUBAL,30H MOVBL,AL LEADX,INFOR2 ;獲取第二個數(shù) MOVAH,09H INT21H MOVAH,01H INT21H SUBAL,30H MOVAH,0 ;計算結(jié)果 MULBL AAM PUSHAX ;顯示結(jié)果 LEADX,INFOR3 MOVAH,09H INT21H POPAX PUSHAX MOVDL,AH OR DL,30H MOVAH,02H INT21H POPAX MOVDL,AL ORDL,30H MOVAH,02H INT21H MOVAH,4CH ;返回DOS INT21HCODE ENDS END START設(shè)A,B,C,D為四個壓縮型BCD數(shù),它們被存放在內(nèi)存DBCD開始的4個存儲單元中,計算A+B+C+D,并將結(jié)果在屏幕上顯示出來〔注意壓縮型BCD數(shù)的表示方法:十進制數(shù)38表示成壓縮型BCD數(shù)時應(yīng)寫成38H。程序編寫完成并運行正確后,打開源程序,改變A,B,C,D的內(nèi)容,然后重新進行匯編、連接并運行程序,檢查程序運行結(jié)果與手工計算結(jié)果是否相符。下面給出幾組實驗用數(shù)據(jù):<1>A=11,B=23,C=25,D=31<2>A=10,B=20,C=30,D=40<3>A=45,B=45,C=45,C=45<4>A=88,B=99,C=77,D=66〔注意壓縮型BCD數(shù)的表示方法:十進制數(shù)38表示成壓縮型BCD數(shù)時應(yīng)寫成38H2、從鍵盤輸入兩個一位十進制數(shù),計算這兩個數(shù)之積,并將結(jié)果在屏幕上顯示出來。3、從鍵盤輸入0—9中任意一個自然數(shù),將其平方值在屏幕上顯示〔使用查表法實現(xiàn)。3、實驗結(jié)果兩個一位十進制數(shù)之和程序運行結(jié)果2、求兩個一位十進制數(shù)的積1> 部分反匯編結(jié)果輸入第一個數(shù)8后,AL=38H輸入第二個數(shù)6后,AL=36H乘法指令執(zhí)行后,AL=30H乘法調(diào)整后,AX=04086*8=48,與實際計算結(jié)果一致最終結(jié)果圖3、實驗總結(jié)通過本次實驗,我學習并掌握了字符及字符串的輸入輸出以及順序相關(guān)知識。雖然中途錯誤百出,但最終還是完成了任務(wù)要求。語言還是需要不斷練習才能掌握的東西,實踐比理論更為重要。對于匯編語言程序的基本結(jié)構(gòu)我已經(jīng)有了更深的理解。西安郵電大學〔計算機學院微機原理與接口技術(shù)實驗報告實驗名稱:宏指令及子程序?qū)嶒瀸I(yè)名稱:班級:學生__學號:指導實驗日期:2017年11月21日1、實驗?zāi)康模?.1、掌握分支程序的設(shè)計方法。1.2、掌握宏定義及宏調(diào)用的基本方法。1.3、了解小寫和大寫字母的ASCII碼表示及其轉(zhuǎn)換方法。了解數(shù)字及其它字符在的ASCII碼表示方法。1.4、進一步掌握調(diào)試工具的使用方法2、實驗預(yù)習要求:2.1、復(fù)習比較指令、條件轉(zhuǎn)移指令的用法。2.2、復(fù)習宏定義及宏調(diào)用的基本方法。2.3、根據(jù)"2.3.3實驗內(nèi)容"中給出的流程圖和程序框架編寫源程序,以便上機調(diào)試。2.4、程序框架中顯示提示信息的指令序列用宏調(diào)用實現(xiàn)。2.5、從"2.3.4實驗習題"中任選一道題目,編寫源程序,以便上機調(diào)試。3、實驗內(nèi)容:問題:從鍵盤輸入一字符,判斷該字符是小寫字母、大寫字母、數(shù)字或其它字符。若輸入為小寫字母,顯示"YouInputaLowercaseLetter!";若輸入為大寫字母,顯示"YouInputaUppercaseLetter!";若輸入為數(shù)字,顯示"YouInputaDigit!";若輸入為其它字符,顯示"YouInputOtherLetter!"。編程指導數(shù)字09的ASCII碼為30H39H;大寫字母的ASCII碼為41H5AH,小寫字母的ASCII碼為61H7AH。本題目將字符分為小寫字母、大寫字母、數(shù)字及其它字符,根據(jù)鍵入字符的ASCII碼值判斷其所屬類型,并顯示相應(yīng)的信息。字符串顯示使用功能號為09H的DOS功能調(diào)用,接收鍵盤輸入的單個字符使用功能號為01H的DOS功能調(diào)用。2.代碼:DATA SEGMENT INFOR1DB0AH,0DH,"PleasePressAnyKeytoinputaletter:$" INFOR2DB0AH,0DH,"YouInputaLowercaseLetter!$" INFOR3DB0AH,0DH,"YouInputaUppercaseLetter!$" INFOR4DB0AH,0DH,"YouInputaDigit!$" INFOR5DB0AH,0DH,"YouInputOtherLetter!$" DATA ENDS CODE SEGMENT ASSUMECS:CODE,DS:DATA START: MOVAX,DATA MOVDS,AXCMPAL,'0' OTHER CMPAL,'9' EDIGIT CMPAL,'A' OTHER CMPAL,'Z' EUPPER CMPAL,'a' OTHER CMPAL,'z' ELOWER JMPPEND LOWER: JMPPEND ;注意執(zhí)行完一個分支后應(yīng)使程序跳出UPPER: JMPPENDDIGIT: JMPPENDOTHER: PEND: MOVAH,4CH INT21H CODE ENDSENDSTART4、實驗總結(jié):通過本次實驗,我熟練掌握了宏定義和宏調(diào)用的使用方法,并鞏固了ASCII碼的表示和轉(zhuǎn)換方法,以及掌握了使用分支程序,運用跳轉(zhuǎn)指令跳轉(zhuǎn)到子程序,在子程序結(jié)束處跳回主程序的方法。收獲很多。西安郵電大學〔計算機學院微機原理與接口技術(shù)實驗報告實驗名稱:課后題:計算1+2+……n=?專業(yè)名稱:班級:學生__學號:指導實驗日期:2017年11月28日1、實驗?zāi)康模?.1、掌握循環(huán)程序的設(shè)計方法。1.2、掌握比較指令、轉(zhuǎn)移指令和循環(huán)指令的使用方法。1.3、進一步掌握調(diào)試工具的使用方法。2、實驗要求:2.1、復(fù)習比較指令、條件轉(zhuǎn)移指令和循環(huán)指令。2.2、復(fù)習循環(huán)程序的結(jié)構(gòu)、循環(huán)控制方法等知識。2.3、讀懂"2.4.3實驗內(nèi)容"中給出的將十進制數(shù)轉(zhuǎn)換為二進制數(shù)以及將二進制數(shù)轉(zhuǎn)換為十進制數(shù)的程序。2.4、根據(jù)"2.4.3實驗內(nèi)容"中給出的流程圖和程序框架編寫源程序,以便上機調(diào)試。2.5、從"2.4.4實驗習題"中任選一道題目,編寫源程序,以便上機調(diào)試。3、實驗內(nèi)容:計算1+2+……n=?,其中n通過鍵盤輸入。累加和小于216。要求在屏幕上提供如下信息:Pleaseinputanumber<1361>: ;出現(xiàn)此信息后通過鍵盤輸入一個小于362的無符號整數(shù),使累加和小于一個16位無符號二進制數(shù)所能表示的范圍1+2+…..n=sum其中n為用戶輸入的數(shù),sum為所求的累加和。1.編程指導鍵盤輸入的十進制數(shù)如368在計算機中是以33H,36H,38H形式存放的,如何將它們轉(zhuǎn)換為一個二進制數(shù)101110000B,以便對累加循環(huán)的循環(huán)次數(shù)進行控制是本程序首先要解決的問題。代碼:〔,將存儲在AX寄存器中的二進制數(shù)轉(zhuǎn)換為十進制數(shù)并顯示DATA SEGMENT INF1 DB"Pleaseinputanumber<0-65535>:$" IBUF DB7,0,6DUP<?> DATA ENDS CODE SEGMENT ASSUMECS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSETINF1 MOV AH,09H INT 21H MOV DX,OFFSETIBUF ;鍵入一個十進制數(shù)〔<65535 MOV AH,0AH INT 21H MOV CL,IBUF+1 ;十進制數(shù)的位數(shù)送CX MOV CH,0 MOV SI,OFFSETIBUF+2 ;指向輸入的第一個字符〔最高位 MOV AX,0 ;開始將十進制數(shù)轉(zhuǎn)換為二進制數(shù) AGAIN: MOV DX,10 ;<<010+a4>10+…>10+a0 MUL DX AND BYTEPTR[SI],0FHADD AL,[SI] ADC AH,0 INC SI LOOP AGAIN MOV AH, 4CH INT 21H CODE ENDS END START//將存儲在AX寄存器中的二進制數(shù)轉(zhuǎn)換為十進制數(shù)并顯示。DATA SEGMENT OBUF DB6DUP<?>DATA ENDS CODE SEGMENT ASSUMECS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,OFFSETOBUF+5 MOV BYTEPTR[BX],'$' MOV CX,10 ;做〔DX:〔AX/10運算 LOOP1: MOV DX,0 ;被除數(shù)高16位清0 DIV CX ADD DL,30H ;將DL中的一位十進制數(shù)轉(zhuǎn)換為ASCII碼 DEC BX MOV [BX],DL OR AX,AX JNZ LOOP1 ;判斷商是否為0,不為0繼續(xù) MOV DX,BX MOV AH,09HINT 21H ;顯示轉(zhuǎn)換得到的十進制數(shù) MOV AH,4CH INT 21H CODE ENDS END START2.源程序代碼:DATA SEGMENT INF1 DB"Pleaseinputanumber<1-361>:$" INF2 DB"1+2+...+N=$" IBUF DB7,0,6DUP<?> OBUF DB6DUP<?>DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSETINF1 MOV AH,09H INT 21H MOV DX,OFFSETIBUF MOV AH,0AH INT 21H MOV CL,IBUF+1 MOV CH,0 MOV SI,OFFSETIBUF+2 MOV AX,0AGAIN: MOV DX,10 MUL DX AND BYTEPTR[SI],0FH ADD AL,[SI] ADC AH,0 INCSI LOOP AGAIN MOV CX,AX MOV AX,0 MOV BX,1LOOP2: ADD AX,BX INC BX LOOP LOOP2 MOV BX,OFFSETOBUF+5 MOV BYTEPTR[BX],'$' MOV CX,0AH LOOP1: MOV DX,0 DIV CX ADD DL,30H DEC BX MOV [BX],DL OR AX,AX JNZ LOOP1 MOV DL,0AH MOV AH,02H INT 21H MOV DX,OFFSETINF2 MOV AH,09H INT 21H MOV DX,BX MOV AH,09H INT 21H MOV AH,4CH INT 21HCODE ENDS END START4、實驗總結(jié):通過本次實驗,我熟悉了循環(huán)程序的應(yīng)用方法,和條件轉(zhuǎn)移指令與循環(huán)指令的應(yīng)用。將課堂上學習的理論知識進行了實踐應(yīng)用,對學到的知識了解得更加透徹。西安郵電大學〔計算機學院微機原理與接口技術(shù)實驗報告實驗名稱:8254定時/計數(shù)器應(yīng)用試驗專業(yè)名稱:班級:學生__學號:指導實驗日期:2017年12月5日8254定時/計數(shù)器應(yīng)用試驗1、實驗?zāi)康?.1、掌握8254的工作方式及應(yīng)用編程1.2、掌握8254的典型應(yīng)用電路接法1.3、學習8254在PC系統(tǒng)中的典型應(yīng)用方法2、實驗內(nèi)容2.1、通過實驗箱提供的單次脈沖單元,按動微動開關(guān)向計數(shù)器依次發(fā)出單脈沖,觀察每來一個脈沖時,計數(shù)器當前計數(shù)值的變化情況。2.2、定時應(yīng)用實驗。編寫程序,應(yīng)用8254的定時功能,產(chǎn)生一個1s的方波,并用本裝置的示波器功能來觀察。3、實驗原理8254是Intel公司生產(chǎn)的可編程間隔定時器。是8253的改進型,比8253具有更優(yōu)良的性能。8254具有以下基本功能:〔1有3個獨立的16位計數(shù)器;〔2每個計數(shù)器可按二進制或十進制〔BCD計數(shù);〔3每個計數(shù)器可編程工作于6種不同工作方式;〔48254每個計數(shù)器允許的最高計數(shù)頻率為10MHz〔8253為2MHz;〔58254有讀回命令〔8253沒有,除了可以讀出當前計數(shù)單元的內(nèi)容外,還可以讀出狀態(tài)寄存器的內(nèi)容;圖1圖1是8254的內(nèi)部結(jié)構(gòu)框圖和引腳圖,它是由與CPU的接口、內(nèi)部控制電路和三個計數(shù)器組成。8254的工作方式如下述:〔1方式0:計數(shù)到0結(jié)束輸出正躍變信號方式?!?方式1:硬件可重觸發(fā)單穩(wěn)方式。〔3方式2:頻率發(fā)生器方式?!?方式3:方波發(fā)生器。〔5方式4:軟件觸發(fā)選通方式?!?方式5:硬件觸發(fā)選通方式。8254的控制字有兩個:一個用來設(shè)置計數(shù)器的工作方式,稱為方式控制字;另一個用來設(shè)置讀回命令,稱為讀回控制字。這兩個控制字共用一個地址,由標識位來區(qū)分??刂谱指袷饺绫?所示。表18254的方式控制字格式表28254讀出控制字格式表38254狀態(tài)字格式計數(shù)應(yīng)用實驗1、編寫程序,將8254的計數(shù)器0設(shè)置為方式3,計數(shù)值為十進制數(shù)4,用單次脈沖KK1+作為CLK0時鐘,OUT0連接MIR7,每當KK1+按動5次后產(chǎn)生中斷請求,在屏幕上顯示字符"M"。2、實驗步驟:〔1實驗接線如圖2所示;〔2編寫實驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng);〔3運行程序,按動KK1+產(chǎn)生單次脈沖,觀察實驗現(xiàn)象;〔4改變計數(shù)值,驗證8254的計數(shù)功能。圖2實驗代碼IOY0EQU0600H A8254EQUIOY0+00H*2B8254EQUIOY0+01H*2C8254EQUIOY0+02H*2CON8254EQUIOY0+03H*2SSTACK SEGMENTSTACK DW32DUP<?>SSTACK ENDSCODE SEGMENT ASSUMECS:CODE,SS:SSTACKSTART: PUSHDS MOVAX,0000H MOVDS,AX MOVAX,OFFSETIRQ7 MOVSI,003CH MOV[SI],AX MOVAX,CS MOVSI,003EH MOV[SI],AX CLI POPDS MOVAL,11H OUT20H,AL MOVAL,08H OUT21H,AL MOVAL,04H OUT21H,AL MOVAL,01H OUT21H,AL MOVAL,6FH OUT21H,AL MOVDX,CON8254 MOVAL,10H OUTDX,AL MOVDX,A8254 MOVAL,04H OUTDX,AL STIAA1: JMPAA1IRQ7: MOVDX,A8254 MOVAL,04H OUTDX,AL MOVAX,014DH INT10H MOVAX,0120H INT10H MOVAL,20H OUT20H,AL IRETCODE ENDS ENDSTART每當KK1+按動5次后產(chǎn)生中斷請求,在屏幕上顯示字符"M"。定時應(yīng)用實驗1、編寫程序,將8254的計數(shù)器0和1設(shè)置為方式3,用信號源1MHz作為CLK0時鐘,OUT1為波形輸出1s方波。2、實驗步驟:〔1接線圖如圖3所示;〔2根據(jù)實驗內(nèi)容,編寫實驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng);〔3運行實驗程序,打開虛擬儀器中的示波器并點擊示波器的運行按鈕測試OUT1輸出,驗證程序功能。實驗代碼IOY0 EQU0600H ;IOY0起始地址A8254EQUIOY0+00H*2B8254EQUIOY0+01H*2C8254EQUIOY0+02H*2CON8254EQUIOY0+03H*2SSTACK SEGMENTSTACK DW32DUP<?>SSTACK ENDSCODE SEGMENT ASSUMECS:CODESTART: MOVDX,CON8254 ;8254 MOVAL,36H ;計數(shù)器0,方式3 OUTDX,AL MOVDX,A8254 MOVAL,0E8H OUTDX,AL MOVAL,03H OUTDX,AL MOVDX,CON8254 ;8254 MOVAL,76H ;計數(shù)器1,方式3 OUTDX,AL MOVDX,B8254 MOVAL,0E8H OUTDX,AL MOVAL,03H OUTDX,ALAA1: JMPAA1CODE ENDS ENDSTART實驗結(jié)果4、實驗總結(jié)通過此
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 墻紙墻布合同范本
- 顧問融資合同范本
- 印刷訂貨合同范本
- 醒獅合同范本模板
- 《胡同文化》教案15篇
- 林業(yè)合同范本
- 《管理學原理》歷年真題及答案
- 苗木合同范本
- 借外債合同范本
- 第13課《短文兩篇-不求甚解》課件+2023-2024學年統(tǒng)編版語文九年級下冊
- 2024年時政熱點知識競賽試卷及答案(共三套)
- 安全培訓總結(jié)及效果評價
- 系統(tǒng)集成項目管理工程師(基礎(chǔ)知識、應(yīng)用技術(shù))合卷軟件資格考試(中級)試題及解答參考(2025年)
- 2024年巴黎奧運會
- NB-T+10488-2021水電工程砂石加工系統(tǒng)設(shè)計規(guī)范
- 青年你為什么要入團-團員教育主題班會-熱點主題班會課件
- 2024年畜禽屠宰企業(yè)獸醫(yī)衛(wèi)生檢驗人員考試試題
- 2024年度-《醫(yī)療事故處理條例》解讀
- 國際金融seminar 1
- 幼兒園中班科學活動《玩管子》教案
- 四大文明古國PPT.ppt
評論
0/150
提交評論