微機實驗報告_第1頁
微機實驗報告_第2頁
微機實驗報告_第3頁
微機實驗報告_第4頁
微機實驗報告_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

實驗11.實驗?zāi)康募耙螅阂阎獢?shù)組A包含15個互不相等的整數(shù),數(shù)組B包含20個互不相等的整數(shù)。試編制一程序,把既在A中又在B中出現(xiàn)的整數(shù)存放于數(shù)組C中。2.實驗步驟:題目要求將A和B中同時出現(xiàn)的數(shù)字放入C中,則需要兩個嵌套的循環(huán),外層循環(huán)做15次,遍歷A中所有的數(shù)字;而A中的每一個數(shù)字,與B中的數(shù)字逐一進行比較,是一個最多做20次得內(nèi)層循環(huán),要么找到相同的數(shù)跳回外層循環(huán),要么20個全比較了也沒找到相同的數(shù)字,然后跳回外層循環(huán)。每找到一個相同的數(shù),將之放入C中。3.實驗內(nèi)容:流程圖:代碼:……adw15dup(?)bdw20dup(?)cdw15dup(?)……movsi,0;si為數(shù)組A的指針movbx,0;bx為數(shù)組C的指針movcx,15loop1:movdi,0;di為數(shù)組B的指針pushcxmovcx,20movax,a[si]loop2:cmpb[di],axjnenomovc[bx],axaddbx,2jmpnextno:adddi,2looploop2next:addsi,2popcxlooploop14.實驗結(jié)果:A、B、C三個數(shù)組初始化為:ADB31H,32H,33H,34H,35H,36H,37H,38H,39H,40H,41H,42H,43H,44H,45HBDB31H,32H,33H,34H,35H,46H,47H,48H,49H,50H,51H,52H,53H,54H,55H,56H,57H,58H,59H,60HTDB15DUP('*'),'$'5.實驗總結(jié)分析:使用多重循環(huán)可以解決更為復(fù)雜的問題。B中找出是否有相同的數(shù),當(dāng)然需要將A中的那個數(shù)逐一與B中的數(shù)進行比較,這里需要一個循環(huán)。而要將所有相同數(shù)找出,則必定要遍歷A,這里又需要一個循環(huán)。所以,這個題目必定是一個嵌套的雙重循環(huán)。實驗21.實驗?zāi)康募耙螅航y(tǒng)計BLOCK1和BLOCK2兩個單元數(shù)據(jù)中,對應(yīng)位不同的有多少位。2.流程圖:3.代碼:DATASSEGMENT

BLOCK1DB'123456789'

BLOCK2DB'987456123'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENT

ASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATAS

MOVDS,AX

MOVBX,0

MOVCX,9

LEASI,BLOCK1

LEADI,BLOCK2

LOP:LODSB

CMPAL,[DI]

JE

NEXT

INCBXNEXT:INCDI

DECCL

JNZLOP

MOVAH,2ADDBL,30H

MOVDL,BL

INT21H;

MOVAH,4CH

INT21HCODESENDS

ENDSTART5.運行結(jié)果:66.實驗心得與體會實驗三:實驗?zāi)康募耙螅壕帉懸粋€匯編語言程序,要求從鍵盤接收一個四位16進制數(shù),并顯示出與它等值的二進制數(shù)實驗設(shè)計分析將接收到的數(shù)轉(zhuǎn)成16進制數(shù),將這個數(shù)保存在一個通用寄存器中(如AX),然后對AX循環(huán)做16次SHL,由carry標(biāo)志寄存器的狀態(tài)來判斷顯示0/1。十六位二進制數(shù)保存在BX中,對BX中的二進制數(shù)循環(huán)左移,每次移一位,然后把BL中的二進制數(shù)送給AL,再對AL的前7位進行屏蔽,只留一位原本是最高位的那位二進制數(shù),它要么為1,要么為0。然而把AL中的這位二進制數(shù)轉(zhuǎn)換為十進制數(shù),并且輸出,由于AL高7位都為0,所以轉(zhuǎn)換位十進制后,然后要么為1,要么為0,并且與那位二進制數(shù)相對應(yīng)。這樣循環(huán)做16次,就把整個BX中的二進制數(shù)都顯示出來。流程圖:開始開始結(jié)束循環(huán)計數(shù)器=0?顯示二進制數(shù)轉(zhuǎn)換為十進制輸入一個四位的十六進制數(shù)BX循環(huán)邏輯左移一個數(shù)位初始化循環(huán)計數(shù)值結(jié)束循環(huán)計數(shù)器=0?顯示二進制數(shù)轉(zhuǎn)換為十進制輸入一個四位的十六進制數(shù)BX循環(huán)邏輯左移一個數(shù)位初始化循環(huán)計數(shù)值>9嗎?>9嗎? N NY代碼:DATASEGMENTSTR1DB'INPUTAHEXNUM:$'

HEXDB5;計劃輸入的字符個數(shù)(含回車符)

NNNDB0;存放實際輸入的字符個數(shù)

DB5DUP(?)

BINDW?;輸入數(shù)字的二進制形式的存放單元

ERRDB0AH,0DH,'ERROR!'

DB0AH,0DH,'IHAVENOTIMETOPLAYWITHYOU!$'

STR2DB13,10,'BINARYIS:$'

DATAENDS

;--------------------------------------------

STACKSEGMENTPARASTACK'STACK'

DB100DUP(?)

STACKENDS

;--------------------------------------------

CODESEGMENT

ASSUMECS:CODE,SS:STACK,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AXLEADX,STR1;'INPUTAHEXNUM'

MOVAH,9;顯示字符串

INT21HLEADX,HEX

MOVAH,10;等著輸入四位HEX數(shù)

INT21H

;---------------------------------------

;下面進行轉(zhuǎn)換MOVBIN,0;先把二進制數(shù)字單元清零LEASI,HEX+2;取輸入字符串的首地址

MOVCH,NNN;取輸入字符的個數(shù),用來控制循環(huán)處理的次數(shù)CONV:

MOVBL,[SI];取來一個字符

CMPBL,0DH;和回車符進行比較

JZEND0;是,即結(jié)束CMPBL,'0'

JBERROR;小于'0'轉(zhuǎn)移

CMPBL,'F'

JAERROR;大于'F'轉(zhuǎn)移CMPBL,'9'

JNAA2B;不大于'9',就去變換

CMPBL,'A'

JNBA2B;不小于'A',就去變換JMPERROR;其它符號都是錯誤

;---------------------------------------

A2B:

SUBBL,30H;ASC-->BIN

CMPBL,10

JBA2B_END

SUBBL,07H;ASC-->BIN

A2B_END:

;---------------------------------------

MOVBH,0;弄成16位數(shù)PUSHCXMOVAX,BIN;把原來的數(shù)字乘以16

MOVCX,16

MULCX

ADDAX,BX;加上新輸入的

MOVBIN,AX;存結(jié)果,這就是二進制數(shù)INCSIPOPCX

DECCH;處理次數(shù)減一

JNZCONV;非零轉(zhuǎn)移

;---------------------------------------

DISP:

LEADX,STR2;'BINARYIS:$'

MOVAH,9;顯示字符串

INT21H

;---------------------------------------

MOVAX,BIN;取來數(shù)字

MOVCX,16;顯示16位數(shù)

DDDD:

MOVDL,'0';先計劃顯示0

TESTAX,8000H;測試最高位

JZDDD1

INCDL;非0就顯示1

DDD1:

PUSHAX

MOVAH,2;顯示DL中的ASCII碼

INT21H

POPAXSHLAX,1;左移

LOOPDDDD;CX-1,非零轉(zhuǎn)移JMPEND0;16位顯示完畢,轉(zhuǎn)到結(jié)束

;---------------------------------------

ERROR:

LEADX,ERR

MOVAH,09H;錯誤信息提示

INT21H

;---------------------------------------

END0:

MOVAH,4CH;返回DOS

INT21H

CODEENDS

;---------------------------------------

ENDSTART5運行結(jié)果十六進制轉(zhuǎn)化為二進制:實驗的心得體會:我的收獲是對進制數(shù)轉(zhuǎn)換的原理有了較為清楚地理解,可以解釋原來不懂得程序,對各種寄存器的跳轉(zhuǎn)有了一定的了解,同時認(rèn)識到由于寄存器的數(shù)量有限,我們必須用其他的方式來解決,同時可以解決有時候寄存器不夠的情況,對應(yīng)進一步學(xué)習(xí)匯編有了一定的推動作用,匯編基礎(chǔ)有了一定的提高。通過這個課程設(shè)計,我對匯編有了一定的體會,因為匯編語言是可以直接和機器語言聯(lián)系。從而使得匯編語言的利用率很高,處理相同的程序比高級語言速度快很多,但是他操作也沒有高級語言那么方便,但是總體來說,匯編還是很強大的,他幫助我們很深的理解原來不懂得程序。實驗4實驗?zāi)康募耙螅壕帉懗绦?,將一串凌亂的字母按從小到大的順序排列流程圖:代碼:DATASSEGMENTDATADB'gfed$'DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVSI,1LOP1:MOVDI,SIINCDIMOVAL,DATA[SI-1]LOP2:CMPAL,DATA[DI-1]JBELOP3XCHGDATA[DI-1],ALMOVDATA[SI-1],ALLOP3:INCDICMPDI,4JBELOP2INCSICMPSI,3JBELOP1SHOW:MOVAH,9MOVDX,OFFSETDATAINT21HMOVAH,4CHINT21HCODESENDSENDSTART實驗五實驗要求:編寫一個程序,要求比較兩個字符串STRING1和STRING2所含字符是否完全相同,若相同則顯示‘MATCH’,若不相同則顯示‘NOMATCH’。流程圖:開開始提示輸入第一個字符串提示輸入第二個字符串輸入第一個字符串輸入第二個字符串設(shè)置串比較指令的初值串比較判斷是否相同NOYESJZ顯示DOS調(diào)用NOMATCHMATCHEXIT代碼:DSEG SEGMENTSTRING1 DB‘Iamastudent.’STRING2 DB‘Iamastudent!’YES DB‘MATCH’,0DH,0AH,‘$’NO DB‘NOMATCH’,0DH,0AH,‘$’DSEG ENDS;--------------------------------------------------------------------------CSEG SEGMENTMAIN PROC FARASSUMECS:CSEG,DS:DSEG,ES:DSEGSTART: PUSH DS ;設(shè)置返回DOSSUB AX,AXPUSH AXMOV AX,DSEGMOV DS,AX ;給DS賦值MOV ES,AX ;給ES賦值;BEGIN: LEA SI,STRING1 ;設(shè)置串比較指令的初值LEA DI,STRING2CLDMOV CX,STRING2-STRING1REPE CMPSB ;串比較JNE DISPNOLEA DX,YES ;顯示MATCHJMP DISPLAYDISPNO: LEA DX,NO ;顯示NOMATCHDISPLAY: MOV AH,9 ;顯示一個字符串的DOS調(diào)用INT 21HRETMAIN ENDPCSEG ENDS ;以上定義代碼段;--------------------------------------------------------------------------END START實驗六實驗?zāi)康募耙螅壕幊虖逆I盤輸入一個二位十進制的月份數(shù)(01~12),然后顯示出相應(yīng)的英文縮寫名感受和學(xué)習(xí)子程序的定義與設(shè)計方法,完成相應(yīng)程序設(shè)計學(xué)習(xí)模塊化程序的基本設(shè)計方法進一步感受和學(xué)習(xí)分支、循環(huán)等基本程序結(jié)構(gòu)進一步感受和學(xué)習(xí)匯編語言程序的設(shè)計方法、語法和技巧流程圖3.代碼DATASSEGMENTmonthDB'Jan'DB'Feb'DB'Mar'DB'Apr'DB'May'DB'Jun'DB'Jul'DB'Agu'DB'Sep'DB'Oct'DB'Nov'DB'Dec'string1DB0DH,0AH,'Inputthemonthnumble(PressENTERtoquit):$'BUF1DB0DH,0AH,10DUP(0)BUF2DB81,?,80DUP(?)DATASENDSSTACKSSEGMENTDB100DUP(0)STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMOVES,AXLOP1:CALLINPUTCMP[BUF2+2],0DHJZEXITCALLSUB1CALLOUTPUTJMPLOP1EXIT:MOVAH,4CHINT21HINP

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論