微機(jī)原理程序設(shè)計(jì)_第1頁
微機(jī)原理程序設(shè)計(jì)_第2頁
微機(jī)原理程序設(shè)計(jì)_第3頁
微機(jī)原理程序設(shè)計(jì)_第4頁
微機(jī)原理程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

XX理工大學(xué)微機(jī)原理程序設(shè)計(jì)

實(shí)驗(yàn)一

實(shí)驗(yàn)要求:

試編寫一個(gè)程序,要求比擬數(shù)組ARRAY中的三個(gè)16位補(bǔ)碼數(shù),并根據(jù)比擬結(jié)果在顯示終

端上顯示如卜信息:

(1)如果三個(gè)數(shù)都不相等那么顯示0;

(2)如果三個(gè)數(shù)有兩個(gè)相等那么顯示1;

(3)如果三個(gè)數(shù)都相等那么顯示2。

程序流程圖:

程序清單:

DATASEGMENT

ARRAYDW1,2,3

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVAX,ARRAY

MOVBX,ARRAY+2

MOVCX,ARRAY+4

CMPAX,BX

JE

CMPBX,CX

JELI

CMPAX,CX

JELI

MOVDL,30H

JMPEXIT

L:CMPBX,CX

JNELI

MOVDL,32H

JMPEXIT

LI:MOVDL,31H

EXIT:MOVAH,2

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

運(yùn)行結(jié)果:

ARRAY中二個(gè)數(shù)互不不相等:

圈DOSBox0.74,Cpuspeed:3000cycles.Frameskip0,Program:DWTEMP

0

Pressanykeytocontinue

ARRAY中三個(gè)數(shù)有兩個(gè)相等:

圖DOSBox0.74,Cpuspeed:3000cycles,Frameskip0,Prograrr

1

Pressanykeytocontinue_

ARRAY中三個(gè)數(shù)都相等:

圜DOSBox0.74,Cpuspeed;3000cycles.Frameskip0,Program

Pressanykeytocontinue_

實(shí)驗(yàn)二

實(shí)驗(yàn)要求:

從鍵盤輸入一系列字符[以回車符結(jié)束),并按字母、數(shù)字及其它字符分類計(jì)數(shù),最后顯示

出這三類計(jì)數(shù)結(jié)果。

程序流程圖:

程序清單:

DATASEGMENT

COUNT_OF_LETTERDB'thenumberofletteris

COUNTOFNUMBERDB,thenumberofnumberis

COUNTOFCHARACTERDB'thenumberofcharateris

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVBH,()

MOVBL,0

MOVCL,0

NEXT:

MOVAH,1

INT21H

CMPAL,0DH

JEEXIT

CMPAL,30H

JBCOUT_OF_CHARATER_ADD

CMPAL,39H

JBECOUT_OF_NUMBER_ADD

CMPAL,41H

JBCOUT_OF_CHARATER_ADD

CMPAL,5AH

JBECOUNT_OF_LETTER_ADD

CMPAL,61H

JBCOUT_OF_CHARATER_ADD

CMPAL,7AH

JBECOUNT_OF_LETTER_ADD

COUT_OF_CHARATER_ADD:

INCCL

JMPNEXT

COUT_OF_NUMBER_ADD:

INCBL

JMPNEXT

COUNT_OF_LETTER_ADD:

INCBH

JMPNEXT

EXIT:

CALLCRLF

LEADX,COUNT_OF_LETTER

MOVAH,09

INT21H

MOVAL,BH

CALLBIN_DEC

CALLCRLF

LEADX,COUNT_OF_NUMBER

MOVAH,09

INT21H

MOVAL,BL

CALLBIN_DEC

CALLCRLF

LEADX,COUNT_OF_CHARACTER

MOVAH,09

INT21H

MOVAL,CL

CALLBIN_DEC

CALLCRLF

RET

CRLFPROCNEAR

MOVAH,02

MOVDL,0DH

INT21H

MOVAH,02

MOVDL,()AH

INT21H

RET

CRLFENDP

BIN_DECPROCNEAR

PUSHBX

PUSHCX

ANDAX,()()FFH

MOVCX,0

MOVBX,0

MOVDLJO

ROTATE:

DIVDL

MOVBL,AH

ANDAX,()()FFH

PUSHBX

INCCX

CMPAX,10

JAEROTATE

MOVBX,AX

PUSHBX

INCCX

CONTINUE:

POPBX

ADDBL,30H

MOVDL,BL

MOVAH,()2H

INT21H

LOOPCONTINUE

POPCX

POPBX

RET

BIN_DECENDP

CODEENDS

ENDSTART

運(yùn)行結(jié)果:

出C:\WINNT\system32\cmd.exe

ajskjklkn65682131,;'?/;'09

thenumberofletteris08

thenumberofnumberis08

thenumbero£charactei*

Pressanykeytocontinue

實(shí)驗(yàn)三

實(shí)驗(yàn)要求:

假設(shè)已編制好五個(gè)歌曲程序,它們的段地址和偏移地址存放在數(shù)據(jù)段的跳轉(zhuǎn)表SONGLIST

中。試編一程序,根據(jù)從鍵盤輸入的歌曲編號(hào)1?5,轉(zhuǎn)去執(zhí)行五個(gè)歌曲程序中的一個(gè)。

程序流程圖:

結(jié)束

程序清單:

DATASEGMENT

SONGLISTDWMUSIC1,MUS1C2,MUSIC3,MUSIC4,MUSIC5

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

READLIST:

MOVAH,1

INT21H

SUBAL,'O'

CMPAL,0

JEEXIT

CMPAL,5

JAREADLIST

DECAL

MOVBX,0

MOVBL,AL

ADDBX,BX

JMPSONGLISTfBX]

JMPREADLIST

MUSIC1:

MOVDL,T

MOVAH,2

INT21H

JMPEXIT

MUSIC2:

MOVDL,2

MOVAH,2

INT21H

JMPEXIT

MUSIC3:

MOVDL,3

MOVAH,2

INT21H

JMPEXIT

MUSIC4:

MOVDL,4

MOVAH,2

INT21H

JMPEXIT

MUSIC5:

MOVDL,5

MOVAH,2

INT21H

JMPEXIT

EXIT:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

運(yùn)行結(jié)果:

叵C:\WINNT\system32\cmd.exe

Pressanykeytocontinue

回C:\WINNT\system32\cmd.exe

33

Pressanykeytocontinue

實(shí)驗(yàn)四

實(shí)驗(yàn)要求:

試編寫一個(gè)程序,從鍵盤接?(攵一個(gè)個(gè)位數(shù)N,然后響鈴N次。(響鈴的ASCH碼為07H)。

程序流程圖:

程序清單:

DATASEGMENT

TIPDB'PLEASEINPUTANUMBER:',$

DATAENDS

CODESSEGMENT

ASSUMECS:CODES,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,TIP

MOVAH,09H

INT21H

MOVAH,01H

INT21H

ANDAX,01H

MOVCX,AX

BE:MOVDL,07H

MOVAH,02H

INT21H

LOOPBE

CODESENDS

ENDSTART

運(yùn)行結(jié)果■

C:\WINNT\system32\cmd.exe

PLEASEINPUTANUMBER:

輸入數(shù)字后聽到對(duì)應(yīng)次數(shù)的響鈴

實(shí)驗(yàn)五

實(shí)驗(yàn)要求:

從鍵盤輸入一系列以$為結(jié)束符的字符串,然后對(duì)其中的非數(shù)字字符計(jì)數(shù),并顯示計(jì)數(shù)結(jié)

果。

程序流程圖:

I開始

程序清單:

DATASEGMENT

SIDBODH,OAH;PLEASEINPUT:$'

S2DBODH,OAH;TOTALNON_DIGITALARE:$*

NUMDB0

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

LEADX,S1

MOVAH,9

1NT2IH

NEXT:

MOVAH,01

INT21H

CMPAL;$'

JEDOWN

CMPAL;0'

JBNO09

CMPAL,9

JANO09

JMPNEXT

NO09:

INCNUM

JMPNEXT

DOWN:

LEADX,S2

MOVAH,9

INT21H

MOVAL,NUM

MOVAH,()

MOVDLJOO

DIVDL

CALLDISP_P

MOVAL,AH

MOVAH,0

MOVDLJO

DIVDL

CALLDISP_P

XCHGAH,AL

CALLDISP_P

RET

DISP_PPROCNEAR

PUSHAX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

POPAX

RET

DISP_PENDP

CODEENDS

ENDSTART

運(yùn)行結(jié)果:

Pleaseinput:BJKHG6546872$

Totalnon_digitalare:005

Pleaseinput:

實(shí)驗(yàn)六

實(shí)驗(yàn)要求:

試編制一個(gè)程序,把AX中存放的16進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼,并將對(duì)應(yīng)的ASCII碼依次

存放在MEM數(shù)組中的四個(gè)字節(jié)中。例如:當(dāng)(AX)=2A49H時(shí),程序執(zhí)行完后,MEM

中的四個(gè)字節(jié)的內(nèi)容為39H,34H,41H,32H。

程序流程圖:

宏定義

輸入一個(gè)16進(jìn)制數(shù)并送給AX

將AX中數(shù)轉(zhuǎn)換為ASCII碼形式

將各ASCH碼由低位依次送給MEM四個(gè)字節(jié)

顯示MEM中的內(nèi)容

程序清單:

DATASEGMENT

MEM4DUP(?)

NDW2A49H

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

BEGIN:

MOVCH,4

MOVCL,4

MOVAX,N

LEABX,MEM

ROTATE:

MOVDL,AL

ANDDL,0FH

ADDDL,30H

CMPDL,3AH

JLNEXT

ADDDL,07H

NEXT:

MOV[BX],DL

INCBX

RORAX,CL

DECCH

JNZROTATE

RET

CODEENDS

ENDSTART

運(yùn)行結(jié)果:

實(shí)驗(yàn)七

實(shí)驗(yàn)要求;

設(shè)有十個(gè)學(xué)生的成績分別是76,69,84,90,73,88,99,63,100,80分,試編制一個(gè)

子程序統(tǒng)計(jì)60?69分,70?79分,80?89分,90?99分和100分的人數(shù),分別存放在

S6,S7,S8,S9和S10單元中。

程序流程圖:

程序清單:

DATASEGMENT

RESULTDB()DH,()AH;THERESULT$,

GRADEDW76,69,84,90,73,88,99,63/00,80

S6DB0

S7DB0

S8DB0

S9DB0

S10DB0

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVCX,1()

CALLCOUNT

CALLDISP

MOVAH,1

INT2IH

RET

COUNTPROCNEAR

MOVSI,0

NEXT:

MOVAX,GRADE[SI]

MOVBL,10

DIVBL

MOVBL,AL

MOVBH,0

SUBBX,6

CMPBX,0

JAENEXT1

NEXT1:

INCS6[BX]

ADDSI,2

LOOPNEXT

RET

COUNTENDP

DISPPROCNEAR

LEASI,S6

MOVCX,5

LOOP1:

MOVDX,OFFSETRESULT

MOVAH,9

INT21H

MOVDL,[SI]

ADDDL,30H

MOVAH,2

INT21H

INCSI

LOOPLOOP1

RET

DISPENDP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

運(yùn)行結(jié)果:

C:\WINDOWS\syste?32\c?d.exe

2

theresult2

theresult3

theresult2

theresult1

theresult

實(shí)驗(yàn)八

實(shí)驗(yàn)要求:

編寫一個(gè)子程序嵌套的程序模塊,分別從鍵盤輸入姓名和號(hào)碼(8位),并以一定的格

式顯小出來。

主程序TELLIST:

?顯示提示符INPUTNAME:;

?調(diào)用子程序INPUT.NAME輸入姓名;

?顯示提示符INPUTATELEPHONENUMBER:;

?調(diào)用子程序INPUT_PHONE輸入號(hào)碼;

?調(diào)用子程序PRINT顯示姓名和號(hào)碼。

子程序INPUT_NAME:

?調(diào)用鍵盼輸入子程序GET_CHAR,把輸入的姓名存放在IN_BUFFER緩沖區(qū)中;

?把1N_BUEEEK緩沖區(qū)中的姓名移入輸出行OUT_NAME。

子程序INPUT_PHONE:

?調(diào)用鍵底輸入子程序GET_CHAR,把輸入的號(hào)碼存放在IN_BUFFER緩沖區(qū)中;

?把IN_BUFFER緩沖區(qū)中的號(hào)碼移入輸出行OUT_PIIONEo

子程序PRINT:

顯示姓名及號(hào)碼,格式為:

NAMETELPHONE

XXXXXX

子程序CET_CHAR:

從鍵盤輸入取回車符結(jié)尾的字符串。

程序流程圖:

程序清單:

DATASEGMENT

NO_OF_NAMEDB20

NO_OF_PHONEDB8

INBUFDB20DUP(?)

OUTNAMEDB20DUP(?),$

OUTPHONEDB8DUP(?),$

MESSAGE1DBPLEASEINPUTNAME:;$

MESSAGE2DB'PLEASEINPUTATELEPHONENUMBER:?*'

MESSAGESDB'NAME16DUP(20H);TEL.'J3J0;$'

ERRORMESSAGE1DB'YOUSHOULDINPUT8NUMBERS!,,13,10;$'

ERRORMESSAGE2DB'YOUINPUTAWRONGNUMBER!」3』(),$

FLAGDB?

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVFLAG,()

LEADX,MESSAGE1

MOVAH,09

INT21H

CALLINPUT_NAME

CALLCRLF

LEADX,MESSAGE2

MOVAH,09

INT21H

CALLINPHONE

CALLCRLF

CMPFLAG,1

JEEXIT

CALLPRINTLINE

EXIT:

RET

INPUT.NAMEPROCNEAR

PUSHAX

PUSHDX

PUSHCX

MOVCX,0

MOVCL,NO_OF_NAME

CALLGETCHAR

MOVAX,0

MOVAL,NO_OF_NAME

SUBAX,CX

MOVCX,AX

MOVSl,0

NEXT1:

MOVAL,INBUF[SI]

MOVOUTNAME[SI],AL

INCSI

LOOPNEXT1

POPCX

POPDX

POPAX

RET

INPUT_NAMEENDP

INPHONEPROCNEAR

PUSHAX

PUSHDX

MOVCX,0

MOVCL,NO_OF_PHONE

CALLGETCHAR

CMPCX,0

JNZERROR1

MOVCL,NO_OF_PHONE

MOVSI,0

NEXT2:

MOVAL,INBUF[SI]

CMPAL,30H

JLERROR2

CMPAL,39H

JAERROR2

MOVOUTPHONE[SI],AL

INCSI

LOOPNEXT2

JMPEXIT2

ERROR1:

CALLCRLF

LEADX,ERRORMESSAGE1

MOVAH,09

INT21H

MOVFLAG,1

JMPEXIT2

ERROR2:

CALLCRLF

LEADX,ERRORMESSAGE2

MOVAH,09

INT21H

MOVFLAG,1

JMPEXIT2

EXIT2:

POPDX

POPAX

RET

INPHONEENDP

GETCHARPROCNEAR

PUSHAX

PUSHDX

MOVDI,0

ROTATE:

MOVAH,01

INT21H

CMPAL,0DH

JEEXIT1

MOVINBUF[DI],AL

INCDI

LOOPROTATE

EXIT1:

POPDX

POPAX

RET

GETCHARENDP

CRLFPROCNEAR

PUSHAX

PUSHDX

MOVDL,0DH

MOVAH,2

INT21H

MOVDL,0AH

MOVAH,2

INT21H

POPDX

POPAX

RET

CRLFENDP

PRINTLINEPROCNEAR

PUSHAX

PUSHDX

LEADX,MESSAGES

MOVAH,09

INT21H

LEADX,OUTNAME

MOVAH,09

INT21H

LEADX,OUTPHONE

MOVAH,09

INT21H

POPDX

POPAX

RET

PRINTLINEENDP

CODEENDS

ENDSTART

運(yùn)行結(jié)果:

c'C:\¥IliDO¥S\syste-32\c?d.exe

pleaseinputname:zhlintao

pleaseinputatelephonenumber:12345678

NAMETEL.

zhlintao12345678

Pressanykeytocontinue.

實(shí)驗(yàn)九

實(shí)驗(yàn)要求:

從鍵盤輸入一個(gè)不大于65535的無符號(hào)數(shù),然后把它轉(zhuǎn)換成等值的二進(jìn)制數(shù),最后把該數(shù)

以十六進(jìn)制數(shù)的形式在顯示器上顯示出來。編程實(shí)現(xiàn)。(將有獨(dú)立功能的程序用子程序獨(dú)立

出來)

程序流程圖:

開始

程序清單:

DATASEGMENT

BUF1DB20

DB9

DB2()DUP(?)

BUF2DB20

DB9

DB20DUP(?)

INPUTDB'INPUTS'

OUTPUTDB'OUTPUT*

CTRLDB0DH,0AH,$

SHIDWOAH

IINTDW0

DATAENDS

STACKSEGMENT

DB200DUP(O)

STACKENDS

CODESEGMENT

ASSUMECS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論