西電微機(jī)原理上機(jī)大作業(yè)_第1頁
西電微機(jī)原理上機(jī)大作業(yè)_第2頁
西電微機(jī)原理上機(jī)大作業(yè)_第3頁
西電微機(jī)原理上機(jī)大作業(yè)_第4頁
西電微機(jī)原理上機(jī)大作業(yè)_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一次上機(jī)

一、實(shí)驗(yàn)?zāi)康?/p>

1.熟練掌握8086/8088的各種尋址方式及應(yīng)用。

2.掌握DEBUG調(diào)試程序中的一些常用命令的使用方法,為以后的實(shí)驗(yàn)

打下根底。

二、實(shí)驗(yàn)儀器

586微機(jī)一臺(tái)

三、實(shí)驗(yàn)內(nèi)容

1.關(guān)于數(shù)據(jù)的尋址方式練習(xí)

8086/8088提供多種方式實(shí)現(xiàn)操作數(shù)尋址,大體可分為7種:

a.立即尋址

b.存放器尋址

c.直接尋址

d.存放器間接尋址

e.存放器相對(duì)尋址

f.基址變址尋址

g.基址變址且相對(duì)尋址

掌握8086/8088的這些尋址方式,是學(xué)習(xí)匯編語言編程的關(guān)鍵。因此,

我們編寫了下面的程序段,以數(shù)據(jù)傳送指令為例,列舉了部份尋址方式,請(qǐng)同

學(xué)們按以下要求認(rèn)真完成。

[1]在全屏幕編輯軟件下,建立以下匯編語言源程序:

STACKSEGMENTSTACK

DB0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H,

DR0R8H,0R9H

DBOBAH,OBBH,OBCH,OBDH,OBEH,OB-H

DB10HDUP(OO)

STACKENDS

DATA1SEGMENT

DBOAOH,0A1H,0A2H,0A3H

TABLEDW0A5A4H

DB0A6H,0A7H,0A8H,0A9H,OAAH,OABH

DBOACH,OADH,OAEH,OAFH

DATA1ENDS

DATA2SEGMENT

DBOCOH,OC1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H

DB0C8H,0C9H,OCAH,OCBH,OCCH,OCDH,OCEH,OCFH

DATA2ENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA1,ES:DATA2,SS:STACKSTART:MOVAX,DATA1

MOVDS,AX

MOVAX,DATA2

MOVES,AX

MOVBX,0004H

MOVCX,0005H

MOVBP,0U03H

MOVSI,0002H

MOVDI.0001H

MOVAX,CX;以下指令按后表要求完成

MOVAX,500H

MOVAX,TABLE

MOVAX,ES:[BX]

MOVAX,[BX+05H]

MOVAX,SS:[BX]+03H

MOVAX,TABLE[BX]

MOVAX,07H[BX]

MOVAX,[BP]

MOVAX,TABLE[BP]

MOVAX,08H[BP]

MOVAX,[BP+06H]

MOVAX,DS:[BP+03H]

MOVAX,[BP]+05H

MOVAX,ES:[SI+03H]

MOVAX,IDI+U6H]

MOVAX,[DI]+05H

MOVAX,TABLE[SI]

MOVAX,[SI]

MOVAX,TABLE[DI]

MOVAX,[SI]+05H

MOVAX,[BX][DI+01H]

MOVAX,[BX][SI]+03H

MOVAX,TABLE[BX][SI]

MOVAX,ES:[BX][DI]

MOVAX,[BP][DI+02H]

MOVAX,TABLE[BP][DI]

MOVAX,ES:[BP][SI]

MOVAX,[BP][SI+05H]

MOVAX,03H[BP][DI]

MOVAX,[BP][SI]

MOVAX,[BP+02H][DI+03H]

MOVAX,TABLE[BP+02H][DI+03H]

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

[2]用MASM.EXE宏匯編程序?qū)σ陨显闯绦蜻M(jìn)行匯編,其方法為:

MASM文件名.ASM;回車

此時(shí),如果源程序中無語法錯(cuò)誤,那么在磁盤上形成文件名QBJ文件。

[3]用LINK.EXE連接程序?qū)ξ募?OBJ文件進(jìn)行連接,其方法為:

LINK文件名.OBJ;回車

此時(shí),如果連接正確,那么在磁盤上形成:文件名.EXE可執(zhí)行文件。

[4]對(duì)源程序中從MOVAX,CX開始以下所有指令按下表進(jìn)行計(jì)算。

SRC的地AX推算AX實(shí)

指令SRC尋址方式

址值際值

MOVAX,CX存放器尋址00050005

MOVAX,500H立即尋址05000500

1541:000

MOVAX,TABLE直接尋址A5A4A5A4

4

1542:000

MOVAX,ES:[BX]存放器間接尋址C5C4C5C4

4

1541:000

MOVAX,[BX+05H]存放器相對(duì)尋址AAA9AAA9

9

153F:000

MOVAX,SS:[BX]+03H存放器相對(duì)尋址B8B7B8B7

7

1541:000

MOVAX,TABLE[BX]存放器相對(duì)尋址A9A8A9A8

8

1541:000

MOVAX,07H[BX]存放器相對(duì)尋址ACABACAB

B

153F:000

MOVAX,[BP]存放器間接尋址B4B3B4B3

3

MOVAX,T/\BLE[BP]存放器相對(duì)尋址1541:000A8A7A8A7

7

MOVAX,08H[BP]存放器相對(duì)尋址153F:000BCBBBCBB

B

MOVAX,[BP+06H]存放器相對(duì)尋址153F:000BAB9BAB9

9

MOVAX,DS:[BP+O3H]存放器相對(duì)尋址1541:000A7A6A7A6

6

MOVAX,[BP]+05H存放器相對(duì)尋址153F:000B9B8B9B8

8

MOVAX,ES:[SI+03H]存放器相對(duì)尋址1542:000C6C5C6C5

5

MOVAX,[DI+06H]存放器相對(duì)尋址1541:000A8A7A8A7

7

MOVAX,[DI1+05H存放器相對(duì)尋址1541:000A7A6A7A6

6

MOVAX,TABLE[SI]存放器相對(duì)尋址1541:000A7A6A7A6

6

MOVAX,[SI]存放器間接尋址1541:000A3A2A3A2

2

MOVAX,TABLE[DI]存放器相對(duì)尋址1541:000A6A5A6A5

5

MOVAX,[SI]+05H存放器相對(duì)尋址1541:000A8A7A8A7

7

MOVAX,[BX][DI+O1H]基址變址且相對(duì)尋址1541:000A7A6A7A6

6

MOVAX,[BX][SI]+03H基址變址且相對(duì)尋址1541:000AAA9AAA9

9

MOVAX,TABLE[BX][SI]基址變址且相對(duì)尋址1541:000ABAAABAA

A

MOVAX,ES:[BX][DI]基址變址尋址1542:000C6C5C6C5

5

MOVAX,[BP][DI+02U]基址變址口相對(duì)尋址153F:000B7B6B7B6

6

MOVAX,TABLE[BP][DI]基址變址且相對(duì)尋址1541:000A9A8A9A8

8

MOVAX,ES:[BP][SI]基址變址尋址1542:000C6C5C6C5

5

MOVAX,[BP][SI+05H]基址變址且相對(duì)尋址153F:000BBBABBBA

A

MOVAX,03H[BP][DI]基址變址且相對(duì)尋址153F:000B8B7B8B7

7

MOVAX,[BP][SI]基址變址尋址153F:000B6B5B6B5

5

MOVAX,[BP+02H][DI+03H]基址變址且相對(duì)尋址153F:000BAB9BAB9

9

MOVAX,TABLE[BP+02H]基址變址且相對(duì)尋址1541:000AEADAEAD

[DI+03H]D

[5]用T命令單步運(yùn)行程序,并用R命令檢查AX結(jié)果,同時(shí)將結(jié)果作為實(shí)際

值填入上表中,和推算值進(jìn)行比擬,從而檢驗(yàn)自己對(duì)該條指令對(duì)應(yīng)的尋址方式

是否掌握。也可用D命令觀察存貯器的內(nèi)容,具體操作方法參看DEBUG使

用局部。

四、問題討論

在上表中,分析AX推算值與實(shí)際值有何不同?找出錯(cuò)誤原因,小結(jié)出各種尋

址方式所用的段存放器的規(guī)律來

第二次上機(jī)

一、實(shí)驗(yàn)?zāi)康?/p>

1.熟練掌握匯編語言程序設(shè)計(jì)的方法及上機(jī)步驟。

2.掌握算術(shù)運(yùn)算中,十進(jìn)制數(shù)調(diào)整指令的應(yīng)用。

3.掌握子程序的設(shè)計(jì)方法。

4.掌握DOS功能的調(diào)用方法。

二、實(shí)驗(yàn)儀器

586微機(jī)一臺(tái)

二、實(shí)驗(yàn)內(nèi)容

1.編寫求十進(jìn)制數(shù)12678532與02121435(本人學(xué)號(hào))之和的程序,并將和以十進(jìn)制數(shù)

的形式送屏幕顯示。

編程要求與提示:

[1]兩個(gè)加數(shù)均以壓縮(組合)十進(jìn)制數(shù)形式存放在ADD1和ADD2為首址的存貯器單元。

[2]和以壓縮十進(jìn)制數(shù)的形式存入SUM以下單元。

[3]將和送到屏幕顯示局部功能的實(shí)現(xiàn)采用子程序的形式。

[4]實(shí)驗(yàn)步驟如下:

a.用全屏幕編輯軟件建立源程序。

b.用masm.exe匯編程序?qū)υ闯绦蜻M(jìn)行匯編,形成目標(biāo)程序。

U.用1ink.exe連接程序?qū)δ繕?biāo)程序進(jìn)行連接形成可執(zhí)行文件。

d.用DEBUG對(duì)連接通過的可執(zhí)行程序進(jìn)行調(diào)試。

2.有一個(gè)首地址為A的N字?jǐn)?shù)組,請(qǐng)編程序使該數(shù)組中的數(shù)按從大到小的次序排列。

編程要求與提示:

[1]參加排序的數(shù)據(jù)及個(gè)數(shù)由學(xué)生自一定義。

[2]要將排序前的數(shù)組和排序后的數(shù)組在屏幕上顯示出來。

[3]實(shí)驗(yàn)步驟同內(nèi)容一。

三、實(shí)驗(yàn)程序、流程圖與運(yùn)行結(jié)果

1、

實(shí)驗(yàn)程序

STACKSEGMENTSTAC<'STACK'

DW100HDUP。)

TOPLABELWORD

STACKENDS;堆棧段

DATASEGMENT

ADD1DD12678532H

ADD2DD02121435H

SUMDD?

DATAENDS;數(shù)據(jù)段

CODESEGMENT代碼段

ASSUMECS:CODE,DS:DATA,SS:STACK

START:MOVAX.DATA

MOVDS,AX

MOVAX,STACK

MOVSS.AX

LEASP.TOP

LEASI.ADD1

LEADI.ADD2

MOVAL,[SI]

ADDAL,[DI]

DAA

MOVBYTEPTRSUM.AL

MOVAL,[SI+1]

ADCAL,[DI+1]

DAA

MOVBYTEPTRSUM+1,AL

MOVAL,[SI+2]

ADCAL,[DI+2]

DAA

MOVBYTEPTRSUM+2,AL

MOVAL,[SI+3]

ADCAL,[DI+3]

DAA

MOVBYTEPTRSUM+3,AL

MOVAX,WORDPTRSUM+2

CALLDISPAX

MOVAX,WORDPTRSUM

CALLDISPAX

MOVAH.4CH

INT21H

DISPALPROCNEAR

PUSHAX

PUSHCX

PUSHDX

PUSHAX

MOVCL,4

SHRAL,CL

CALLCHANG

MOVAH,02

MOVDL,AL

INT21H

POPAX

ANDAL.OFH

CALLCHANG

MOVAH.02

MOVDL.AL

INT21H

POPDX

POPCX

POPAX

RET

DISPALENDP

CHANGPROCNEAR

CMPAL,10

JNGECHANG1

ADDAL,7

CHANG1:ADDAL.30H

RET

CHANGENDP

DISPAXPROCNEAR

XCHGAL,AH

CALLDISPAL

XCHGAH,AL

CALLDISPAL

RET

DISPAXENDP

CODEENDS

ENDSTART

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

E:\>WORK1.EXE

14799967

E:\>

流程圖

2、

實(shí)驗(yàn)程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

DATA1DW0212H,1435H,0000H,9999H,1AAAH

STRING1DB'INPUTNUMBER:',ODH,OAH,'$'

SIKING2DB'IHbBIGtKIDIHbSMALLbKI5:',ODH,OAH,'$'

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK

START:MOVAX,DATA

MOVDS,AX

MOVES.AX

MOVAX,STACK

MOVSS,AX

LEADX.STRING1

MOVAH.09H

INT21H

MOVCX,6

LEASI.DATA1

L1:MOVAX,[SI]

ADDSI,2

CALLDISPAX

CALLDISPCR

LOOPL1

MOVCX,5

LEASI.DATA1

ADDSI,10

LP1:PUSHCX

PUSHSI

LP2:MOVAX,[SI]

CMPAX,[SI-2]

JBENOXCHG

XCHGAX,[SI-2]

MOV[SI],AX

NOXCHG:DECSI

DECSI

LOOPLP2

POPSI

POPCX

LOOPLP1

LEADX.STRING2

MOVAH,09H

INT21H

MOVCX,6

LEASI.DATA1

L2:MOVAX,[SI]

ADDSI,2

CALLDISPAX

CALLDISPCR

LOOPL2

MOVAH.4CH

INT21H

DISPALPROC

PUSHAX

PUSHCX

PUSHDX

PUSHAX

MOVCL,4

SHRAL,CL

CALLCHANG

MOVAH.02H

MOVDL.AL

INT21H

POPAX

ANDAX.OFH

CALLCHANG

MOVAH.02H

MOVDL.AL

INT21H

POPDX

POPCX

POPAX

RET

DISPALENDP

CHANGPROC

CMPAL.10

JNGECHANG1

ADDAL,7

CHANG1:ADDAL.30H

RET

CHANGENDP

DISPAXPROC

XCHGAL.AH

CALLDISPAL

XCHGAH.AL

CALLDISPAL

RET

DISPAXENDP

DISPCRPROC

PUSHAX

PUSHDX

MOVAH,2

MOVDL,0AH

INT21H

MOVAH,2

MOVDL.ODH

INT21H

POPDX

POPAX

RET

DISPCRENDP

CODEENDS

ENDSTART

實(shí)驗(yàn)結(jié)果

E:\>W0RK2.EXE

iINPUT:

0212

1435

0000

9999

4568

1AAA

TOUTPUT:

9999

4568

1AAA

1435

0212

f\aaa

匕“'___________

流程圖

START

N

三、問題討論

1.在以十進(jìn)制數(shù)形式參加運(yùn)算的程序設(shè)計(jì)中,應(yīng)注意那些問題。

2.總結(jié)循環(huán)程序設(shè)計(jì)的步驟及方法。

第三、四次上機(jī)

一、實(shí)驗(yàn)?zāi)康?/p>

1.增強(qiáng)和提高匯編語言程序設(shè)計(jì)的能力,掌握模塊化程序設(shè)計(jì)的方

法.

2.熟練掌握DOS常用功能的調(diào)用方法

二、實(shí)驗(yàn)儀器

586微機(jī)一臺(tái)

三、實(shí)驗(yàn)內(nèi)容

編寫如下程序,并在機(jī)器上調(diào)試成功。程序采用菜單式選擇,可以接收用

戶從鍵盤輸入的五個(gè)命令各命令功能分別為:

(1)按下“1”鍵,完成字符串小寫字母變成大寫字母。

用戶輸入一由英文大小寫字母或數(shù)字0-9組成的字符串(以回車結(jié)束),

程序逐個(gè)檢查字符串中各字符,將原串中小寫字母變成大寫字母,其他字符不

變,并在屏幕上顯示。用戶接任一鍵,重做,按ESC鍵,返回主菜單。

(2)按卜“2”鍵,完成我最大值(二選一〕。

a.接收用戶輸入的可顯示字符串(以回車結(jié)束),程序?qū)⑵渲蠥SCH碼值

最大的字符顯示出來;

b,接收用戶輸入假設(shè)干個(gè)無符號(hào)8位數(shù)(以空格或逗號(hào)為分隔符,以回車

結(jié)束),程序?qū)⑵渲凶畲蟮臄?shù)顯示出來。用戶按任一鍵,重做,按ESC鍵,返

回主菜單。

(3)按下“3”鍵,完成排序(二選一)。

a.接收用戶輸入的可顯示字符串,以回車結(jié)束。程序按ASCH碼值大小由

大到小排序并輸出顯示;

b.接收用戶輸入假設(shè)干個(gè)有符號(hào)8位數(shù)(以空格或逗號(hào)為分隔符,以回車

結(jié)束),程序?qū)⑵渲凶畲蟮臄?shù)顯示出來。用戶接任一鍵,重做,按ESC鍵,返

回主菜單。

(4)按下“4”鍵,顯示時(shí)間。

首先提示用戶對(duì)時(shí),即用戶輸入時(shí)、分、秒(以空格或逗號(hào)為分隔符,以

回車結(jié)束),然后,在屏幕上不斷顯示時(shí)間,格式為:

XX(時(shí)):XX(分):XX(秒)

最好定點(diǎn)顯示。用戶按任一鍵,重新對(duì)時(shí),按ESC鍵,返回主菜單。

(5)按下“5”鍵,結(jié)束程序運(yùn)行,返回系統(tǒng)提示符。

四、實(shí)驗(yàn)程序、流程圖與結(jié)果

實(shí)驗(yàn)程序

DISPLMACROSTR;Functiontodisplaystrings

PUSHDX

PUSHAX

LEADX.STR

MOVAH,09H

INT21H

POPAX

POPDX

ENDM

ISCONTINUEMACROL;Macrotojudgewhethertocontinue,Lisamark

DISPS15,10,SMENU

MOVAH.08H

INT21H

CMPAL,1BH

JNEL;假設(shè)用JE會(huì)導(dǎo)致編譯,跳不了那么遠(yuǎn)

JMPMAIN

ENDM

CURSORMACROCURX.CURY

PUSHAX

PUSHBX

PUSHDX;DX必須保護(hù),始終指向輸入緩沖區(qū)

MOVAH.02H

MOVDH.CURX

MOVDL.CURY

MOVBH,0

INT10H

POPDX

POPBX

POPAX

ENDM

DISPSMACROX.Y.STR;將STR的內(nèi)容顯示到X,Y的位圓

PUSHAX

PUSHBX

PUSHDX

MOVAH.02H

MOVBH.OOH;顯示頁碼,第。頁

MOVDH,X;行[X坐標(biāo))

MOVDL,Y;列(丫坐標(biāo)〕

INT10H

LEADX.STR

MOVAH.09H

INT21H

POPDX

POPBX

POPAX

ENDM

SCROLLMACRON.ULR.ULC.LRR.LRC.ATT

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVAH,06H

MOVAL,N;N=上卷行數(shù);N=0時(shí),清窗口

MOVCH.ULR;左上角行號(hào)1X)

MOVCL.ULC;左上角列號(hào)(Y)

MOVDH.LRR;右下角行號(hào)

MOVDL.LRC;右下角列號(hào)

MOVBH.ATT落入行屬性,顏色設(shè)置

INT10H

POPDX

POPCX

POPBX

POPAX

ENDM

PREPMACROT;預(yù)處理,顯示子菜單標(biāo)題(T),輸入提示信息等

LEASIJNBUF+1

LEADl.OUTBUF

SCROLL21,2,0,22,79,OFH;清屏,內(nèi)窗

DISPS3,20,T;顯示子菜單標(biāo)題(3行20列顯示T)

DISPS6,2,CAPION;Promptforastringtochange

DISPS8.2JNCAPprint"Yourinputis:"

MOVAH.OAH

INT21H

MOVCH,0

MOVCL,[SI];獲取輸入字符串中,字符的個(gè)數(shù)

INCSI

ENDM

STACKSEGMENTSTACK'STACK'

DB100HDUP(?)

TOPLABELWORD

STACKENDS

DATASEGMENT

BASEDWMAIN,LTC,FMV,SORTS,STM.EXIT;建立跳轉(zhuǎn)表

WELCMDB'Welcometousethisprogram!$'

MMENUDDB'02121452-Mr.HaoS'

MMENUCDB,ChooseAnItem,AndInputTheNumber!$'

MMENU1DB*1-LowercaseLettersToCapitalLetters$'

MMENU2DB'2-FindTheMaximumValue$'

MMENU3DB'3-Sort$'

MMENU4DB'4-SetTime$'

MMENU5DB15-Exit!$'

SMENUDB'PressAnyKeyToRedo.Press"ESC"ToReturnToMainMenu!$'

WROCAPDB'WRONG!Youhavepress""key!Pleaseinputanumberbetween1and5!$'

CAPIONDB'PleaseInputYourStringsandEndWith"Enter"Key!$'

INCAPDB'YourInputIs:$'

INBUFDB100

DB?

DB100DUP(?)

OUTCAPDB'MyOutputIs:$'

OUTBUFDB100DUP(?)

MAXCAPDB'ThecharofmaxASCIIis:.$'

ERRINFDB'ERROR!Pleasechecktheformatyouinput!$'

TIMESETCDB'Now,youcansetthetime!$,

TIMESETFDB'Format:(012532)or(01:25:32),andendwithCR!$'

TIMESETSDB'Succeed!

TDINVDB'Invalidtimedata!Inputagain!$'

NODATCAPDB'Youhaveinputnothing's'

TIMEDB8DUP(':)12DUP('');時(shí)間的底

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK

START:MOVAX,DATA

MOVDS,AX

MOVES.AX

MOVAX.STACK

MOVSS.AX

LEASP.TOP

LEADX.INBUF指向輸入緩沖區(qū)

CLC

MAIN:SCROLL0,0,0,24,79,0;清屏

SCROLL21,2,0,22,79,OFF;設(shè)置菜單顏色,黑底白字〃注意逗號(hào)應(yīng)為半角字符,否那么提示outofmemoryu

DISPS6,30,MMENUD

DISPS8,20,MMENUC

DISPS10,20,MMENU1

DISPS12,20,MMENU2

DISPS14,20,MMENU3

DISPS16.20.MMENU4

DISPS18,20,MMENU5

ML:CURSOR19,1DH

MOVAH,01H;Recievethechoice

INT21H

CMPAL,31H

JLERROR

CMPAL.35H

JGERROR

ANDAX.00FH

LEABX.BASE

SHLAL.1;將人1,乘2,因?yàn)樘D(zhuǎn)表地址是dw類型的,

ADDBX.AX

JMPWORDPTR[BX]

;CMPAL,'1'

;JELTC;Choose1,lowercaselettertocapitalletter

;CMPAL,'2'

;JEFMV;Choose2,findthemaximumvalue

;CMPAL,'3'

;JESORTS;Choose3,sort

;CMPAL,'4'

;JESTM;Choose4,showcurrenttime

;CMPAL,'5'

;JEEXIT;Choose5,exittheprogram

ERROR:CMPAL.ODH;如果是回車的話,賦CR

JEMCR

MOV[WROCAP+23],AL;Otherchar

MOV[WROCAP+24];1

JMPD

MCR:MOVWORDPTR[WROCAP+23].'RC,

D:DISPS20,5,WROCAP;Showthewronginformation

JMPML

LTC:CALLLLTOCL

ISCONTINUELTC

FMV:CALLFMAXV

ISCONTINUEFMV

SORTS:CALLSORT

ISCONTINUESORTS

STM:CALLSHOWTIME

ISCONTINUESTM

EXIT:SCROLL0,0,0.24,79,0;清屏

MOVAH.4CH;Exit.

INT21H

LLTOCLPROC

REFLASHL:PREPMMENU1;顯示子菜單

CMPCL.O;假設(shè)輸入為空那么跳轉(zhuǎn)至REDO

JEREFLASHL

LL1:MOVAL,[SI]

CMPAL,'a'

JBMTOB;NOCHANGE

CMPAL,'z'

JAMTOB

SUBAL,20H;Convert

MTOB:MOV[DI],AL

INCSI

INCDI

LOOPLL1

MOVBYTEPTR[Dl],'$'

DISPS10,2,OUTCAP

DISPS10,17,OUTBUF

RET

LLTOCLENDP

FMAXVPROC

PUSHBX

REFLASHF:PREPMMENU2;顯示子菜單

CMPCL,0;假設(shè)輸入為空那么跳轉(zhuǎn)至REDO

JEREFLASHF

MOVAL,0

FL1:CMPAL,[SI]

JANEXT

MOVAL,[SI]

NEXT:INCSI

LOOPFL1

MOV[MAXCAP+26],AL

DISPS10,2,MAXCAP

POPBX

RET

FMAXVENDP

SORTPROC

PREPMMENU3;顯示子菜單標(biāo)題(T),輸入提示信息等

DECCX

ADDSI.CX

MOVBYTEPTR[Sl+1],'$'

LP1:PUSHCX

PUSHSI

LP2:

MOVAL,[SI]

CMPAL,[SI-1]

JBENOXCHG

XCHGAL,[SI-1]

MOV[SI],AL

NOXCHG:DECSI

LOOPLP2

POPSI

POPCX

LOOPLP1

DISPS10,2,OUTCAP

DISPS10,17,INBUF[2];顯示排序結(jié)果

RET

SORTENDP

SHOWTIMEPROC

SCROLL21,2,0,22,79,OFH清屏,內(nèi)窗

DISPS3,20,MMENU4

DISPS5,25,TIMESETC

DISPS7,15,TIMESETF

SHOW:MOVSI,0

MOVBL.1OO

DIVBL

MOVAH,2CH;GETTIME

INT21H

MOVAL.CH;HOUR

CALLBCDASC;要轉(zhuǎn)換的在AL中

INCSI

MOVAL,CL;MINUTE

CALLBCDASC

INCSI

MOVAL.DH

CALLBCDASC;要轉(zhuǎn)換的在AL中

MOVBP.OFFSETTIME;使用int10H的13H號(hào)功能,在Teletype模式下顯示字符串(3P為地址)

MOVDX,0A22H;DX為行列(DH,DL)

MOVCX,8;CX為顯示字符串長(zhǎng)度

MOVBX.004EH;BH:頁碼,BL:屬性

MOVAX.1301H;AL:顯示輸出方式,1—字符串中只含顯示字符,顯示后,光標(biāo)位置改變

INT10H

MOVAH.02H;設(shè)置光標(biāo)位置

MOVDX,0A22H

MOVBH,0

INT10H

MOVBX.0018H;延時(shí)用(外層),假設(shè)不延時(shí),光標(biāo)會(huì)在時(shí)間左右來回跑!

RE:MOVCX.OFFFFH

REA:LOOPREA

DECBX

JNZRE

MOVAH.01H;檢測(cè)是否有字符輸入,ZF=1:無

INT16H

JESHOW

CALLSETTIME;設(shè)置時(shí)間子程序

RET

SHOWTIMEENDP

SETTIMEPROC

PUSHDX

MOVAH,OAH;輸入時(shí)間串

LEADX,INBUF

INT21H

CMPINBUF[1],0

JENODAT

MOVBL,10

MOVAL,INBUF

溫馨提示

  • 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)論