計(jì)算機(jī)程序編寫_第1頁(yè)
計(jì)算機(jī)程序編寫_第2頁(yè)
計(jì)算機(jī)程序編寫_第3頁(yè)
計(jì)算機(jī)程序編寫_第4頁(yè)
計(jì)算機(jī)程序編寫_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、設(shè)在數(shù)據(jù)段中有X,Y兩變量(字節(jié)單元),試編寫程序段計(jì)算(只寫有關(guān)程序功能的指令):

Y=X當(dāng)X>=0

Y=0當(dāng)X<0

解:moval,x

cmpa;,0

jgeAl

moval,0

Al:movy,al

2在STR單元開(kāi)始定義了一長(zhǎng)度為L(zhǎng)EX字節(jié)的字符串,統(tǒng)計(jì)出其中大寫字母的個(gè)數(shù)并存放到LARGE字節(jié)單元中。請(qǐng)

編一完整的源程序c

DATASEGMENT

STRDB'.....'

LENEQU$-STR

LARGEDB?

DATAENDS

CDEGMENT

ASSUMECS:CD,DSATA

LARGPROCFAR

MOVAX,DATA

MOVDS,AX

LEASI,STR

MOVCX,LEN

MOVBL,0

NT:CMPBYTEPTR[SI],'A'

JBNOLARG

CMPBYTEPTR[SI],'Z'

JANOLARG

INCBL

NOLARG:INCSI

LOOPNT

MOVLARGE,BL

MOVAH,4CH

INT21H

LARGENDP

CDENDS

ENDLARG

3、已知DAT1字節(jié)單元有?個(gè)數(shù)據(jù),試編制?程序段將該數(shù)據(jù)的低4位變?yōu)?010B,最高位(第7位)置1,其余3

位不變,結(jié)果送DAT2字節(jié)單元。

MOVAL;DATA1

ANDAL:70H

ADDAL;8AH

MOVDATA2,AL

4、在和N2兩數(shù)據(jù)區(qū)中,分別有10H個(gè)帶符號(hào)數(shù)。試編制一源程序,找出對(duì)應(yīng)項(xiàng)中較小的數(shù)據(jù),并將這些較小

的數(shù)據(jù)存入N3數(shù)據(jù)區(qū)中(要求:對(duì)應(yīng)項(xiàng)比較時(shí)必須用CMPS指令)。

DATASEGMENT

N1DBXX,XX,XX,...

N2DBXX,XX,XX,

N3DB10HDUP(0)

DATAENDS

解:STACKSEGSEGMENTSTACK

DB1024DUP(O)

STACKSEGENDS

DATASEGMENT

N1DB5Ah,6Fh,2Eh,0D8h,0E3h,9Ch,ODBh,0B7h,5Bh,21h,35h,8Eh,4Ah,15h,58h,75h

N2DB58h,OFFh,5Eh,38h,0C7h,OAlh,26h,86h,48h,35h,48h,16h,OBAh,OFAh,ODFh,0E9h

N3DB1011DUP(O)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACKSEG

START:MOVAX,DATA

MOVDS,AX

INCAX

MOVES,AX

MOVSI.OFFFHI

MOVDI,OFFFFH

MOVCX,lOh

MOVBX,OFFSETN3

CLD

AGAIN:CMPSBYTEPTRN1,BYTEPTRN2

JLNILES

MOVAL,[Sl+lOh]

MOV[BX][SI],AL

JMPCMPAGAIN

NILES:MOVAL,[si]

MOV[BX][SI],AL

CMPAGAIN:deeex

jnzagain

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

5、加密移動(dòng)字符串,設(shè)緩沖區(qū)SBUFF中有20個(gè)小寫字母a,將每個(gè)a加上它相對(duì)于緩沖區(qū)的位移量后傳送到緩沖

區(qū)DBUFFo

STACKSEGSEGMENTSTACK

DB1024DUP(O)

STACKSEGENDS

DATASEGMENT

SBUFFDB20DUP('a')

DBUFFDB20DUP(O)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACKSEG

START:MOVAX,DATA

MOVDS,AX

MOVCX,20

MOVSI,0

CLD

AGAIN:LODSB

MOVBX,SI

DECBX

ADDAX,BX

MOVDBUFFESI-1],AL

LOOPAGAIN

DBUFF

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6、在EUF1和BUF2兩個(gè)數(shù)據(jù)區(qū)中,各定義有10個(gè)帶符號(hào)字?jǐn)?shù)據(jù),試編制一完整的源程序,求它們對(duì)應(yīng)項(xiàng)的和,并

將和數(shù)存入以SUM為首址的數(shù)據(jù)區(qū)中。

DATASEGMENT

BUF1l)W-56,24,54,-1,89,-8,....

BUF2DW45,-23,124,345,-265,....

SUMDW10DUP(0)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

BEGIN;

MOVAX;DATA

MOVES;AX

MOVDS;AX

LEASLBUF1

MOVBX,OFFSETBUF2

LEADLSUM

MOVCXJO

LI:

MOVAX;[SI]

ROLAX;1

JCL2

RORAX;1

L4:

MOVDX:AX

MOVAX:[BX]

ROLAX;1

JCL3

RORAX;1

L5:

ADDAX、DX

MOV[DI],AX

INCBX

INCBX

INCSI

INCSI

INCDI

INCDI

LOOPLI

JMPLAST

L2:

RORAX;1

NEGAX

JMPL4

L3:

RORAX;1

NEGAX

JMPL5

LAST:

MOVAH;4CH

INT21H

CODEENDS

ENDBEGIN

7、試編寫一個(gè)匯編語(yǔ)言程序,要求對(duì)鍵盤輸入的小寫字母用大寫字母顯示出來(lái)。

DATASSEGMENT

MSGDB0,0,〃H〃,”$〃

CRDB13,10,3"

TABIDB”0123456789ABCDEF”

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:CODES,DS:DATAS,ES:DATAS,SS:STACKS

START:

MOVAX;DATAS

MOVDS:AX

MOVES:AX

MOVCX;127

MOVDL:0

MOVSI;OFFSETTABI

MOVOFFSETMSG

AG:PUSHCX

PUSHDX

MOVAX;0

MOVAL.DL

MOVBL10H

DIVBL

MOVBX;0

MOVBL:AH

MOVDll[SI+BX]

MOV[DI+1],DH

MOVBL:AL

MOVDH;[SI+BX]

MOV[DI],DH

PUSHDX

MOV[)X;OFFSETMSG

MOVAH;9

INT2111

POPDX

MOVAll2

INT21H

PUSHAX

MOVDX;OFFSETCR

MOVAH:9

INT21H

POPDX

POPDX

POPCX

INCDL

LOOPAG

MOVAH:4cH

INT21H

CODESENDS

ENDSTART

8、匯編程序,以BUF為首地址的內(nèi)容存單元中有「15的平方表。查表求X單元中數(shù)(1~15之間)的平方值并送

回X單元

codesegment

assumecs:code,ds:code

orglOOh

start:

pushcs

popds

leabx}BUF;BX指向表首

moval.X

decal;偏移送AL

xlat;查表

movX,al;平方值并送回X單元

movah.4ch

int21h

BUFdb1,4,9,16,25,36,49,64,81,100,121,144,169,196,225

Xdb8

codeends

endstart

9、已知存儲(chǔ)器中有一個(gè)首地址為ARRAY的100個(gè)字?jǐn)?shù)組,現(xiàn)要求把數(shù)組中的每個(gè)數(shù)加1(不考慮溢出的可能性),

試編制完成此功能的程序段。

MOVBX,OFFSETARRAY

MOVAX,1

MOVCX,100

L00P1:ADD[BX],AX

LOOPL00P1

10、.編寫一段程序,如果字節(jié)變量TESTONE和TESTTWO相等,則調(diào)用子程序,顯示‘#';否則調(diào)用NOTSAME子程

序,顯示。

datasegment

infondbOdh,Oah,*#$'

infon2dbOdh,Oah,'!$'

TESTONEdbOdh,Oah,*2$'

TESTTWOdbOdh,Oah,'1$'

dataends

stacksegmentstack

db200dup(O)

stackends

codesegment

assumeds:data,ss:stack,cs:code

start:

movax;offsetTESTONE

movbxroffsetTESTTWO

empax.bx

jek2

jnekl

kl:callshow

k2:callNOTSAME

exit:movah,4ch

int21h

showprocnear;

leadx.infonmovah,9

int21h

ret

showendp

NOTSAMEprocnear;

leadx.infon2;在屏幕上顯示提示信息

movah;9

int21h

NOTSAMEendp

codeends

endstart

11、已定義了兩個(gè)整數(shù)變量A和B,試編寫程序完成下列功能:

A.若兩個(gè)數(shù)中有一個(gè)是奇數(shù),則將奇數(shù)存入A中,偶數(shù)存入B中。

B.若兩個(gè)數(shù)均為奇數(shù),則將兩數(shù)均加1后存回原變量。

C.若兩個(gè)數(shù)均為偶數(shù),則兩個(gè)變量均不改變。

(要求各段定義完整,并畫出程序流程圖)

datasegment

adb3

bdb3

dataends

codesegment

assumeds:data,cs:code

start:

movax.data

movds:ax

testa.1

jznextl

testb.1

jztj

inca

incb

jmptj

nextl:

testb;1

jztj

moval.a

xchgal,b

mova,al

tj:

movah.4ch

int21h

codeends

endstart

12、假設(shè)DATAX和DATAX+2單元存放雙字P,DATAY和DATAY+2單元中存放雙字Q,編程計(jì)算2P-Q,差在DX,AX中。

若OF=1,程序轉(zhuǎn)OVERFLOW,否則轉(zhuǎn)NOOYER。(只寫與試題要求有關(guān)的指令語(yǔ)句)

DATASEGMENT

DATAXDW2321H,3243H

DATAYDW1233H,4332H

DATAENDS

CODESEGMENT

ASSUMEI)S:DATA,CS:CODE

START:

MOVAX;DATA

MOVDS:AX

MOVDX:DATAX+2

MOVAX;DATAX

SHLAX:1

RCLDXJ;求2P

SUBAX:DATAY

SBBDX:DATAY+2;求2P-Q

JOOVERFLOW

NOFLOW:

MOVAll0

JMPEXIT

OVERFLOW:

MOVAH;1

EXIT:

MOVAX;4C00H

INT21H

CODEENDS

ENDSTART

13、已知在數(shù)據(jù)區(qū)BUF1和BUF2分別存放20個(gè)字節(jié)數(shù)據(jù)。編程檢查兩數(shù)據(jù)區(qū)中的數(shù)據(jù)是否相同。若完全一致,則

將標(biāo)志單元FLAG置FFH,否則置0,并將第一次出現(xiàn)的不同數(shù)據(jù)的地址分別存放在ADDR1和ADDR2單元中。

要求:源程序格式完整。

datasegment

xdw?

ydw?

msgdb'continuc?YesorNo?$'

msgldb'Inputfirstnumber:$*

msg2db'Inputsecondnumber:$?

msg3db'Shangis:$'

dataends

decihexsegment

assumecs:decihex,ds:data

mainprocfar

movax;data

movds.ax

repeat:

leasi.x

leadx.msgl

movah:9

int21h

calldecibin

callcrlf

leasi.y

leadx.msg2

movah,9

int21h

calldecibin

callcrlf

movax.x

cwd

divwordptr[x+2]

pushdx

movbx;ax

leadx.msg3

movah.9

int21h

callbinidec

movdl:’.'

movah.2

int21h

popax

movcx;10

mulex

divwordptr[x+2]

movbx.ax

movex.1

calldecdiv

cal1crlf

leadx;msg

movah.9

int21h

callcrlf

movah.i

int21h

empal.*Y*

jzrepeat

14、設(shè)X、Y、Z、W為十六位有符號(hào)數(shù)編程計(jì)算:

W-(X+Y*Z)/8-Y除法余數(shù)丟棄

若ZF=1,程序轉(zhuǎn)EQ;否則轉(zhuǎn)NOT_EQ。

movax;y

imulz;計(jì)算y*z,結(jié)果在dx和ax中

addax.x;ax+x

adcdx.0;dx+ax與x相加產(chǎn)生的進(jìn)位

movbx.8

divbx;dx、ax除以8,余數(shù)在dx中,商在ax中

subax:y;商-丫,影響標(biāo)志位ZF

movw,ax;存結(jié)果,mov指令不影響標(biāo)志位

jzeq;測(cè)試的是sub執(zhí)行后的標(biāo)志,zf=l轉(zhuǎn)eq

jmpnot_eq;zf不為1,轉(zhuǎn)not_eq

15、已知在以ARRAY為首地址的數(shù)據(jù)區(qū)中存放10個(gè)帶符號(hào)字?jǐn)?shù)據(jù):

ARRAYl)W1,2,-1,3,4,-2,-3,4,5,-6

編程將ARRAY分成兩個(gè)數(shù)組:正數(shù)數(shù)組P_ARY和負(fù)數(shù)數(shù)組N_ARY,尹分別顯示正數(shù)項(xiàng)個(gè)數(shù)和負(fù)數(shù)項(xiàng)個(gè)數(shù)。

要求:源程序格式完整。

datasegment

arraydw1,2,-1,3,4,-2,-3,4,5,-6

P_ARYdw10dup(?)

N_ARYdw10dup(?);以上是定義

dataends

codesegment

assunccs:code,ds:data

start:

movax,data

movds,ax

leabx,array

leasi,N_ARY

leadi,P_ARY

movex,10

again:

empwordptr[bx],0;這里是比較

jlokl;>0放入OKI

jgok2:<0放入OKO

jmpok3;否則放入0K3

okl:novax,[bx]

nov[di],ax

adddi,2

jmpok3

ok2:novax,[bx]

nov[si],ax

addsi,2

jmpok3

ok3:addbx,2

decex

jnzagain

novah,4ch

int21h

codeends

endstart

16、X,Y,Z二個(gè)字節(jié)存儲(chǔ)單元中各有一個(gè)無(wú)符號(hào)數(shù),其中有兩個(gè)數(shù)據(jù)相等,找出不相等的哪個(gè)數(shù),并存入w單元

中,試編寫完成上述功能的程序段(只編寫有關(guān)代碼部分,勿需書寫源程序格式)。

moval,x

empal,y

jexy

jnenxy

xy:moval,z

movw,al

jmpover

nxy:empal,z

jexz

jnenxz

xz:moval,y

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論