计算机程序编写.pdf
1、设在数据段中有X,Y两变量字(节单元),试编写程序段计算(只写有关程序能的指令):
Y=X当X=0
Y=0当X0
解:moval,x
cmpa;,0
jgeAl
moval,0
Al:movy,al
2在STR单元开始定义了一长度为LEX字节的字符串,统计出其中大写字母的个数并存放到LARGE字节单元中。请
编一完整的源程序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字节单元有•个数据,试编制•程序段将该数据的低4位变为1010B,最高位(第7位)置1,其余3
位不变,结果送DAT2字节单元。
MOVALDATA1
;
ANDAL70H
:
ADDAL8AH
;
MOVDATA2,AL
4、在和N2两数据区中,分别有10H个带符号数。试编制一源程序,找出对应项中较小的数据,并将这些较小
的数据存入N3数据区中(要求:对应项比较时必须用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]
M