河北工業(yè)大學(xué)~匯編實(shí)驗(yàn)報(bào)告_第1頁(yè)
河北工業(yè)大學(xué)~匯編實(shí)驗(yàn)報(bào)告_第2頁(yè)
河北工業(yè)大學(xué)~匯編實(shí)驗(yàn)報(bào)告_第3頁(yè)
河北工業(yè)大學(xué)~匯編實(shí)驗(yàn)報(bào)告_第4頁(yè)
河北工業(yè)大學(xué)~匯編實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論