




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一篇匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)一匯編語(yǔ)言上機(jī)操作比較字符串1-1實(shí)驗(yàn)二循環(huán)程序設(shè)計(jì)建立學(xué)生名次表1-5實(shí)驗(yàn)三顯示器界面設(shè)計(jì)光標(biāo)軌跡程序1-8實(shí)驗(yàn)四鍵盤(pán)界面設(shè)計(jì)鍵盤(pán)輸入程序1-10實(shí)驗(yàn)五算術(shù)程序設(shè)計(jì)判斷閏年程序1-22第二篇微機(jī)硬件實(shí)驗(yàn)系統(tǒng)實(shí)驗(yàn)一簡(jiǎn)單I/O口擴(kuò)展實(shí)驗(yàn)2-1實(shí)驗(yàn)二8255并行口實(shí)驗(yàn)2-實(shí)驗(yàn)三8253定時(shí)器/計(jì)數(shù)器接口實(shí)驗(yàn)2-實(shí)驗(yàn)四8250串口實(shí)驗(yàn)2-實(shí)驗(yàn)五存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)2-實(shí)驗(yàn)六8259中斷控制器實(shí)驗(yàn)2-實(shí)驗(yàn)七基于定時(shí)中斷的實(shí)時(shí)控制綜合實(shí)驗(yàn)2-附錄1ASCII碼表3-1附錄2常用BIOS中斷調(diào)用3-2附錄3INT21HDOS系統(tǒng)功能調(diào)用3-5附錄4PCIBIOS中斷調(diào)用INT1AH3-
2、11附錄5漢字字符集表3-13附錄6DEBUG主要命令3-21第一篇匯編語(yǔ)言實(shí)驗(yàn)一匯編語(yǔ)言上機(jī)操作比較字符串實(shí)驗(yàn)項(xiàng)目名稱:比較字符串實(shí)驗(yàn)項(xiàng)目性質(zhì):普通所屬課程名稱:微機(jī)原理與應(yīng)用實(shí)驗(yàn)計(jì)劃學(xué)時(shí):2一、實(shí)驗(yàn)?zāi)康? 、學(xué)習(xí)程序設(shè)計(jì)的基本方法和技能;2、熟練掌握匯編語(yǔ)言設(shè)計(jì)、編寫(xiě)、調(diào)試和運(yùn)行;二、實(shí)驗(yàn)內(nèi)容和要求2 、匯編語(yǔ)言上機(jī)操作方法編寫(xiě)程序,比較兩個(gè)字符串STRING儕口STRING新含字符是否相同,若相同則在屏幕上顯示MATCH,否則顯示NOTMATCH。3 、系統(tǒng)操作練習(xí)三、實(shí)驗(yàn)主要儀器設(shè)備和材料計(jì)算機(jī)四、實(shí)驗(yàn)方法、步驟及結(jié)構(gòu)測(cè)試1、建立ASMfc件1)在Windows系統(tǒng)環(huán)境下,調(diào)用寫(xiě)字板編
3、輯程序,建立匯編語(yǔ)言ASM®文件。2)在Dos系統(tǒng)環(huán)境下,調(diào)用EDIT編輯器建立匯編語(yǔ)言ASM源文件。;ProgramTitleGoesHereComparestring;Datasegment;definedatasegmentString1dbMovethecursorbackward.String2dbMovethecursorbackward.Mess1dbMatch.,13,10,$Mess1dbMatch.,13,10,$Dataends*Programsegment;definecodesegmentMainprocfarAssumecs:program,ds:data
4、,es:dataStart:;startingexecutionaddressPushds;setupstackforreturnSubax,axPushaxMovax,data;datasegmentaddressMovds,axMOVes,ax;mainpartofprogramgoeshereLeasi,string1Leasi,string2CldMovcx,25RepzcmpsbJzMATCHLeadx,mess2JmpshortdispMatch:Leadx,mess1Disp:Movah,09;reture to DOS;end of main part of program;e
5、nd of code segmentInt21hRetMainendpProgramendsEndstart;endassembly寫(xiě)完后保存文件名為:*.asm2、用匯編程序MASMt源文件“*asm”匯編產(chǎn)生目標(biāo)文件*.obj。1)在Windows環(huán)境,點(diǎn)擊mas似:件,輸入*asm的文件名。2)在Dos環(huán)境,輸入命令:C:masm>masm*.asm/TheIBMPersonalComputerMACROAssemblerVersion1.00(C)CopyrightIBMCorp1981WarningSevereErrorError00如匯編過(guò)程出錯(cuò)則在屏幕上顯示出錯(cuò)信息。3、用
6、連接程序Link產(chǎn)生可執(zhí)行文件”*.exe”.1)在Windows環(huán)境,點(diǎn)擊Link文件,輸入*obj文件名。2)在Dos環(huán)境,輸入命令:C:masm>link*obj/IBM5550MultistationLinker2.00(C)CopyrightIBMCorp1983Warning:NoSTACKsegmengtTherewas1arrordetected4、執(zhí)行程序1)在Windows環(huán)境,點(diǎn)擊*.exe文件運(yùn)行程序。2)在Dos環(huán)境,輸入命令:C:masm>*exe/此時(shí)在屏幕上可顯示程序的運(yùn)行結(jié)果。屏幕顯示:Match(或NOTMATCH)5、用DEBU闔試程序輸入命令
7、:C:masm>debug*exe/幕上顯示提示符:-G/(運(yùn)行命令)MATCH.PROGRAMTERMINATEDNORMALLY-U(反匯編命令),屏幕上顯示程序如示U/19F3:00001E19F3:00012BC019F3:00035019F3:0004B8EE1919F3:00078ED819F3:00098EC019F3:000B8D360000 LEA8D3E1900 LEA19F3:000F19F3:0013FC19F3:0014B9190019F3:0017F319F3:0018A619F3:0019740619F3:001B19F3:001F-U19F3:002119
8、F3:00258D163B00 LEAEB04JMP8D163200 LEAB409MOVCD21INT19F3:002719F3:0029CB19F3:002AFF7501PUSH DS SUB AX,AX PUSH AX MOV AX,19EE MOV DS,AX MOV ES,AXSI,0000 DI,1900CLDMOV CX,0019 REPZCMPSBJZ 0021DX,003B 0025DX,0032 AH,09 21RETF將斷點(diǎn)設(shè)置在程序的主要部分運(yùn)行以前,運(yùn)行輸入的程序?yàn)椋?G0B/AX=19EEBX=0000CX=007ADX=0000SP=FFFCBP=0000SI=0
9、000DI=0000DS=19EEES=19EESS=19EECS=19F3IP=000BNVUPDIPLZRNAPENC19F3:000B8D360000LEASI,0000DS:0000=6F4D根據(jù)其中指示的DS寄存器內(nèi)容查看數(shù)據(jù)段的情況如下:-D0/19EE:00004D6F766520746865-20637572736F7220Movethecursor19EE:00106261636B77617264-2E4d6f7665207468backward.Moveth19EE:00206520637572736F72-206261636b776172ecursorbackwar19E
10、E:0030642E4D617463682E-0d0a244E6F206D61d.Match$Noma19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.619EE:00603E1900FCB91900F3-A674068D163B00EB>.19.S&T;.K19EE:0070048D163200B409CD-21CBFF7501405A222.4.M!K.u.Z''可用E命令修改數(shù)據(jù)區(qū)的字符串,操作如下:-E29/19
11、EE:002962.6661.6F63.726B.7777.6161.7272.6419EE:003064.2E2E.20再次用D命令查看修改結(jié)果:-D0/19EE:00004D6F766520746865-20637572736F7220Movethecursor19EE:00106261636B77617264-2E4d6f7665207468backward.Moveth19EE:00206520637572736F72-20666F7277617264ecursorforkward19EE:00302e204D617463682E-0d0a244E6F206D61.Match$Noma
12、19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.619EE:00603E1900FCB91900F3-A674068D163B00EB>.19.S&T;.K19EE:0070048D163200B409CD-21CBFF7501405A222.4.M!K.u.Z''用G命令運(yùn)行程序,結(jié)果為:-G/Nomatch!Programterminatednormally用Q命令退出程序:-Q/至此,程序調(diào)試完畢。(DEBU函令
13、詳見(jiàn)附錄2)五、實(shí)驗(yàn)報(bào)告要求分析程序功能,匯編語(yǔ)言的集成環(huán)境,調(diào)試程序過(guò)程中遇到的問(wèn)題。六、思考題1、匯編語(yǔ)言的集成環(huán)境有幾個(gè)主要環(huán)節(jié)?2、將程序中的指令JZMATCHY為JNZMATCH程序結(jié)果如何?為什么?3、將內(nèi)存DATA俾元開(kāi)始的0-15共16個(gè)數(shù)傳送到DATA2單元開(kāi)始的數(shù)據(jù)區(qū)中。實(shí)驗(yàn)項(xiàng)目名稱: 實(shí)驗(yàn)項(xiàng)目性質(zhì):普通 所屬課程名稱:微機(jī)原理與應(yīng)用 實(shí)驗(yàn)計(jì)劃學(xué)時(shí):實(shí)驗(yàn)二建立學(xué)生名次表RANK建立學(xué)生名次表RANK普通微機(jī)原理與應(yīng)用2一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)循環(huán)程序的設(shè)計(jì)方法;2、熟練掌握程序的調(diào)試方法;二、實(shí)驗(yàn)內(nèi)容和要求本程序采用兩重循環(huán)來(lái)實(shí)現(xiàn),內(nèi)層對(duì)應(yīng)學(xué)生的名次計(jì)算,外層解決所有學(xué)生的名次
14、;以GRADE為首地址的10個(gè)字保存學(xué)生的成績(jī),RANK為地址的10個(gè)字填入學(xué)生的名次。本程序?qū)?yīng)的寄存器分配情況說(shuō)明如下:AX:存放當(dāng)前被測(cè)學(xué)生的成績(jī);BX:存放當(dāng)前被測(cè)學(xué)生的相對(duì)地址指針;CX:內(nèi)循環(huán)計(jì)數(shù)值;DX:當(dāng)前被測(cè)學(xué)生的名次計(jì)數(shù)值;SI:內(nèi)循環(huán)測(cè)試時(shí)的地址指針;DI:外循環(huán)計(jì)數(shù)值;三、實(shí)驗(yàn)主要儀器設(shè)備和材料計(jì)算機(jī)一臺(tái)四、實(shí)驗(yàn)方法、步驟及結(jié)構(gòu)測(cè)試1、實(shí)驗(yàn)參考程序如下:;programtitlegoeshere-rank;Datasegment;definedatasegmentGratedw88,75,95,63,98,78,87,73,90,60Rankdw10dup(?)Data
15、ends;Programsegment;definecodesegmentMainprocfarAssumecs:program,ds:dataStart:Pushds;setupstackforretureSubax,axPushaxMovax,dataMovds,axMovdi,10Movbx,0Loop1:Movax,gradebxMovdx,0Movcx,10Leasi,gradeNext:Cmpax,siJgno_countIncdxNo_count:Addsi,2LoopnextMovrankbx,dxAddbx,2DecdiJneloop1RetMainendpProgramen
16、dsEndstart2、程序框圖開(kāi)始3、程序執(zhí)行C:>debug*exe/-U19F3:0000 19F3:000119F3:0003 19F3:0004 19F3:0007 19F3:0009 19F3:000C 19F3:000F19F3:0013 19F3:0016 19F3:0019 19F3:001D 19F3:001F1E 2BC0 50 B8EE19 8ED8BF0A00 BB0000PUSH SUBPUSH MOVMOV MOVMOV8B870000 MOVBA0000 MOVB90A00 MOV 8D360000 LEA3B047F01CMPJGDSAX,AXAXAX,
17、19F0DS,AXDI,000ABX,0000AX,BX+0000DX,0000CX,000A SI,0000 AX,SI 0022-U19F3:002142INCDX19F3:002283C602ADDSI,+0219F3:0025E2F6LOOP001D19F3:002789971400MOVBX+0014,DX19F3:002B83C302ADDBX,+0219F3:002E4FDECDI19F3:002F75DEJNZ000F19F3:0031CBRETF19F3:00325APOPDX19F3:003322C2ANDAL,DL19F3:003550PUSHAX-G09AX=19F0B
18、X=0000CX=0062DX=0000SP=FFFCBP=0000SI=0000DI=0000DS=19F0ES=19E0SS=19F0CS=19F3IP=000BNVUPDIPLZRNAPENC19F3:0009BF0A00MOVDI,000A-D0/19F0:000058004B005F003F00-62004E0057004900X.K._.?.b.N.V.I19EE:00105A003C0000000000-0000000000000000Z.<19EE:0020000000000000000000000000000000.+P8p.X?19EE:0030642E4D61746
19、3682E-0d0a244E6F206D61d.Match$Noma19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.6-G31AX=003CBX=0014CX=0000DX=000ASP=FFFCBP=0000SI=0014DI=0000DS=19F0ES=19E0SS=19F0CS=19F3IP=0031NVUPDIPLZRNAPENC19F3:0031CBRETF-D019F0:000058004B005F003F00-62004E005700
20、4900X.K._?b.N.V.I19EE:00105A003c0004000700-0200090001000600Z.<19EE:00200500080003000A0000000000000000.+P8p.X?19EE:0030642E4D617463682E-0d0a244E6F206D61d.Match$Noma19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.6五、實(shí)驗(yàn)報(bào)告要求1、畫(huà)出程序框圖并分析雙重循環(huán)的結(jié)構(gòu);2、程序的結(jié)果為
21、16進(jìn)制,可否改為10進(jìn)制?六、思考題1、調(diào)試程序時(shí),當(dāng)用戶數(shù)據(jù)設(shè)置好后,程序應(yīng)運(yùn)行到什么位置才能查看結(jié)果?2、程序的數(shù)據(jù)段定義為字單元,可否用字節(jié)來(lái)定義?實(shí)驗(yàn)三光標(biāo)軌跡實(shí)驗(yàn)項(xiàng)目名稱:判斷閏年程序?qū)嶒?yàn)項(xiàng)目性質(zhì):普通所屬課程名稱:微機(jī)原理與應(yīng)用實(shí)驗(yàn)計(jì)劃學(xué)時(shí):2一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)顯示器I/O程序設(shè)計(jì)方法;2、了解系統(tǒng)功能中斷的設(shè)計(jì)方法;3、了解鍵盤(pán)光標(biāo)鍵是如何控制;二、實(shí)驗(yàn)內(nèi)容和要求1、用鍵盤(pán)上的TJ-一鍵控制光標(biāo)的移動(dòng)。2、按行號(hào)*列號(hào)的形式給方塊字符(ASCII碼為0BDH)在屏幕上定位,按T光標(biāo)鍵使光標(biāo)在屏幕上移動(dòng),光標(biāo)的移動(dòng)由方快字符組成的圖形而在屏幕上保留下軌跡。三、實(shí)驗(yàn)主要儀器設(shè)備和
22、材料計(jì)算機(jī)四、實(shí)驗(yàn)方法、步驟及結(jié)構(gòu)測(cè)試1、源程序如下:TITLEDRAW-ProgramtodrawonscreenwithRead_cequ0Key_romequ16hUpequ48hDownequ50hRightequ4dhLiftequ4bhBlockequ0dbhEsc1equ1bhVideosegmentat0b800h;defineextrasegWd_bufflabelwordV_buffdb25*80*2dup(?)VideoendsPro_namsegment;definecodesegmentMainprocfarAssumecs:pro_nam,es:videoStart
23、:Pushds;setupstackforreturnSubax,axPushaxMovax,videoMoves,axMovcx,80*25;clearscreenbywritingzerostoitMovbx,0Clear:Moves:wd_buff+bx,0700hIncbxIncbxLoopclearMovch,12d;setscreenpointertocenterofscreenMovcl,40dGet_char:Movah,read_cIntkey_romCmpal,esc1JzexitMoval,ahCmpal,upJnznot_upDecchNot_upCmpal,downJ
24、nznot_dowdIncchNot_down:Cmpal,rightJnznot_rightIncclNot_right:Cmpal,leftJnzlite_itDecclLite_it:Moval,160dMulchMovbl,clRolbl,1Movbh,0Addbx,axMoval,blockMoves:v_buff+bx,alJmpget_charExit:RetMainendpPro_namendsEndstart2、程序說(shuō)明:該程序首先定義了一個(gè)附加段VIDEO,并用AT偽操作將該段的段地址指定為00B800H,0B800H是彩色顯示器的顯示緩沖區(qū)的入口地址。程序分為三段,第一段
25、完成清除屏幕的工作,程序從偏移地址0開(kāi)始,向顯存的所有單元(25*80)寫(xiě)入數(shù)據(jù)0700H,其中07H為正常屬性代碼,00H為ASCII碼;第二段程序用BIOSINT16H功能從鍵盤(pán)讀取字符,然后根據(jù)按動(dòng)光標(biāo)控制鍵增減行號(hào)(CH)、列號(hào)(CL)。第三段是在當(dāng)前行號(hào)和列號(hào)的位置寫(xiě)入方塊字符(0DBH),行號(hào)列號(hào)使用轉(zhuǎn)換公式為:(BX)=行號(hào)*80*2+列號(hào)*2然后利用間接尋址方式直接將方塊符寫(xiě)入存儲(chǔ)單元中;運(yùn)行這個(gè)程序,當(dāng)任意按動(dòng)T7光標(biāo)鍵,光標(biāo)的移動(dòng)就由方塊符組成的圖形保留下來(lái)了;五、實(shí)驗(yàn)報(bào)告要求1、顯示器是如何定義窗口的大小的?2、在文本方式下,什么是屬性值?六、思考題1、光標(biāo)軌跡運(yùn)行到邊界
26、后,為什么光標(biāo)會(huì)閃爍和改變顏色?若要光標(biāo)不變,應(yīng)如何修改程序?實(shí)驗(yàn)四鍵盤(pán)程序設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目名稱:鍵盤(pán)處理演示程序?qū)嶒?yàn)項(xiàng)目性質(zhì):普通所屬課程名稱:微機(jī)原理與應(yīng)用實(shí)驗(yàn)計(jì)劃學(xué)時(shí):2一、實(shí)驗(yàn)?zāi)康?、 、學(xué)習(xí)鍵盤(pán)I/O口程序設(shè)計(jì)方法;2、了解系統(tǒng)功能中斷的設(shè)計(jì)方法;二、實(shí)驗(yàn)內(nèi)容和要求1、在PC機(jī)中,對(duì)鍵盤(pán)的管理是通過(guò)中斷機(jī)構(gòu)和8255可編程外圍接口芯片來(lái)實(shí)現(xiàn)的。2、 8255芯片中有兩個(gè)端口PA(60H)、PB(61H),在這個(gè)硬件接口的基礎(chǔ)上,系統(tǒng)BIOS中已配備了鍵盤(pán)的服務(wù)功能,因此用戶可調(diào)用鍵盤(pán)的DOSBIOS功能編程。3、 完成對(duì)鍵盤(pán)的中斷檢測(cè),把鍵盤(pán)的83個(gè)鍵的掃描碼轉(zhuǎn)換成相應(yīng)的ASCII字
27、符碼。三、實(shí)驗(yàn)主要儀器設(shè)備和材料計(jì)算機(jī)四、實(shí)驗(yàn)方法、步驟及結(jié)構(gòu)測(cè)試1、源程序如下:TITLEkbdio.asm-KeyboardI/OsupportprogramStacksegmentparastackstackdb256dup(0)StackendsDatasegmentparapublicdataBufferdb16hdup(0)Bufpt1dw0Bufpt2dw0Kbflagdb0Promptdb-kbd_ioprogrambegin-,0dh,0ah,$Scantabdb0,0,1234567890-=,8,0dbqwertyuiop,0dh,0dbasdfghjkl;,0,0,0,
28、0dbzxcvbnm,./,0,0,0db,0,0,0,0,0,0,0,0,0,0,0,0,0db789-456+1230.EvenOldcs9dw?Oldip9dw?DataendsCodesegmentparapubliccodeStartprocfarAssumecs:code,ds:dataPushds;saveforreturnMovax,0PushaxMovax,data;setDStodatasegMovds,axCliMoval,09;saveinterruptvectorofKBDBIOSroutingMovah,35hInt21hMovoldcs9,esMovoldip9,
29、bxPushds;setinterruptvectorofkbintMovdx,offsetkbintMovax,segkbintMovds,axMoval,09Movah,25hInt21hPopdsInal,21h;setkbdinterruptmaskbitAndal,0fdhOut21h,alMovdx,offsetpromptMovah,9Int21hStiForever:Callkbget;waitenterakeyTestkbflag,80hJnzendintPushaxCalldispchar;displaythecharacterPopaxCmpal,0dhJnzforeve
30、rMoval,0ahCalldispchar;displayCR/LFJmpforever;loopforcontinueEndint:Movdx,oldip0;interruptvectorMovax,oldcs9Movds,axMoval,09hMovah,25hInt21hRetStartendpKbgetprocnearPushbxCli;interruptbackoffMovbx,bufpy1;getpointertoheadCmpbx,bufpt2;testemptyofbufferJnzkbget2;no,fetchacharacterCmpkbflag,0Jnzkbget3St
31、i;allowaninterrupttooccurPopbxJmpkbget;loopuntilsomethinginbufKbget2:Moval,buffer+bx;getasciicodeIncbx;incabufferpoiterCmpJcMovbx,16kbget3bx,0;atendofbuffer;no,continue;resettobufbeginningKbget3:Movbufpt1,bx;storevalueinvariablePopbxRetKbgetendpKbintprocfar;keyboardinterruptroutinePushbxPushaxInal,6
32、0h;readinthecharacterPushax;saveitInal,61h;getthecontrolporOral,80;setacknowledgebitforkbdOut61h,alAndal,7fh;resetacknowledgebitOut61h,alPopax;recoverscancodeTestal,80h;ispressorreleasecode?Jnzkbint2;isreleasecode,returnMovbx,offsetscantabXlatscantab;asciicodetoALCmpal,0Jnzkbint4Movkbflag,80hJmpkbin
33、t2Kbint4:Movbx,bufpt2;buffertailpointerMovbuffer+bx,al;asciifillinbufferIncbxCmpbx,16;isendofbuffer?Jckbint3;noMovbx,0;resettobufbeginningKbint3:Cmpbx,bufpt1;isbufferfull?Jzkbint2;yes,losecharacterMovbufpt2,bx;savebuftailpointerKbint2:CliMoval,20hOut20h,alPopaxPopbxStiIretKbintendpDispcharprocnearPu
34、shbxMovbx,0Movah,0ehInt10hPopbxRetDispcharendpCodeendsEndstart;endofinterrupt;interruptreturn;(AL)=displayingchar;callvideoroutine;endofcodesegment2、程序說(shuō)明主程序START鍵盤(pán)中斷向量的保存、設(shè)置與恢復(fù);設(shè)置中斷屏蔽位并開(kāi)中斷;從緩沖區(qū)讀取鍵入字符并顯示在屏幕上。子程序KBGET檢測(cè)并等待鍵盤(pán)中斷,如有鍵盤(pán)輸入,則從緩沖區(qū)取出字符并進(jìn)行隊(duì)列管理。鍵盤(pán)中斷處理程序KBINT:從輸入口PA(60H)讀入按鍵的掃描碼并返回應(yīng)答信號(hào);對(duì)通碼進(jìn)行轉(zhuǎn)換,將轉(zhuǎn)
35、換后的ASCII碼存入隊(duì)列尾。顯示子程序DISPCHAR調(diào)用BIOS顯示功能(INT10H)顯示鍵入的字符。五、實(shí)驗(yàn)報(bào)告要求1 、分析程序結(jié)構(gòu);2 、09號(hào)中斷的任務(wù)是什么?3、鍵盤(pán)隊(duì)列有幾種工作狀態(tài)?六、思考題1、該程序的鍵盤(pán)屬什么編碼方式?2、鍵盤(pán)緩沖區(qū)占用多少單元?實(shí)驗(yàn)五運(yùn)算類程序設(shè)計(jì)(一)實(shí)驗(yàn)項(xiàng)目名稱:判斷閏年程序?qū)嶒?yàn)項(xiàng)目性質(zhì):普通所屬課程名稱:微機(jī)原理與應(yīng)用實(shí)驗(yàn)計(jì)劃學(xué)時(shí):2一、實(shí)驗(yàn)?zāi)康? 、了解加、減、乘、除算術(shù)運(yùn)算的編程方法;2、了解變量傳送的方式,如何訪問(wèn)存貯單元;二、實(shí)驗(yàn)內(nèi)容和要求2 、是匯編語(yǔ)言程序設(shè)計(jì)的重要組成部分,在實(shí)際應(yīng)用中,不論是簡(jiǎn)單的還是復(fù)雜的程序,都或多或少要用到
36、一些算術(shù)運(yùn)算,這些算術(shù)運(yùn)算大多數(shù)是加、減、乘、除和乘方等;所以,用匯編語(yǔ)言編寫(xiě)算術(shù)運(yùn)算程序。3 、用匯編語(yǔ)言編寫(xiě)判斷某年是否為閏年,年份從鍵盤(pán)輸入,通過(guò)運(yùn)行計(jì)算后,輸出相應(yīng)信息。三、實(shí)驗(yàn)主要儀器和材料計(jì)算機(jī)四、實(shí)驗(yàn)方法、步驟及結(jié)構(gòu)測(cè)試1、利用DOS21H中斷類型的10號(hào)鍵盤(pán)功能調(diào)用,將從鍵盤(pán)接收的年份數(shù)值型字符串按字節(jié)存入緩沖區(qū);將字符串中的每個(gè)字符轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)值(利用09這十個(gè)數(shù)的ASCII碼值比其本身大30H的關(guān)系),通過(guò)判斷某年是否為潤(rùn)年的表達(dá)式,判斷輸出是否為潤(rùn)年的信息。4 、程序框圖如圖6-1:圖6-1判斷是否為閏年的程序框圖3、源程序如圖6-2:DatasegmentInf
37、ondb0dh,0ah,'Pleaseinputayear:$Ydb0dh,oah,'thisisaleapyear!$Ndb0dh,0ah,'thisisnotaleapyear!$wdw0bufdb8db?db8dup(?)dataendsstacksegmentstackdb200dup(0)stackendscodesegmentassumeds:data,ss:stack,cs:codestart:movax,datamovds,axleadx,infonmovah,9int21hleadx,bufmovah,10int21hmovcl,buf+1leadi,
38、buf+2calldatacatecallifyearsjcalleadx,nmovah,9int21hjmpexital:leadx,ymovah,9int21hexit:movah,4chint21hdatacateprocnearpushcxdeccx; 在屏幕上顯示提示信息; 從鍵盤(pán)輸入年份字符串; 將數(shù)值轉(zhuǎn)換為 ASCII 碼字符子程序leasi,buf+2tt1:incsilooptt1popcxmovdh,30hmovbl,10movax,111:pushaxSubbyteptrsi,dhMulbyteptrsiAddw,axPopaxMulblDecsiLoopRet11Dat
39、acateendpIfyearsprocnearPushbxPushcxPushdxMovax,wMovcx,axMovdx,0Movbx,4DivbxCmpdx,0Jnzlab1Movax,cxMovbx,100DivbxCmpdx,0Jnzlab2Movax,cxMovbx,400DivbxCmpdx,0Jzlab2Lab1:clcJmplab3Lab2:stccxbxLab3:popdxPopPopRetIfyearsendpCodeendsEndstart圖62程序流程圖4、程序運(yùn)行結(jié)果如圖63Pleaseinoutayear:1996Thisisaleapyear!C:MASM>
40、;ifleapPleaseinoutayear:2003Thisisnotaleapyear!C:MASM>圖63程序運(yùn)行結(jié)果五、實(shí)驗(yàn)報(bào)告要求1、分析程序是如何實(shí)現(xiàn)判斷是否為潤(rùn)年?2、小結(jié)匯編語(yǔ)言實(shí)現(xiàn)算術(shù)運(yùn)算的方法。六、思考題1、寫(xiě)出實(shí)驗(yàn)中的判斷閏年的表達(dá)公式。運(yùn)算類程序設(shè)計(jì)(二)第二篇硬件部分實(shí)驗(yàn)一簡(jiǎn)單I/O口擴(kuò)展實(shí)驗(yàn)項(xiàng)目名稱:簡(jiǎn)單I/O口擴(kuò)展實(shí)驗(yàn)項(xiàng)目性質(zhì):普通所屬課程名稱:微機(jī)原理與應(yīng)用實(shí)驗(yàn)計(jì)劃學(xué)時(shí):21、 實(shí)驗(yàn)?zāi)康?、熟悉74LS273,74LS244的應(yīng)用接口方法。2、掌握用鎖存器、三態(tài)門(mén)擴(kuò)展簡(jiǎn)單并行輸入、輸出口的方法。2、 實(shí)驗(yàn)內(nèi)容和要求1、用邏輯電平開(kāi)關(guān)作為74LS244的輸
41、入,用發(fā)光二極管作為74LS273的輸出編寫(xiě)程序,使得邏輯電平開(kāi)關(guān)的輸入狀態(tài)從發(fā)光二極管顯示出來(lái)。2、實(shí)驗(yàn)原理圖:實(shí)驗(yàn)主要儀器設(shè)備和材料1、EL實(shí)驗(yàn)箱2、計(jì)算機(jī)3、導(dǎo)線若干4、 實(shí)驗(yàn)方法、步驟及結(jié)果測(cè)試1、將74LS244的輸入SI0SI7分別與邏輯電平開(kāi)關(guān)電路的K1K8相連,從I/O地址片選信號(hào)CS0與U10的片選信號(hào)相連。2、將74LS273的輸出SO0SO7分別與發(fā)光二極管電路的L1L8相連,從I/O地址片選信號(hào)CS1與U8片選信號(hào)相連。3、編程并運(yùn)行。4、撥動(dòng)開(kāi)關(guān),其變化反應(yīng)到發(fā)光二極管上,當(dāng)開(kāi)關(guān)的狀態(tài)對(duì)應(yīng)發(fā)光二極管的點(diǎn)亮或熄滅。5、程序框圖6、參考程序;Assumecs:codeCo
42、desegmentpublicOrg100hStart:movdx,04a0hInal,dxmovdx,04b0houtdx,aljmpstartcodeendsednstart5、 實(shí)驗(yàn)報(bào)告要求1、畫(huà)出實(shí)驗(yàn)原理圖2、掌握輸入輸出接口的編程原理和方法。6、 思考題1、本程序是采用什么控制方法2、若采用查詢方式編程,應(yīng)如何修改程序?qū)嶒?yàn)二8255并行口實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目名稱:8255并行口實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目性質(zhì):普通所屬課程名稱:微機(jī)原理與應(yīng)用實(shí)驗(yàn)計(jì)劃學(xué)時(shí):21、 實(shí)驗(yàn)?zāi)康? 、掌握8255的編程原理;2 、掌握8255并行接口方法;2、 實(shí)驗(yàn)內(nèi)容和要求1、8255的A口作輸入口,與邏輯電平開(kāi)關(guān)K1K8相連;
43、8255的B口作為輸出口,與發(fā)光二極管L1L8相連;編寫(xiě)程序,使得邏輯電平開(kāi)關(guān)的變化在發(fā)光二極管上顯示出來(lái)。2、實(shí)驗(yàn)原理圖三、實(shí)驗(yàn)主要儀器設(shè)備和材料1、EL實(shí)驗(yàn)箱2、計(jì)算機(jī)3、導(dǎo)線若干四、實(shí)驗(yàn)方法、步驟及結(jié)果測(cè)試1、8255的PA0PA7分別與邏輯電平開(kāi)關(guān)的K1K8相連;PB0PB7分別與發(fā)光二極管電路的L1L8相連;從CS0與8255的片選端相連。2、編程并運(yùn)行。3、撥動(dòng)開(kāi)關(guān),觀察發(fā)光二極管的變化,當(dāng)開(kāi)關(guān)某位合上時(shí),對(duì)應(yīng)的發(fā)光二極管點(diǎn)亮,斷開(kāi)時(shí)熄滅。4、程序框圖5、參考程序Assumecs:codeCodesegmentpublicOrg100hStart:movdx,04a6hMovax,
44、90hOutdx,axStart1:movdx,04a0hInax,dxMovdx,04a2hOutdx,axJmpstart1CodeendsEndstart五、實(shí)驗(yàn)報(bào)告要求1 、比較用簡(jiǎn)單I/O口與8255接口的方法有什么區(qū)別?2 、分析8255采用選通工作方式是如何實(shí)現(xiàn)的?六、思考題1、本實(shí)驗(yàn)是實(shí)現(xiàn)什么數(shù)據(jù)傳送方式?若改用查詢方式傳送數(shù)據(jù),應(yīng)該如何修改程序?實(shí)驗(yàn)三8253定時(shí)器/計(jì)數(shù)器實(shí)驗(yàn)項(xiàng)目名稱:8253定時(shí)器/計(jì)數(shù)器實(shí)驗(yàn)項(xiàng)目性質(zhì):普通所屬課程名稱:微機(jī)原理與應(yīng)用實(shí)驗(yàn)計(jì)劃學(xué)時(shí):2一、實(shí)驗(yàn)?zāi)康? 、掌握8253定時(shí)器/計(jì)數(shù)器的編程原理;2 、掌握8253計(jì)數(shù)器的接口方法;二、實(shí)驗(yàn)內(nèi)容和要
45、求1、將8253計(jì)數(shù)器的0,1,2通道設(shè)置為模式3(方波方式),用示波器觀察其輸出波形。2、實(shí)驗(yàn)原理圖如下:3 、8253的時(shí)鐘端口CLK0、CLK1為6/16M,CLK2的時(shí)鐘可以自行定義。三、實(shí)驗(yàn)主要儀器設(shè)備和材料1、EL實(shí)驗(yàn)箱2、計(jì)算機(jī)3、導(dǎo)線若干4、示波器四、實(shí)驗(yàn)方法、步驟及結(jié)果測(cè)試1、將CS0與8253的CS8253相連;2、將8253的OUT0、OUT1接示波器的信號(hào)端;3、示波器的地接實(shí)驗(yàn)箱的GND;4、實(shí)驗(yàn)源程序如下:Assumecs:codeCodesegmentpublicOgr100hStart:movdx,04a6h;8253控制端口地址Movax,36h;設(shè)置計(jì)數(shù)器0
46、工作方式3Outdx,axMovdx,04a0h;計(jì)數(shù)器0地址Movax,24h;設(shè)初值為0F424HOutdx,axMovax,0f4hOutdx,axmovdx,04a6h;8253控制端口地址Movax,76h;設(shè)置計(jì)數(shù)器1工作方式3Outdx,axMovdx,04a2hMovax,0ahOutdx,axMovax,0hOutdx,ax1地址0AHmovMovOutdx,04a6hax,0b6hdx,ax;8253控制端口地址;設(shè)置計(jì)數(shù)器2工作方式3Movdx,04a4h;計(jì)數(shù)器2地址Movax,04h;設(shè)初值為04HOutdx,axMovax,0hOutdx,axCodeendsEnd
47、start5、程序框圖如下:五、實(shí)驗(yàn)報(bào)告要求1、掌握8253的內(nèi)部結(jié)構(gòu),主要功能;2、分析8253計(jì)數(shù)器的計(jì)數(shù)方式?3、分析8253計(jì)數(shù)器的定時(shí)時(shí)間常數(shù)的計(jì)算方法?六、思考題1、若改用工作方式2(分頻方式),計(jì)數(shù)初值為10,計(jì)數(shù)器0的輸出波形怎樣?2、要求定時(shí)時(shí)間為2分鐘,定時(shí)系數(shù)是多少?(假設(shè)頻率為6/16M)實(shí)驗(yàn)四8250串口實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目名稱:8250串口實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目性質(zhì):普通所屬課程名稱:微機(jī)原理與應(yīng)用實(shí)驗(yàn)計(jì)劃學(xué)時(shí):21、 實(shí)驗(yàn)?zāi)康? 、熟悉串行通信的原理和8250的工作原理;2、了解RS-232串行接口標(biāo)準(zhǔn)及連接方法;3、掌握8250芯片的編程方法;2、 實(shí)驗(yàn)內(nèi)容和要求1、在PC機(jī)之間
48、實(shí)現(xiàn)串行通信,上位機(jī)每下傳一個(gè)字符,下位機(jī)返回一個(gè)字符。2、上下位機(jī)波特率選用9600BIT。3、上下位機(jī)均用查詢方式;4 、8250的端口地址為0480H起始的偶地址單元,時(shí)鐘頻率為1.8432MHz;5 、上位機(jī)的端口用COM1(或COM2的端口地址2F8H)端口地址3F8H;6、實(shí)驗(yàn)原理圖三、實(shí)驗(yàn)主要儀器設(shè)備和材料1、EL實(shí)驗(yàn)箱2、計(jì)算機(jī)四、實(shí)驗(yàn)方法、步驟及結(jié)果測(cè)試1、用通信電纜連接EL實(shí)驗(yàn)箱和PC機(jī);2、分別編寫(xiě)上下位機(jī)的程序;3 、在PC機(jī)上運(yùn)行T6UP.EXE程序,選擇串行口(COM1/COM2);4 、在PC機(jī)上輸入字符,看是否有返回,退出按回車(chē)鍵;5、下位機(jī)源程序:Codese
49、gmentAssumecs:codeOrg100hStart:movbx,0480hMovdx,bxAdddx,6Movax,80hOutdx,axMovdx,bxMovax,0ch;設(shè)置波特率9600BITOutdx,ax;Adddx,2Movax,0hOutdx,ax;設(shè)置中斷方式Adddx,4Movax,07Outdx,ax;設(shè)置線路控制寄存器Movdx,bxCrd:CallrecvCallsendJmpcrdRecv:Adddx,0ahRecv3:Inax,dxTestax,01hJnzrecv1Jmprecv3Recv1:Movdx,bxInax,dxRetSend:PushaxAdddx,0ahSend1:Inax,dxTestax,20hJnzrecv2Jmpsend1接收器數(shù)據(jù)是否就緒 , 就緒則轉(zhuǎn)移;發(fā)送器是否空,空則轉(zhuǎn)移Recv2:PopaxMovdx,bxOutdx,ax;發(fā)送數(shù)據(jù)RetCodeendsEndstart6、上位機(jī)源程序DatasegmentTt1dw0Ttt1dw0Comdw0Messag1dbpleasekeyincom(1,2):,$Messag2dbsend:,$Rcvstrdb255dup(?)Messag3dbreceive:,$DataendsCodesegmentAssumecs:code,d
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 叉車(chē)貨架維修租賃合同范例
- 醫(yī)院水電維護(hù)合同范例
- 個(gè)人境外租車(chē)合同范例
- 分包合同范例匯編
- 卡車(chē)出租合同范例
- 產(chǎn)品核心技術(shù)引進(jìn)合同范例
- 別墅修建施工合同范例
- 義烏地基買(mǎi)賣(mài)合同范例
- 加盟品牌店裝修合同范例
- 公路瀝青采購(gòu)合同范例
- 2025屆山東省青島市高三下學(xué)期一模英語(yǔ)試題(原卷版+解析版)
- 三對(duì)三籃球賽記錄表
- 新版現(xiàn)代西班牙語(yǔ)第二冊(cè)答案
- 福州市《加強(qiáng)我市建筑模板工程施工質(zhì)量管理若干規(guī)定》
- 水利監(jiān)理規(guī)劃(水利部)
- KTV包房音響系統(tǒng)設(shè)計(jì)方案
- GB_T3162-1991_滑動(dòng)軸承薄壁軸瓦尺寸、結(jié)構(gòu)要素與公差
- 中國(guó)銀行房屋抵押銀行貸款合同
- 如何挖掘商機(jī)PPT課件
- 最新餐廳眾籌方案
- 平行四邊形培優(yōu)專題訓(xùn)練
評(píng)論
0/150
提交評(píng)論