




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设在数据段中有X,Y两变量(字节单元),试编写程序段计算(只写有关程序功能的指令):
Y=X当X>=0
Y=0当X<0
解: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字节单元。
MOVAL;DATA1
ANDAL:70H
ADDAL;8AH
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]
MOV[BX][SI],AL
CMPAGAIN:deeex
jnzagain
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
5、加密移动字符串,设缓冲区SBUFF中有20个小写字母a,将每个a加上它相对于缓冲区的位移量后传送到缓冲
区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两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的和,并
将和数存入以SUM为首址的数据区中。
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、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
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为首地址的内容存单元中有「15的平方表。查表求X单元中数(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、已知存储器中有一个首地址为ARRAY的100个字数组,现要求把数组中的每个数加1(不考虑溢出的可能性),
试编制完成此功能的程序段。
MOVBX,OFFSETARRAY
MOVAX,1
MOVCX,100
L00P1:ADD[BX],AX
LOOPL00P1
10、.编写一段程序,如果字节变量TESTONE和TESTTWO相等,则调用子程序,显示‘#';否则调用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、已定义了两个整数变量A和B,试编写程序完成下列功能:
A.若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中。
B.若两个数均为奇数,则将两数均加1后存回原变量。
C.若两个数均为偶数,则两个变量均不改变。
(要求各段定义完整,并画出程序流程图)
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、假设DATAX和DATAX+2单元存放双字P,DATAY和DATAY+2单元中存放双字Q,编程计算2P-Q,差在DX,AX中。
若OF=1,程序转OVERFLOW,否则转NOOYER。(只写与试题要求有关的指令语句)
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、已知在数据区BUF1和BUF2分别存放20个字节数据。编程检查两数据区中的数据是否相同。若完全一致,则
将标志单元FLAG置FFH,否则置0,并将第一次出现的不同数据的地址分别存放在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、设X、Y、Z、W为十六位有符号数编程计算:
W-(X+Y*Z)/8-Y除法余数丢弃
若ZF=1,程序转EQ;否则转NOT_EQ。
movax;y
imulz;计算y*z,结果在dx和ax中
addax.x;ax+x
adcdx.0;dx+ax与x相加产生的进位
movbx.8
divbx;dx、ax除以8,余数在dx中,商在ax中
subax:y;商-丫,影响标志位ZF
movw,ax;存结果,mov指令不影响标志位
jzeq;测试的是sub执行后的标志,zf=l转eq
jmpnot_eq;zf不为1,转not_eq
15、已知在以ARRAY为首地址的数据区中存放10个带符号字数据:
ARRAYl)W1,2,-1,3,4,-2,-3,4,5,-6
编程将ARRAY分成两个数组:正数数组P_ARY和负数数组N_ARY,尹分别显示正数项个数和负数项个数。
要求:源程序格式完整。
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二个字节存储单元中各有一个无符号数,其中有两个数据相等,找出不相等的哪个数,并存入w单元
中,试编写完成上述功能的程序段(只编写有关代码部分,勿需书写源程序格式)。
moval,x
empal,y
jexy
jnenxy
xy:moval,z
movw,al
jmpover
nxy:empal,z
jexz
jnenxz
xz:moval,y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水利水电工程行业标准理解试题及答案
- 如何教育孩子养成良好的学习习惯
- 回旋曲律动课件
- 工程经济经典案例试题及答案
- 2025年市政工程基础试题及答案解读
- 互联网旅游导游服务协议
- 提前了解中级经济师考试的各科目特点及试题及答案
- 公共关系的跨文化传播策略研究试题及答案
- 农村农产品进销存管理协议
- 水利水电经济评估试题及答案
- 中国数据中心产业发展白皮书023年
- 西部计划面试题及答案
- 肿瘤科病历书写规范
- 粪便标志物筛选策略-全面剖析
- 历史七年级历史下册期中复习知识点梳理课件 2024-2025学年七年级历史下册(统编版2024)
- 管道试压吹扫方案
- Unit 4 Clothes 单元整体(教学设计)-2024-2025学年人教精通版(2024)英语三年级下册
- 中医师承拜师合同公证书
- TCECA-G 0344-2025《零碳园区评价技术规范》团体标准
- 金融市场学知到智慧树章节测试课后答案2024年秋齐鲁师范学院
- 机械装配技术试题及答案
评论
0/150
提交评论