版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
西安交通大電子信息與工學(xué)院自化科學(xué)與技術(shù)系實(shí)驗(yàn)名稱:微原理與接口技術(shù)實(shí)驗(yàn)者姓:實(shí)驗(yàn)者學(xué):所在班級
XX自動化報(bào)告完成期:
2014年1月12日
實(shí)驗(yàn)一數(shù)據(jù)傳送算術(shù)運(yùn)算、環(huán)程序結(jié)構(gòu)1、實(shí)驗(yàn)?zāi)康腶)熟悉8086匯編語言源程序的框架結(jié)構(gòu),并掌握匯編語言程序的編寫、匯編、連接、執(zhí)行的過程,并利用urboDebugger調(diào)試匯編程序。b)熟悉8086指令系統(tǒng)的數(shù)據(jù)傳送指令,掌握尋址方式。c)熟悉8086指令系統(tǒng)的算術(shù)運(yùn)算指令握循環(huán)結(jié)構(gòu)匯編語言程序的編制。2、實(shí)驗(yàn)內(nèi)容教材P121,第14、15題。教材P195,第6題。教材P196,第12題。3、具體實(shí)驗(yàn)第一題P121,第4題)設(shè)有兩個(gè)8個(gè)字節(jié)長的BCD碼數(shù)據(jù)BCD1及BCD2。BCD1數(shù)以1000H為首地址在內(nèi)存中順序存放;BCD2數(shù)以2000H為首地址在內(nèi)存中順序存放。要求相加后結(jié)果順序存放在以2000H為首地址的內(nèi)存區(qū)設(shè)結(jié)果BCD數(shù)仍不超過8個(gè)字節(jié)長)。a)實(shí)驗(yàn)原理考慮兩個(gè)8個(gè)字節(jié)長的BCD碼相加先根據(jù)地址要求將數(shù)據(jù)放在對應(yīng)的地址單元中然后做加法BCD碼相加要用到調(diào)整指令,結(jié)果才為正確的BCD數(shù)b)程序框圖
c)程序源代碼DATASORG1000HDB起始地址為ORG2000HDB11H,12H,13H,14H,15H,16H,17H,18H;起地址為2000HDATASENDSSEGMENTCS:CODES,DS:DATASSTART:DS,AXBX,0CX,8;設(shè)置循環(huán)次數(shù)次CLC;清進(jìn)位F標(biāo)志AGAIN:AL,[BX+1000H]ADC[BX+2000H],AL;結(jié)果放在2開始的單元內(nèi)DAAINCBXLOOPAGAIN;沒完成則轉(zhuǎn)循環(huán)AH,4CHENDSTART運(yùn)行:BCD1DB11H,12H,13H,14H,15H,16H,17H,18HBCD2DB21H,22H,23H,24H,25H,26H,27H,28H結(jié)果如下:DS:2000H為首地址的連續(xù)八個(gè)字節(jié)單元中
第二題P121,15題)設(shè)從2000H為首地址的內(nèi)存中放著個(gè)帶符號的字節(jié)數(shù)據(jù)編“找出其中最大的數(shù),并存入2000H單元中“的程序。a)實(shí)驗(yàn)原理首先把十個(gè)帶符號數(shù)放在要求的的存儲單元中然后再進(jìn)行比較有符號數(shù)的比較用JL,JC,JNG,等指令,首先設(shè)計(jì)一個(gè)最小帶符號數(shù)80H作為比較初值,用2000H單元中的數(shù)分別與其它進(jìn)行比較,若大于則把該單元的數(shù)存入2000H單元,否則不予處理。對于該題我采用的是字符串指令由于是隱含尋址把的數(shù)作為字符串源操作數(shù)其它進(jìn)行一次循環(huán)則依次放入中注意的是當(dāng)CX為10時(shí),DL=80H。b)程序框圖
c)程序源代碼DATASEGMENTORG2000H數(shù)據(jù)存放在開始的單元BCDDBDATAENDSCODESEGMENTCS:CODE,DS:DATASTART:MOVAX,DATASI,2000H地址指針指向單元首地址;設(shè)置最小符號數(shù)L1:LODSBCMPAL,DL較帶符號數(shù)L2;DL)大則跳轉(zhuǎn)LDL,AL;DL指向內(nèi)容小則交換L2:LOOPDS:[2000H],DL;大數(shù)存放在2單元21HCODEENDSEND運(yùn)行:BCDDB結(jié)果為69H
第三題P195,題)試編制一程序,用乘法指令實(shí)現(xiàn)位二進(jìn)制數(shù)與16位二進(jìn)制數(shù)相乘。a)實(shí)驗(yàn)原理首先把被乘數(shù)第八位和高八位分別與乘數(shù)相乘,高八位乘得結(jié)果左移與第八位乘得結(jié)果相加即為結(jié)果。b)程序框圖
c)程序源代碼DATASEGMENTDATAXDW1000H,1000HDATAYDWDATAENDSCODESEGMENTCS:CODE,DS:DATASTART:MOVAX,DATABX,1000HDATAXDI,DATAY
;將把結(jié)果存到000H開始的單元中MULDI[BX],AX元MULDI[BX+2],AXAH,4CHCODEENDSEND運(yùn)行:結(jié)果在DS:1000中
;把低1位相乘,結(jié)果存到AX,DX中;把結(jié)果中低位存到BX對應(yīng)的存儲單元;把結(jié)果中高位存BX+2對應(yīng)的存儲單;計(jì)算被乘數(shù)高6位相乘的結(jié)果;把兩次相乘結(jié)果對應(yīng)(把第二次的結(jié)果;左位)相加,最后結(jié)果存在了[BX]到
第四題P196,12)設(shè)有兩個(gè)等字長字節(jié)型字符串試編寫一匯編程序比較它們是否完全相等,若相等則將字符Y送入AL中,否則將字符送入字符中。a)程序框圖
b)程序源代碼DATASEGMENTDB'CZX0','$'DB,DATAENDSCODESEGMENTCS:CODE,DS:DATASTART:MOVAX,DATACLDLEA;字符串1首地址LEASI,STRX;取字符串2首地址CALLL1DL,AL;顯示結(jié)果AH,02H21HL1PROCCMPSBSTRX,STRY;比較兩個(gè)字符串JNZ'Y'
;不相等則跳轉(zhuǎn)到A;相等則將Y送L
JMPRA:'N'L1ENDPCODEENDSEND運(yùn)行:當(dāng)字符串為STRX
DBDB
;不相等則將Y送AL;比較結(jié)束返回程序'CZX0''$''CZX1','$'當(dāng)字符串為STRX
DBDB
'CZX0''CZX0'4、實(shí)驗(yàn)中遇到的問題:在剛開始接觸實(shí)驗(yàn)時(shí)感覺非常困難無從下手后來經(jīng)過仔細(xì)認(rèn)真閱讀書上的經(jīng)典程序之后基本能夠?qū)懗鲫P(guān)鍵程序片段再借助輔導(dǎo)書完善了實(shí)驗(yàn)程序內(nèi)容,基本順利地完成了實(shí)驗(yàn)。本次實(shí)驗(yàn)讓我熟悉了匯編語言的實(shí)現(xiàn)步驟和常用的指令系統(tǒng)時(shí)也學(xué)會了利用DEBUG調(diào)試匯編程序。
實(shí)驗(yàn)二匯編語言序設(shè)計(jì)1、實(shí)驗(yàn)?zāi)康腶)練習(xí)編寫較復(fù)雜匯編語言程序時(shí)程序框圖的繪制。b)子程序定義與調(diào)用,參數(shù)傳遞的方法。c)了解宏指令的定義與調(diào)用,并與子程序定義與調(diào)用進(jìn)行比較。d)掌握利用軟件中斷實(shí)現(xiàn)DOS系統(tǒng)調(diào)用的方法。2、具體實(shí)驗(yàn)第一題教材4章,第8題,設(shè)n=10。即試編制程序,找出前十個(gè)質(zhì)數(shù)。提示編寫一個(gè)判斷某數(shù)是否質(zhì)數(shù)的子程序主程序調(diào)用該子程序?qū)樞蜻f增的自然數(shù)進(jìn)行是否質(zhì)數(shù)的判斷,若是則存放在質(zhì)數(shù)緩沖區(qū)中,直到找到10個(gè)質(zhì)數(shù),程序結(jié)束。判斷一個(gè)數(shù)N是否是質(zhì)數(shù)的一種算法是:將N序與2~N-1數(shù)相除,若每次除法的余數(shù)均不等于0,則該數(shù)是質(zhì)數(shù)。注意:8086的除法支持雙字除以字,字除以字節(jié),本題中可以選擇字除以字節(jié)。正確結(jié)果為:02,03,05,07,0B,0D,11,13,17,1D(十六進(jìn)制數(shù))a)實(shí)驗(yàn)原理找出前十個(gè)質(zhì)數(shù),質(zhì)數(shù)只能被1其自身整除,但考慮到如果從2始一個(gè)一個(gè)的除的算法效率太低很多已經(jīng)是合數(shù)的作為除數(shù)是浪費(fèi)的故該算法用每一個(gè)數(shù)除以已經(jīng)判斷出來的質(zhì)數(shù)(均小于該數(shù)如果不能整除則說明該數(shù)是質(zhì)數(shù),能整除說明該數(shù)不是質(zhì)數(shù),繼續(xù)進(jìn)行下一個(gè)判斷。
b)程序框圖c)程序源代碼N10POSAH,9HENDMNUMTOSTRMACRONUM,POSAX,NUMSI,OFFSETSI,LENGTH;從最后開不考慮字符串結(jié)束符"$")存放字符
CALLWORDTOSTRENDMDATASNUMBERDWNDUPLASTDWNUMNOWDWfirstprimearefollows:",0DH,0AH,"$""PRESSANY,6DUP(""),STRPRIMEDUP"""$"HCHH"$"DATASENDSSTACKSSEGMENTSTACKSSEGMENTCS:CODES,DS:DATAS,SS:STACKS,ES:DATASSTART:DS,AXES,AXAX,STACKSSS,AXSI,OFFSETNUMBER數(shù)數(shù)組首地址BX,0NUMBER[SI+BX],2;第一個(gè)質(zhì)數(shù)為LAST,0;最后一個(gè)質(zhì)數(shù)地址;第一個(gè)質(zhì)數(shù)是;質(zhì)數(shù)計(jì)數(shù)INCDX;往后查找;CX,0;判定DX中數(shù)據(jù)是否是質(zhì)數(shù)DX;保存現(xiàn)場防止除法運(yùn)算帶來的改變AX,DXDX,0SI,CX;求出作為除數(shù)的質(zhì)數(shù)的相對位移
BX,NUMBER[SI];從質(zhì)數(shù)集里讀取質(zhì)數(shù)ADCSI,CX還原IINCCXINCCX;cx自加2DIVBX數(shù)CMPDXJZ;除盡則表示該數(shù)不是質(zhì)數(shù),繼續(xù)查找下一個(gè)CMPLOOP2;如果除小于被除數(shù),則增大除數(shù)繼續(xù)做除法相當(dāng)于指針往后移動一個(gè)字的單位長度;將找到的質(zhì)數(shù)存入數(shù)組,基址變址尋址;質(zhì)數(shù)計(jì)數(shù)加CMPNUMNOW,N;得到個(gè)質(zhì)數(shù)則結(jié)束JNZLOOP1;否則繼續(xù)查找;輸出結(jié)果STR1DISPLAY:NUMTOSTRNUMNOW,STRNOAX,DS:[DI]NUMTOSTRAX,STRPRIMESTRPRIME輸出質(zhì)數(shù)HCHHINCDIINCDICMPNUMNOW,NJBE;等待鍵盤輸入,使程序不會立即退出STR3AH,08HAH,4CH;子程序;WORDTOSTR;將AX中數(shù)字轉(zhuǎn)換成個(gè)字符的字符串,存入I為首地址的存儲單元里
WORDTOSTRPROCFARSICX,5;設(shè)置循環(huán)次數(shù)NEXTDIGIT:DX,0BX,10CMPAX,0JZBLANKDIVBXDX,30H將得到的每位數(shù)字轉(zhuǎn)換為對應(yīng)的ASCII碼[SI],DLDECDX,0LOOPNEXTDIGITSICMPBYTEPTRJZZERORETMOVBYTEPTR[SI],30HRETBLANK:JMPSETCHARWORDTOSTRENDSTART運(yùn)行結(jié)果:
第二題編寫一個(gè)匯編程序,實(shí)現(xiàn)N):N!=N*(N-1)*(N-2)*……*1(設(shè)N=跟蹤IP變化,觀察堆棧的變化,理解子程序遞歸調(diào)用中程序執(zhí)行的流程,以及幀信息的組成意BP變化)a)程序框圖b)程序源代碼DATASEGMENT
DW?SAVE_BPDWDW2DUP?)NDWSAVE_NDWRESULT_ADDRDWNFACTDB6DUP(?)DATASTACKTOP
ENDSSEGMENTWORDDW128(0)
STACKSTART:
ENDSSEGMENTSP,TOPAX,DATABX,OFFSETRESULT
BXDONE:RETURN:
CALLFARAH,4CHFARBPBP,SPAXRESULT_ADDR+SAVE_NCMPAX,0JEDECAXAXCALLFARRESULT_ADDRAX,[BX]MUL[BP]+JMPRETURNAX,1[BX],AXAXBXBPRETENDP
查看指令
ENDSENDSTART觀察IP的變化:第一次變化0017--0020第二、三、四次跳變相同0037--0020
共調(diào)用了四次FACT函數(shù)IP跳轉(zhuǎn)可用如下圖表示:FACT主程序觀察堆棧情況:與書中P165頁情況相符合3階階乘堆棧示意圖
第三題編寫一個(gè)通用多字節(jié)數(shù)相加的宏定義并調(diào)用它實(shí)現(xiàn)多字節(jié)數(shù)的加法注意觀察匯編時(shí)宏調(diào)用被展開的情況。a)實(shí)驗(yàn)原理多字節(jié)數(shù)的加法就是一個(gè)迭代過程。運(yùn)用調(diào)用多字節(jié)相加的宏定義,可以很簡單的實(shí)現(xiàn)加法宏定義中運(yùn)用間接尋址用進(jìn)位標(biāo)志記錄每字節(jié)的進(jìn)位并在下一字節(jié)的加法中加上進(jìn)位標(biāo)志,以達(dá)到多字節(jié)數(shù)加法的運(yùn)算效果。b)程序框圖c)程序源代碼N;定義多字節(jié)的字節(jié)數(shù)M1,M2,MSI,OFFSETM1;讀取數(shù)字的首地址CX,MCLCL1:AL,[DI]
ADC[SI],AL;當(dāng)前位的兩個(gè)數(shù)相加,存在M1的地址中INCINCDI;兩個(gè)數(shù)的地址均自加,取下一個(gè)數(shù)進(jìn)行運(yùn)算LOOPL1ENDMDATASMB1DB(01H)MB2DB(01H)DATASENDSSEGMENTCS:CODES,DS:DATASSTART:DS,AXMB1,MB2,N用宏定義計(jì)算多直接數(shù)AH,4CHENDSTART運(yùn)行結(jié)果:
宏展開
第四題編寫程序:屏幕顯示Password從鍵盤讀入字符串,并比較這個(gè)字符串與程序內(nèi)部設(shè)定的字符串二者相同則顯Hello注意:要求鍵盤輸入字符不能直接回顯在顯示器上,而要用號代替。a)實(shí)驗(yàn)原理該程序運(yùn)用了中斷程序完成了密碼程序的輸入與輸出先把首次輸入的密碼和第二次確認(rèn)的密碼分別存在PASSWORD1PASSWORD2中,并用A與B記錄PASSWORD1與PASSWORD2的長度,之后用判斷兩次輸入是否相同,并用A與B中比較小的與C比較判斷是否結(jié)束循環(huán),按照對照結(jié)果選擇輸出。b)程序框圖
開始顯示”Pleaseinputpassword:”不帶回顯輸入字符,保存為password1
顯示*N回車?Y顯示”Pleaseconfirmthepassword:不帶回顯輸入字符,保存為password2
顯示*N回車?Y比較兩次輸入長度并取較小長度N小于較小長度YY比較?N顯示”Sorry!顯示”Hello!
c)程序源代碼CRLFMACROAH,02HDL,0DHAH,02HDL,0AHENDMDATASEGMENTPASSWORD1'chang'密碼設(shè)置PASSWORD220DUP(?)ADB0;標(biāo)記長度B0;記password2的長度DDB0;標(biāo)記比較的次數(shù)DB'Pleaseinputthe,0DH,0AH,"$";單引號雙引號分析多20個(gè)字DB'Pleasethe,0DH,0AH,;DB'HELLO!THEPASSWORDIS,0DH,0AH,;DBPASSWORDISWRONG'0DH,0AH,'$';DATACODESEGMENTSTART:DS,AXAH,09HLEADX,STRING121H;讀取tring1的地址,用中斷顯示出來LEAINPUT1:AH,08H21H;讀取password1的地址,用中斷讀取用戶輸入的密碼并存入CMPJZNEXT1[SI],ALINCINCADL,'*'AH,02H21H;用戶每輸入一個(gè)數(shù)字活字符,屏幕顯示*LOOPINPUT1NEXT1:
AL,[SI],ALCRLFAH,09HLEADX,STRING2;取s地址,用中斷顯示出來LEAINPUT2:AH,08H21H;讀取password2的地址,用中斷讀取用戶輸入的密碼并存入CMPJZNEXT2[SI],ALINCINCBDL,'*'AH,02H21H;用戶每輸入一個(gè)數(shù)字活字符,屏幕顯示*LOOPINPUT2NEXT2:LEALEAAL,ACMPAL,BJBE;比較A與的大小JMPPANDUAN:;取AB中較小的存到B中
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)師事跡范文(5篇)
- 《環(huán)保節(jié)能培訓(xùn)》課件
- 辦公室產(chǎn)品展會市場分析報(bào)告
- 辦公環(huán)境中小學(xué)語文學(xué)習(xí)的價(jià)值
- 《次施工準(zhǔn)備工作》課件
- 農(nóng)業(yè)科技系統(tǒng)在醫(yī)療健康領(lǐng)域的創(chuàng)新應(yīng)用
- 2025建筑工程分包合同
- 2025附條件贈與合同 標(biāo)準(zhǔn)版模板全
- 2025中國銀行勞動合同范本
- 卷煙配件行業(yè)深度研究報(bào)告
- 2024年安徽省廣播電視行業(yè)職業(yè)技能大賽(有線廣播電視機(jī)線員)考試題庫(含答案)
- 山東省濟(jì)南市濟(jì)陽區(qū)三校聯(lián)考2024-2025學(xué)年八年級上學(xué)期12月月考語文試題
- 糖尿病酮酸癥中毒
- 《玉米種植技術(shù)》課件
- 2023年聊城市人民醫(yī)院招聘備案制工作人員筆試真題
- Unit 6 Food Lesson 1(說課稿)-2024-2025學(xué)年人教精通版(2024)英語三年級上冊
- 東北師大附屬中學(xué)2025屆高一物理第一學(xué)期期末質(zhì)量檢測試題含解析
- 收費(fèi)站微笑服務(wù)培訓(xùn)
- GB/T 44570-2024塑料制品聚碳酸酯板材
- 雨的形成課件教學(xué)課件
- 金蛇納瑞2025年公司年會通知模板
評論
0/150
提交評論