版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
循环控制指令用在循环程序中以确定是否要继续循环。循环次数通常置于CX中。转移的目标应在距离本指令-128~+127的范围之内。循环控制指令不影响标志位。3.5循环程序设计(1)LOOP格式:LOOPlabel操作:(CX)-1→CX;若(CX)≠0,则转至label处执行;否则退出循环,执行LOOP后面的指令。LOOP指令与下面的指令段等价:
DECCX JNZlabel(2)LOOPZ(LOOPE)格式:LOOPZ
label操作:(CX)-1→CX;
若(CX)≠0∧ZF=1,则转至label处执行;否则退出循环,执行LOOP后面的指令。(3)LOOPNZ(LOOPNE)格式:LOOPNZlabel操作:(CX)-1→CX;若(CX)≠0∧ZF=0,则转至label处执行;否则退出循环,执行LOOP后面的指令。(4)根据CX内容来决定是否转移的转移指令
JCXZlabel
若(CX)=0,则转移到label处开始执行。举例:例1:给1A000H开始的256个内存单元均减去1,若发现某个单元减为0则立即退出循环,其后的单元不再减1。
MOVAX,1A00HMOVDS,AXMOVDI,0MOVCX,256GOON:DECBYTEPTR[DI]INCDICMPBYTEPTR[DI-1],0LOOPNZ
GOONHLT例2:在8000H开始的长度为1000字节的字符串中查找’S’,若找到,把其偏移地址记录在ADDR中,否则ADDR单元置为0FFFFH。MOVDI,8000HMOVCX,1000MOVAL,’S’MOVADDR,0FFFFHGOON:SCASBLOOPNZ
GOONJNZDONEDECDIMOVADDR,DIDONE:HLT(3)单重循环程序举例1.计算Z=X+Y其中X和Y是双字变量。
dataSegmentXDD752028FFHYDD9405ABCDHZDB5DUP(?)dataendsMOVCX,4MOVSI,0ANDAX,AXMOVAL,BYTEPTRX[SI]ADCAL,BYTEPTRY[SI]MOVZ[SI],ALINCSILOOPAGAINMOVZ[SI],0RCLZ[SI],1retAGAIN:(4)条件控制的循环程序举例4.将存储器中16位无符号二进制数转换成十进制数,送显示器显示出来。dataSegmentBINARYDW55HOBUFDB6DUP(?)dataendsMOVBX,OFFSETOBUF+5MOVBYTEPTR[BX],’$’MOVAX,BINARYMOVCX,10MOVDX,0DIVCXADDDL,30HDECBXMOV[BX],DLORAX,AXJNZAGAINMOVDX,BXMOVAH,9INT21HretAGAIN:(5)双重控制的循环程序举例
5.已知字节变量BUF存储区中存放着以0DH(回车的ASCII码)结束的十进制数的ASCII码。编程检查该字节变量存储区中有非十进制数,若有显示“ERROR”;若无则统计十进制数的位数(小于100)并送显示器显示。datasegmentBUFDB‘345678…’,0DHOBUFDB3DUP(?)ERRDB'ERROR$'dataendsMOVAX,0MOVBX,0AGAIN:CMPBUF[BX],0DHJEDONECMPBUF[BX],'0'JBERRORCMPBUF[BX],'9'JAERRORINCALAAAINCBXJMPAGAIN
DONE:ORAX,3030HMOVOBUF+1,ALMOVOBUF,AHMOVOBUF+2,'$'MOVDX,OFFSETOBUFMOVAH,9INT21HRETERROR:MOVDX,OFFSETERRMOVAH,9INT21Hret3.6串操作指令串操作指令就是用一条指令实现对一串字符或数据的操作。串操作指令的特点:
1.可以对字节串或者字串进行操作;
2.源串用DS段SI作间接寻址,目的串用ES段DI作间接寻址。每次串操作后,SI和DI会自动修改,修改的方向与DF有关。
3.串操作时,地址的修改与方向标志DF有关。
DF=0,增址
W=1,字(SI+2
SI,DI+2
DI)
W=0,字节(SI+1
SI,DI+1
DI)
DF=1,减址
W=1,字(SI-2
SI,DI-2
DI)
W=0,字节(SI-1
SI,DI-1
DI) 4.可以加重复前缀:(相当于一个循环程序的运行)
修改CX并进行判断
REPCX到0不再重复;
REPE/REPZZF=1或CX=0不再重复;
REPNE/REPNZZF=0或CX=0不再重复。串操作指令有5类:1.字符串传送MOVSB/MOVSW2.字符串比较CMPSB/CMPSW3.字符串检索SCASB/SCASW4.取字符串LODSB/LODSW5.存字符串STOSB/STOSW串操作指令是唯一的一组能直接处理源和目的操作数都在存储器中的指令1.字符串传送MOVSB/MOVSW功能:DS:SI
ES:DI,修改SI、DI。前缀:REP例1.要求将0000:1000H地址开始的100H个数传送到2000:0000H开始的单元中去。程序:
MOV
AX,0
MOV
DS,AX
MOV
AX,2000H
MOV
ES,AX
MOVSI,1000H
MOVDI,2000H
MOVCX,100H
CLD
REPMOVSB对标志位没有影响MOVS.ASM2.字符串比较CMPSB/CMPSW功能:DS:SI-ES:DI,修改SI,DI前缀:REPE/REPZ,REPNE/REPNZ例2.对串STRING1和STRING2进行比较。
MOVSI,OFFSETSTRING1
MOVDI,OFFSETSTRING2
MOVCX,COUNT
CLD
REPZCMPSB
JNZUMT(ZF≠1,CX≠0)MOVAL,0
JMPOPTUMT:MOVAL,0FFHOPT:MOVRESULT,AL HLT3.字符串检索SCASB/SCASW(SCA.asm)功能:AL/AX-ES:DI,修改DI。前缀:REPE/REPZ,REPNE/REPNZ例3.关键字
AL,记下检索次数,存放地址。
MOVDI,OFFSETBLOCK
MOVCX,COUNT
MOVAL,CHAR
CLD
REPNZSCASB;
JZFUD
MOVDI,0
JMPDONEFUD:DECDI MOVPOINTER,DI
(地址)
MOVBX,OFFSETBLOCK SUBDI,BX(次数)DONE:HLT4.取字符串LODSB/LODSW功能:DS:SI
AL/AX,修改SI。前缀:无5.存字符串STOSB/STOSW功能:AL/AX
ES:DI,修改DI。前缀:REP(串中建立相同的值)例4.数据块首地址BLOCK,找出正数送PLUS_DATA,找出负数送MINUS_DATA。(PLUS.asm)START:MOVSI,OFFSETBLOCK
MOVDI,OFFSETPLUS_DATA
MOVBX,OFFSETMINUS_DATA
MOVCX,COUNT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校秋季读书节活动方案计划
- 仓库服务质量的提升路径计划
- 前台文员的职业危机应对策略计划
- 仓库应急预案与事故处理计划
- 人教版小学英语教案
- 冀教版七年级英语下册单元测试题
- 备战夏季无意中发现这个东西很好用
- 新版车间安全培训试题及答案 完整版
- 项目管理人员安全培训试题带答案(完整版)
- 公司员工安全培训试题附答案(突破训练)
- 市政道路及设施零星养护服务技术方案(技术标)
- 2024中水北方勘测设计研究限责任公司校园招聘【重点基础提升】模拟试题(共500题)附带答案详解
- 城市燃气管道等老化更新改造项目初步设计说明
- 三年级数学上册课件-5. 倍的认识 - 人教版(共16张PPT)
- 综合实践活动创意彩泥(课件)-2020-2021学年三年级下册(14)ppt课件
- 中小学幼儿园安全技术防范系统要求.doc
- 矿产地球物理勘查项目野外验收意见书
- 银行系统论文:农信社信贷违规的表现形式及防范对策
- 监控弱电工程施工技术方案(完整版)
- 对外投资业务流程图(doc 1页).DOC
- 热食类食品制售操作流程
评论
0/150
提交评论