版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
...wd......wd......wd...匯編實(shí)驗(yàn)實(shí)驗(yàn)一順序與分支程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康恼莆枕樞虺绦蛟O(shè)計(jì)方法。掌握分支程序的構(gòu)造及分支程序的設(shè)計(jì),調(diào)試方法。2)學(xué)習(xí)數(shù)據(jù)傳送及算術(shù)和邏輯運(yùn)算指令的用法。3)熟悉在PC機(jī)上建設(shè)、匯編、連接、調(diào)試和運(yùn)行匯編語(yǔ)言程序的過(guò)程。二、實(shí)驗(yàn)內(nèi)容1)有一字變量BUF1是以原碼表示的有符號(hào)數(shù),要求將其轉(zhuǎn)換為反碼和補(bǔ)碼,分別存入BUF2和BUF3單元,并在屏幕上顯示出來(lái)。2〕有兩個(gè)兩字節(jié)無(wú)符號(hào)數(shù)分別放在存儲(chǔ)單元A、B起始的緩沖器中,求其和,結(jié)果放在A起始的緩沖區(qū)并在屏幕上顯示。相加假設(shè)有進(jìn)位不存入存儲(chǔ)單元。 3)在BUF和BUF+1、BUF+2單元分別放有一個(gè)無(wú)符號(hào)字節(jié)型數(shù),編程序?qū)⑵渲凶畲髷?shù)存入MAX單元,并在屏幕上顯示。 4)要求同上,只是比擬的數(shù)為有符號(hào)數(shù)。5)將1000H單元開(kāi)場(chǎng)的10個(gè)字節(jié)數(shù),采用奇偶校驗(yàn),將奇數(shù)在前偶數(shù)在后仍存回原數(shù)據(jù)區(qū)。本實(shí)驗(yàn)要求在DEBUG調(diào)試狀態(tài)下進(jìn)展,包括匯編程序、運(yùn)行程序、檢查結(jié)果。6)從鍵盤(pán)上接收一位十進(jìn)制數(shù)X,計(jì)算Y值,并以十六進(jìn)制形式顯示出來(lái),Y按以下公式計(jì)算。7)從鍵盤(pán)上接收兩個(gè)一位十六進(jìn)制數(shù)X和Y,然后再輸入一個(gè)A-D之間的一個(gè)字符,按以下要求計(jì)算。當(dāng)輸入字符為A,則計(jì)算X+Y,并以十六進(jìn)制形式顯示出來(lái)當(dāng)輸入字符為B,則計(jì)算|X-Y|,并以十六進(jìn)制形式顯示出來(lái)當(dāng)輸入字符為C,則計(jì)算X*Y,并以十六進(jìn)制形式顯示出來(lái)當(dāng)輸入字符為D,則計(jì)算X/Y,并以十六進(jìn)制形式顯示出來(lái)三、實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái)四、實(shí)驗(yàn)準(zhǔn)備1)分析題目,將程序中的原始數(shù)據(jù)和最終結(jié)果的存取方法確定好。2)畫(huà)出流程圖。3)寫(xiě)出源程序。4)對(duì)程序中的結(jié)果進(jìn)展分析,并準(zhǔn)備好上機(jī)調(diào)試與用匯編程序及匯編調(diào)試的過(guò)程。五、實(shí)驗(yàn)步驟1)輸入源程序。2)匯編、連接程序,生成.EXE文件,執(zhí)行文件,檢查結(jié)果。六、實(shí)驗(yàn)報(bào)告的要求1)列出源程序,說(shuō)明程序的根本構(gòu)造,包括程序中各局部的功能。2)說(shuō)明程序中各局部所用的算法。3〕說(shuō)明主要符號(hào)和所用到存放器的功能。 4)總結(jié)為什么在設(shè)計(jì)分支程序時(shí)必須解決三個(gè)問(wèn)題:判斷、轉(zhuǎn)向和定標(biāo)號(hào)。5)說(shuō)明標(biāo)志位CF、SF和OF的意義。6)上機(jī)調(diào)試過(guò)程中遇到的問(wèn)題是如何解決的。7)對(duì)調(diào)試源程序的結(jié)果進(jìn)展分析。Exam1:DATA
SEGMENT;數(shù)據(jù)段BUF1
DW
7898HBUF2
DW
4
DUP(0),0AH,0DH,'$'BUF3
DW
4
DUP(0),'$'DATA
ENDS;數(shù)據(jù)段完畢CODE
SEGMENT;代碼段
ASSUME
CS:CODE,DS:DATA;段存放器關(guān)聯(lián)說(shuō)明偽指令BEGIN:
MOV
AX,DATAMOV
DS,AX;將數(shù)據(jù)段的基地址裝入數(shù)據(jù)段存放器DSMOV
AX,BUF1;將字型變量BUF1的值裝入AX存放器ADD
AX,0;AX存放器里的數(shù)據(jù)加0,以便進(jìn)展轉(zhuǎn)移測(cè)試
JS
NEXT;判斷〔AX〕的正負(fù),假設(shè)為負(fù)則轉(zhuǎn)到NEXT,為正則往下順序執(zhí)行。
MOV
BUF2,AX;為正,反碼與原碼一樣
MOV
BUF3,AX;為正,補(bǔ)碼與原碼一樣
JMP
EEENEXT:AND
AX,7FFFH;將符號(hào)位變?yōu)?
NOT
AX;求反碼
MOV
BUF2,AX;將BUF1的反碼裝入BUF2
INC
AX;求補(bǔ)碼
MOV
BUF3,AX;將補(bǔ)碼裝入BUF3EEE:MOV
CX,0004H;將0004H裝入CX計(jì)數(shù)器存放器中
MOV
DI,OFFSET
BUF2;將DI指向變量BUF2開(kāi)場(chǎng)的存儲(chǔ)單元
MOV
DX,
[DI];將DI所指的數(shù)據(jù)裝入DX存放器中
ADD
DI,03;將DI指針下移三個(gè)字BBB:MOV
AX,DX;將DX中的內(nèi)容裝入AX存放器中
AND
AX,000FH;即使BUF2的低四位不變,其余均變?yōu)?
CMP
AL,0AH;比擬[AL]與0AH的大小,以便能正確轉(zhuǎn)換為0-9的ASCII值
JB
QQQ;假設(shè)[AL]<0AH,則轉(zhuǎn)到QQQ,否則,順序執(zhí)行
ADD
AL,07H;因?yàn)閇AL]>0AH,所以[AL]+07H,使得AL能轉(zhuǎn)換成相應(yīng)數(shù)字的ASCII值QQQ:ADD
AL,30H;將[AL]轉(zhuǎn)換成相應(yīng)數(shù)字的ASCII值
MOV
[DI],AL;將AL中的內(nèi)容裝入以DS中的內(nèi)容為段基地址,以DI的內(nèi)容為偏移地址的存儲(chǔ)單元中
DEC
DI;DI=DI-1,即將DI指向前一個(gè)存儲(chǔ)單元
PUSH
CX;保存CX存放器的內(nèi)容
MOV
CL,04H;給CL存放器賦值為04H
SHR
DX,CL;將[DX]邏輯右移四位
POP
CX;恢復(fù)CX存放器的內(nèi)容
LOOP
BBB;循環(huán)判斷語(yǔ)句,CX=CX-1,假設(shè)CX不等于0,則轉(zhuǎn)到BBB,將下一個(gè)低四位存入存儲(chǔ)單元中,否則循環(huán)完畢
MOV
CX,0004H;給CX存放器賦值為0004H
MOV
SI,OFFSET
BUF3;將SI指向變量BUF3開(kāi)場(chǎng)的存儲(chǔ)單元
MOV
DX,[SI];將SI所指的數(shù)據(jù)裝入DX存放器中
ADD
SI,03H;將DI指針下移三個(gè)字CCC:MOV
AX,DX;將DX中的內(nèi)容裝入AX存放器中
AND
AX,000FH;即使BUF3的低四位不變,其余均變?yōu)?
CMP
AL,0AH;比擬[AL]與0AH的大小,以便能正確轉(zhuǎn)換為0-9的ASCII值
JB
DDD;假設(shè)[AL]<0AH,則轉(zhuǎn)到DDD,否則,順序執(zhí)行
ADD
AL,07H;因?yàn)閇AL]>0AH,所以[AL]+07H,使得AL能轉(zhuǎn)換成相應(yīng)數(shù)字的ASCII值DDD:ADD
AL,
30H;將[AL]轉(zhuǎn)換成相應(yīng)數(shù)字的ASCII值
MOV
[SI],AL;將AL中的內(nèi)容裝入以DS中的內(nèi)容為段基地址,以SI的內(nèi)容為偏移地址的存儲(chǔ)單元中
DEC
SI;SI=SI-1,即將SI指向前一個(gè)存儲(chǔ)單元
PUSH
CX;保存CX存放器的內(nèi)容
MOV
CL,
04H;給CL存放器賦值為04H
SHR
DX,
CL;將[DX]邏輯右移四位
POP
CX;恢復(fù)CX存放器的內(nèi)容
LOOP
CCC;循環(huán)判斷語(yǔ)句,CX=CX-1,假設(shè)CX不等于0,則轉(zhuǎn)到CCC,將下一個(gè)低四位存入存儲(chǔ)單元中,否則循環(huán)完畢
MOV
DX,
OFFSET
BUF2;將BUF2的偏移地址裝入DX存放器中
MOV
AH,09H
INT
21H;在屏幕上顯示BUF1的反碼
MOV
DX,OFFSET
BUF3
MOV
AH,09H
INT
21H;在屏幕上顯示BUF1的補(bǔ)碼
MOV
AH,4CH
INT
21H;帶返回碼終止
CODE
ENDS
END
BEGINExam2:DATA
SEGMENT;數(shù)據(jù)段A
DB
34H,18H,2
DUP(0),
'$';定義字節(jié)型變量,其后的每操作數(shù)都占有一個(gè)字節(jié)B
DB
56H,
83H;定義字節(jié)型變量,其后的每操作數(shù)都占有一個(gè)字節(jié)DATA
ENDS;數(shù)據(jù)段完畢CODE
SEGMENT;代碼段ASSUME
CS:CODE,
DS:DATASTART:MOV
AX,DATAMOV
DS,
AX;將數(shù)據(jù)段基地址裝入數(shù)據(jù)段存放器DSMOV
AL,
A;將A所指的數(shù)裝入AL存放器中MOV
BL,
B;將B所指的數(shù)裝入BL存放器中ADD
AL,
BL;AL+BL->ALMOV
AH,
A+1;將A所指的下一個(gè)字節(jié)的數(shù)據(jù)裝入AHMOV
BH,
B+1;將B所指的下一個(gè)字節(jié)的數(shù)據(jù)裝入BHADC
AH,BH;AH與BH進(jìn)展帶進(jìn)位加法MOV
A,AL;將第一個(gè)無(wú)符號(hào)數(shù)的相加結(jié)果放在以A起始的緩沖區(qū)MOV
A+1,AH;將第二個(gè)無(wú)符號(hào)數(shù)的相加結(jié)果放在以A+1起始的緩沖區(qū)MOV
CX,0014H;以下是將數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的ASCII值MOV
DI,
OFFSETAMOV
DX,
[DI]ADD
DI,
03NEXT:MOV
AX,DXAND
AX,000FHCMP
AL,0AHJB
QQQADD
AL,07HQQQ:ADD
AL,30HMOV
[DI],
ALDEC
DIPUSH
CXMOV
CL,
14SHR
DX,
CLPOP
CXLOOP
NEXTMOV
DX,
OFFSET
AMOV
AH,09HINT
21H;在屏幕上顯示結(jié)果MOV
AH,4CHINT
21H;帶返回碼終止CODE
ENDSEND
STARTExam3:STACK
SEGMENT
STACK;堆棧段DB
1000
DUP(0);定義其后的每個(gè)操作數(shù)都占有一個(gè)字節(jié)STACK
ENDS;堆棧段完畢DATA
SEGMENT;數(shù)據(jù)段BUF
DB72H,34H,1FH;定義字節(jié)型變量,其后的每操作數(shù)都占有一個(gè)字節(jié)MAX
DB
2
DUP
(?),
'$';定義字節(jié)型變量,其后的每操作數(shù)都占有一個(gè)字節(jié)DATA
ENDS;數(shù)據(jù)段完畢CODE
SEGMENT;代碼段ASSUME
CS:CODE,DS:DATA,SS:STACKBEGIN:
MOV
AX,
DATAMOV
DS,
AX;將數(shù)據(jù)段基地址裝入數(shù)據(jù)段存放器DSMOV
AL,
BUF;將BUF所指向的一個(gè)字節(jié)數(shù)據(jù)裝入ALCMP
AL,
BUF+1;比擬BUF與BUF+1大小JNB
LP1;如果BUF不小于BUF+1,則轉(zhuǎn)到lp1,否則順序向下執(zhí)行MOV
AL,
BUF+1;將BUF+1所指向的一個(gè)字節(jié)數(shù)據(jù)裝入ALLP1:
CMP
AL,
BUF+2;將BUF和BUF1中較大的一個(gè)和BUF+2比擬大小JAE
LP2;如果BUF2小,則轉(zhuǎn)到lp2,否則執(zhí)行順序向下執(zhí)行MOV
AL,
BUF+2;此時(shí)BUF2為三個(gè)數(shù)中最大的一個(gè),將最大數(shù)裝入AL存放器中LP2:
MOV
CX,
04H;以下是將輸出的最大數(shù)轉(zhuǎn)換為相應(yīng)的ASCII值MOV
DI,
OFFSET
MAXMOV
DL,
ALINC
DILP3:
AND
AL,
0FHCMP
AL,
0AHJB
LP4ADD
AL,
07HLP4:
ADD
AL,
30HMOV
[DI],ALDEC
DIPUSH
CXMOV
CL,
03HSHR
DL,
CLPOP
CXMOV
AL,
DLLOOP
LP3MOV
DX,
OFFSET
MAXMOV
AH,
09HINT
21HMOV
AH,
4CHINT
21HCODE
ENDSEND
BEGINExam4:STACK
SEGMENT
STACKDB1000
DUP(0)STACK
ENDSDATA
SEGMENTBUFDB
98H,
75H,
32HMAX
DB4
DUP(?),
'$'DATA
ENDSCODE
SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:
MOV
AX,DATAMOV
DS,
AXMOV
AL,
BUFCMP
AL,
BUF+1JG
LP1;JG為比擬兩個(gè)有帶符號(hào)數(shù)的大小,比擬BUF和BUF1的大小,假設(shè)BUF>BUF1,則跳轉(zhuǎn)到lp1繼續(xù)執(zhí)行,否則順序向下執(zhí)行XCHG
AL,
BUF+1;交換AL存放器中的內(nèi)容和BUF1,使AL存放器中存放BUF和BUF1中較大的一個(gè)LP1:
MOV
MAX,
ALJGElp2 ;比擬兩個(gè)帶符號(hào)數(shù),如果BUF2小,則轉(zhuǎn)到lp2,否則執(zhí)行順序向下執(zhí)行MOVAL,BUF+2 Lp2:MOVMAX,AL ;以下是將輸出的最大數(shù)轉(zhuǎn)換為相應(yīng)的ASCII值,與1〕題一樣MOV
CX,
04HMOV
DI,
OFFSET
MAXMOV
DL,
[DI]INC
DILP3:
MOV
AL,
DLAND
AL,
0FHCMP
AL,
0AHJB
LP4ADD
AL,
07HLP4:
ADDAL,
30HMOV
[DI],
ALDEC
DIPUSH
CXMOV
CL,
02SHR
DX,
CLPOP
CXLOOP
LP3MOV
DX,
OFFSET
MAXMOV
AH,
09HINT
21HMOV
AH,
4CHINT
21HCODE
ENDSEND
BEGIN實(shí)驗(yàn)二循環(huán)與子程序程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?)加深對(duì)循環(huán)構(gòu)造的理解。2〕掌握循環(huán)程序的設(shè)計(jì)方法。3〕學(xué)習(xí)子程序的定義和調(diào)用方法。4〕掌握子程序、子程序的嵌套、遞歸子程序的構(gòu)造。5)掌握子程序設(shè)計(jì)、編制及調(diào)試。 6)熟練掌握DEBUG的常用命令,學(xué)會(huì)用DEBUG調(diào)試程序。二、實(shí)驗(yàn)內(nèi)容1)編制程序計(jì)算S=1+2·3+3·4+4·5+……+N〔N+1〕+……直到N〔N+1〕大于200為止,并將結(jié)果由屏幕上顯示出來(lái)。2〕將從3000H內(nèi)存單元開(kāi)場(chǎng)的100個(gè)字節(jié)存儲(chǔ)單元全部清0。3〕編制在屏幕上顯示九九乘法表的程序。4〕編制在屏幕上顯示用*組成的三角形的程序。5〕設(shè)有五個(gè)字?jǐn)?shù)據(jù)存放在以BUF為首地址的內(nèi)存單元中,要求采用調(diào)用多個(gè)字?jǐn)?shù)據(jù)相加的子程序方法編程,和的低位字放在RESULT單元,和的高位字放在RESULT+2單元,并將結(jié)果顯示在屏幕上。6〕編寫(xiě)一個(gè)遞歸子程序,計(jì)算指數(shù)函數(shù)Xn的值,其中X,n從鍵盤(pán)輸入。三、實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái)四、實(shí)驗(yàn)步驟1)按程序流程圖編制實(shí)驗(yàn)程序。2)輸入源程序。3)匯編、連接程序,執(zhí)行程序,檢查結(jié)果。4〕對(duì)內(nèi)存單元3000H開(kāi)場(chǎng)的100個(gè)存儲(chǔ)單元用E命令輸入任意數(shù)。5)程序的執(zhí)行可用DEBUG的G命令,也可用T命令單步跟蹤執(zhí)行。6)用D命令檢查執(zhí)行結(jié)果。五、實(shí)驗(yàn)報(bào)告的要求列出源程序。2〕對(duì)程序中用到的存放器說(shuō)明其功能。3〕總結(jié)計(jì)數(shù)控制循環(huán)程序的設(shè)計(jì)方法。4)說(shuō)明怎樣使用DEBUG進(jìn)展程序調(diào)試的。調(diào)試過(guò)程中所遇到的問(wèn)題是如何解決的。、Exam1:DATASEGMENTBUFDB’S=1+2×3+3×4+4×5+…+N〔N+1〕+…=’,’$’RESDW4DUP〔0〕,’$’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETBUFMOVAH,09HINT21HMOVDX,1MOVBL,2NEXT:MOVAL,BLINCBLMULBLADDDX,AXCMPAX,200JNANEXTMOVCX,0004HMOVDI,OFFSETRESADDDI,03HNEXT1:MOVAX,DXANDAX,000FHCMPAL,0AHJBNEXT2ADDAL,07NEXT2:ADDAL,30HMOV[DI],ALDECDIPUSHCXMOVCL,04SHRDX,CLPOPCXLOOPNEXT1MOVDX,OFFSETRESMOVAH,09HINT21HMOVAH,4CHINT21HCODEENDSENDSTARTExam3:DATASEGMENT
ATAD
DB?,2AH,?,3DH,?,?,20H,'$'
ATAD1DB?,2AH,?,3DH,?,?,0DH,0AH,'$'DATAENDSSTACKSEGMENTSTACK
DB20HDUP(0)STACKENDSCODESEGMENT
ASSUMECS:CODE,DS:DATASTART:
MOVAX,DATA
MOVDS,AX
MOVCL,09H
MOVBL,00HOKL:
MOVAL,00H
INCBLOK1:
INCAL
PUSHAX
CMPBL,AL
JZOK
MOVBH,AL
MULBL
MOVDI,OFFSETATAD
CALLOKP
POPAX
JMPOK1OK:
MOVBH,AL
MULBL
MOVDI,OFFSETATAD1
CALLOKP
POPAX
LOOPOKL
MOVAH,4CH
INT21HOKPPROC
PUSHAX
PUSHBX
PUSHCX
ADDBX,3030H
MOV[DI],BH
MOV[DI+02H],BL
MOVCX,0AH
MOVDH,00HOKL2:
CMPAX,CX
JSOK2
ADDCX,0AH
INCDH
JMPOKL2OK2:
SUBCX,0AH
SUBAX,CX
MOVAH,DH
ADDAX,3030H
MOV[DI+04H],AH
MOV[DI+05H],AL
MOVDX,DI
MOVAH,09H
INT21H
POPCX
POPBX
POPAX
RETOKPENDPCODEENDSENDSTARTExam4:CODESSEGMENTASSUMECS:CODESSTART:XORBX,BXMOVDL,2AHMOVCX,9LOP:
PUSHCXINCBLMOVCL,BLMOVDL,2AHLOP2:
MOVAH,02HINT21HLOOPLOP2POPCX
MOVDL,0AHMOVAH,02HINT21HMOVDL,0DHMOVAH,02HINT21HCMPBL,9JZENDPROLOOPLOPENDPRO:MOVAH,4CHINT21HCODESENDSENDSTARTExam5:STACK
SEGMENT
STACK
DB
1024
DUP(0)STACK
ENDSDATA
SEGMENTBUF
DW
0F101H,110DH,52H,100H,456HCOUNT
=($-BUF)/2RESULT
DW
4
DUP(?),'$'DATA
ENDSCODE
SEGMENT
ASSUME
CS:CODE,DS:DATA,SS:STACKWDADD
PROC
PUSH
DI
MOV
AX,
0
MOV
DX,
0
MOV
DI,
OFFSET
BUFNEXT2:
ADD
AX,
[DI]
JNC
NEXT1
INC
DXNEXT1:
ADD
DI,
2
LOOP
NEXT2
POP
DI
RET
WDADD
ENDP
SHOW
PROC
PUSH
CX
PUSH
DI
MOV
CX,
04H
MOV
DI,
OFFSET
RESULT
MOV
BX,
AX
ADD
DI,
07HBBB:
MOV
AX,
BX
AND
AX,
000FH
CMP
AL,
0AH
JB
QQQ
ADD
AL,
07HQQQ:
ADD
AL,
30H
MOV
[DI],
AL
DEC
DI
PUSH
CX
MOV
CL,
04
SHR
BX,
CL
POP
CX
LOOP
BBB
MOV
CX,
0004HCCC:
MOV
AX,
DX
AND
AX,
000FH
CMP
AL,
0AH
JB
DDD
ADD
AL,
07HDDD:
ADD
AL,
30H
MOV
[DI],
AL
DEC
DI
PUSH
CX
MOV
CL,
04H
SHR
DX,
CL
POP
CX
LOOP
CCC
POP
DI
POP
CX
RET
SHOW
ENDPBEGIN:MOV
AX,
DATA
MOV
DS,
AX
MOV
CX,
COUNT
CALL
WDADD
CALL
SHOW
MOV
DX,
OFFSET
RESULT
MOV
AH,
09H
INT
21H
MOV
AH,
4CH
INT
21HCODE
ENDS
END
BEGIN實(shí)驗(yàn)三算術(shù)運(yùn)算與代碼轉(zhuǎn)換程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?〕掌握算術(shù)運(yùn)算程序的設(shè)計(jì)方法。2〕掌握代碼轉(zhuǎn)換程序的設(shè)計(jì)方法。3〕進(jìn)一步掌握各種程序構(gòu)造。4〕熟練掌握和使用用DEBUG調(diào)試程序。二、實(shí)驗(yàn)內(nèi)容1〕編制兩個(gè)多字節(jié)整數(shù)加法和減法程序,并將結(jié)果按十六進(jìn)制形式顯示在屏幕上。2〕編制程序?qū)崿F(xiàn)二進(jìn)制定點(diǎn)數(shù)與十進(jìn)制數(shù)的ASCII碼串之間轉(zhuǎn)換,并將結(jié)果顯示在屏幕上。3〕編寫(xiě)程序計(jì)算從鍵盤(pán)輸入兩個(gè)不超過(guò)四位的十進(jìn)制數(shù)的和、差、積、商,并以十進(jìn)制形式輸出。4〕寫(xiě)程序把從鍵盤(pán)輸入的四位十六進(jìn)制數(shù)轉(zhuǎn)換為壓縮的BCD碼,并顯示輸出。5〕編寫(xiě)一通用過(guò)程用來(lái)將十進(jìn)制數(shù)(從鍵盤(pán)輸入)轉(zhuǎn)換為P(從鍵盤(pán)輸入)進(jìn)制數(shù)。三、實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái)四、實(shí)驗(yàn)步驟1)按程序流程圖編制實(shí)驗(yàn)程序。2)輸入源程序。3)匯編、連接程序,執(zhí)行程序,檢查結(jié)果。4)程序的執(zhí)行可用DEBUG的G命令,也可用T命令單步跟蹤執(zhí)行。5)用D命令檢查執(zhí)行結(jié)果。五、實(shí)驗(yàn)報(bào)告的要求1〕列出源程序。2〕對(duì)程序中用到的存放器說(shuō)明其功能。3〕總結(jié)算術(shù)運(yùn)算和代碼轉(zhuǎn)換程序的設(shè)計(jì)方法。4)說(shuō)明怎樣使用DEBUG進(jìn)展程序調(diào)試的。調(diào)試過(guò)程中所遇到的問(wèn)題是如何解決的。Eaxm1:DATASEGMENT ADB82H,34H,56H,78H,2AH,0BCH,0EFH,00H BDB34H,56H,78H,9AH,0BCH,0EFH,16H LENBEQU$-B LEN2EQU(B-A)*2 RESDBLEN2DUP('?'),'$'DATAENDSSTACKSEGMENTPARASTACK DW20DUP(?)STACKENDSCODESEGMENT ASSUMEDS:DATA,CS:CODE,SS:STACKSTART: MOVAX,DATA MOVDS,AX;多字節(jié)相加 MOVSI,0 CLC MOVCX,LENBLOP1: MOVAL,A[SI] ADCAL,B[SI] MOVA[SI],AL INCSI LOOPLOP1 ADCBYTEPTRA[SI],0;輸出 MOVSI,0 ADDSI,LENB MOVDI,0 MOVCX,LENB+1LOP2: PUSHCX MOVAL,A[SI];高位轉(zhuǎn)換 MOVBL,AL MOVCL,4 SHRBL,CL CMPBL,0AH JBNEXT1 ADDBL,07HNEXT1: ADDBL,30H MOVRES[DI],BL INCDI;低位轉(zhuǎn)換 MOVBL,AL ANDBL,0FH CMPBL,0AH JBNEXT2 ADDBL,07HNEXT2: ADDBL,30H MOVRES[DI],BL INCDI DECSI POPCX LOOPLOP2 MOVAH,09H MOVDX,OFFSETRES INT21H MOVAH,4CH INT21HCODEENDSENDSTARTExam5:DATASEGMENTSTRING1DB'INPUTYOURM=','$'STRING2DB'INPUTYOURP=','$'REDB8DUP(30H)DATAENDSSTACK1SEGMENTSTACKDW60HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVDX,OFFSETSTRING1MOVAH,09HINT21HMOVAH,01HINT21HANDAX,0000FHMOVDL,10MULDLMOVBX,AXMOVAH,01HINT21HANDAL,0FHCLCADDBL,ALADCBH,0MOVDL,0AHMOVAH,02HINT21HMOVDL,0DHINT21HMOVDX,OFFSETSTRING2MOVAH,09HINT21HMOVAH,01HINT21HMOVDH,ALSUBDH,30HMOVDL,0AHMOVAH,02HINT21HMOVDL,0DHINT21HMOVAX,BXMOVBX,0001HMOVDI,OFFSETRELOP1:DIVDHADDAH,30HMOV[DI],AHCBWADDDI,BXCMPAL,0JALOP1MOVCX,08HMOVDI,OFFSETRECLCADCDI,CXLOP2:SUBDI,BXMOVDL,[DI]MOVAH,02HINT21HLOOPLOP2MOVAH,4CHINT21HCODEENDSENDSTART實(shí)驗(yàn)五輸入輸出程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?)掌握輸入輸出程序的編寫(xiě)方法。2)熟悉系統(tǒng)功能調(diào)用的方法。3)熟悉動(dòng)畫(huà)程序的編寫(xiě)方法。二、實(shí)驗(yàn)內(nèi)容1〕在CRT上每隔一秒連續(xù)顯示字符0-9。編程提示為了使輸出的字符之間有空格,在每一個(gè)循環(huán)中輸出一個(gè)0-9的字符和一個(gè)空格。為了輸出0-9,置存放器BL初值為0,每循環(huán)一次使其增量。為了保證輸出是十進(jìn)制,增量后用DAA調(diào)整指令。由于輸出為一位十進(jìn)制數(shù),用AND0FH指令屏蔽高4位。2〕用系統(tǒng)功能調(diào)用將‘HELLO’由鍵盤(pán)輸入,再?gòu)钠聊惠敵觥?**HELLO***’。3〕編制在屏幕上畫(huà)線(xiàn)的子程序,調(diào)用該子程序畫(huà)一矩形。4〕編制字母下落一行的子程序,調(diào)用該子程序使字母從屏幕頂部下落到底部。5〕創(chuàng)立一磁盤(pán)文件,保存從鍵盤(pán)輸入的字符串。6〕編寫(xiě)程序用設(shè)置系統(tǒng)時(shí)間,首先從鍵盤(pán)以十進(jìn)制數(shù)形式輸入時(shí)間,然后修改系統(tǒng)時(shí)間,并重新以十進(jìn)制形式顯示時(shí)間。7〕編寫(xiě)程序?qū)⑵聊环指畛筛駹?,每一格涂上不同顏色,格?shù)從鍵盤(pán)輸入。8〕編寫(xiě)程序在屏幕上顯示菜單,輸入相應(yīng)菜單的序號(hào)后,選種該菜單項(xiàng)。三、實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái)四、實(shí)驗(yàn)步驟1)按程序流程圖編制實(shí)驗(yàn)程序。 2)輸入源程序。3)匯編、連接程序,執(zhí)行程序,檢查結(jié)果。4)程序的執(zhí)行可用DEBUG的G命令,也可用T命令單步跟蹤執(zhí)行。五、實(shí)驗(yàn)報(bào)告的要求1)列出源程序。2)總結(jié)輸入輸出程序及動(dòng)畫(huà)的編寫(xiě)方法。3)總結(jié)常用系統(tǒng)調(diào)用的功能及調(diào)用方法。Exam1:STACKSEGMENTSTACKDB1024DUP〔0〕STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACKSTART:MOVBL,0LP:MOVDL,20HMOVAH,2INT21HMOVAL,BLADDAL,0DAAANDAL,0FHMOVBL,ALPUSHBXORAL,30HMOVDL,ALMOVAH,2INT21HMOVBX,3E8HLP2:MOVCX,176H;延時(shí)1msLP1:PUSHFPOPFLOOPLP1DECBXJNZLP2POPBXINCBLJMPLPCODEENDSENDSTARTExam2:STACKSEGMENTSTACKDB1024DUP〔0〕STACKENDSDATASEGMENTBUFFDB6,7DUP〔〕,‘$’DATAENDSINPUTMACROBUFEMOVDX,OFFSETBUFEMOVAH,0AHINT21HENDMPUTCHARMACROCHARMOVDL,CHARMOVAH,02HINT21HENDMCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXINPUTBUFF;讀取字符串?BUFFPUTCHAR0DHPUTCHAR0AH;光標(biāo)另起一行MOVCX,0003HNEXT:PUTCHAR2AHLOOPNEXTMOVCL,BUFF+1SUBCH,CHMOVBX,OFFSETBUFF+2BEGIN:MOVAL,[BX]PUTCHARALINCBXLOOPBEGINMOVCX,0003HNEXT1:PUTCHAR2AHLOOPNEXT1MOVAH,4CHINT
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年大數(shù)據(jù)中心機(jī)房建設(shè)工程合同
- 2024年廣告媒體采購(gòu)發(fā)布合同
- 2024城市公園環(huán)境衛(wèi)生承包協(xié)議
- 2024年工程貸款協(xié)議模板助力項(xiàng)目發(fā)展
- 2024年危險(xiǎn)品運(yùn)輸合同范本
- 2024年應(yīng)急通信系統(tǒng)設(shè)備采購(gòu)及安裝合同
- 2024年工程質(zhì)量檢測(cè)居間合同
- 2024年雙方共同投資建立教育咨詢(xún)公司的合同
- 挑食偏食課件教學(xué)課件
- 2024婚姻關(guān)系解除后債務(wù)清償合同
- 河北省石家莊市長(zhǎng)安區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期期中英語(yǔ)試卷
- 品牌經(jīng)理招聘筆試題及解答(某大型國(guó)企)2025年
- 多能互補(bǔ)規(guī)劃
- 珍愛(ài)生命主題班會(huì)
- 《網(wǎng)絡(luò)數(shù)據(jù)安全管理?xiàng)l例》課件
- 消除“艾梅乙”醫(yī)療歧視-從我做起
- 第7課《回憶我的母親》課件-2024-2025學(xué)年統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
- 八年級(jí)歷史上冊(cè)(部編版)第六單元中華民族的抗日戰(zhàn)爭(zhēng)(大單元教學(xué)設(shè)計(jì))
- 公司研發(fā)項(xiàng)目審核管理制度
- 《詩(shī)意的色彩》課件 2024-2025學(xué)年人美版(2024)初中美術(shù)七年級(jí)上冊(cè)
- 小學(xué)生主題班會(huì)《追夢(mèng)奧運(yùn)+做大家少年》(課件)
評(píng)論
0/150
提交評(píng)論