




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 6 处理机控制指令1 标志处理指令CLC STC CMC CLD STD CLI STI2 处理机控制指令HLT NOP WAIT ESC LOCK 2 1 标志处理指令 设置和清除标志的指令 只影响指令指定的标志 3 2 处理机控制指令 暂停指令HLT格式HLT执行使CPU处于暂停状态用于等待外部中断 中断处理结束后 继续执行HLT后的下一条指令例 STI 允许外部中断HLT 等待中断MOVAX 0 4 空操作指令NOP格式NOP指令不执行任何操作 5 7 串处理指令串的基本概念顺序存放在内存中的一组数据 称为串 用串的首 末 地址 元素类型 串的长度表示 6 串操作种类 串传送将串从内存某一区域传送到另一区域 从串取从串中取出某一元素 存入串将某个数据存入串中 串比较对两个串进行比较 搜索串在串中搜索 查找 某数据 关键字 7 8 串指令串传送MOVS从串取LODS存入串STOS串比较CMPS搜索串SCAS 9 10 对只有一个存储器操作数的串指令如LODS 从串取 STOS 存入串 SCAS 搜索串 另一个操作数在AL 字节操作 或AX 字操作 CMPS 串比较 SCAS 串搜索 影响标志 MOVS 串传送 LODS 从串取 STOS 存入串 不影响标志 11 串传送 格式MOVSB字节传送MOVSW字传送 MOVSB执行操作 ES DI DS SI 字节传送 SI SI 1修改源串指针 DI DI 1修改目的串指针其中 DF 0 用 DF 1 用 MOVSW执行操作 ES DI DS SI 字传送 SI SI 2修改源串指针 DI DI 2修改目的串指针 12 13 14 15 16 重复控制前缀重复前缀REP当相等重复前缀REPZ REPE当不相等重复前缀REPNZ REPNE 17 重复前缀REP执行过程 1 当 CX 0 结束REP 执行REP下一条指令 2 当 CX 0 将CX的内容减1 执行REP后的串指令 返回 1 例LEADI destinationLEASI sourceMOVCX 20REPMOVSBMOVAX 0只在 CX 0时退出循环 18 当相等重复前缀REPZ执行过程 1 当 CX 0 结束REPZ 执行REPZ下一条指令 2 当 CX 0 将CX的内容减1 执行REPZ后的串指令 3 当ZF 1 返回 1 4 当ZF 1 则结束REPZ 执行REPZ下一条指令 CX 减1操作不影响标志ZF标志由串操作决定 19 当不相等重复前缀REPNZ执行过程 1 当 CX 0 结束REPNZ 执行REPNZ下一条指令 2 当 CX 0 将CX的内容减1 执行REPNZ后的串指令 3 当ZF 0 返回 1 4 当ZF 0 则结束REPNZ 执行REPNZ下一条指令 20 例1用REPMOVS进行数据块传送 编程 设置传送方向用CLD使DF 0 地址增加方向 正向 用STD使DF 1 地址减小方向 反向 设置源串地址将源串首地址 DF 0 或末地址 DF 1 放入DS SI中 设置目的串地址将目的串首地址 DF 0 或末地址 DF 1 放入ES DI中 设置串长度将串的长度 传送次数 放入CX中 字节传送用REPMOVSB字传送用REPMOVSW 21 22 data1SEGMENTstr1DB ABCD 源串data1ENDSdata2SEGMENTstr2DB4DUP 缓冲区data2ENDScodeSEGMENT CLD DF 0 正方向传送MOVAX data1 源串首地址的段值 DSMOVDS AXLEASI str1 源串首地址的偏值 SIMOVAX data2 目的串首地址的段值 ESMOVES AXLEADI str2 目的串首地址的偏值 DIMOVCX 4 串长度CXREPMOVSB 串传送 codeENDS 23 data1SEGMENTstr1DB ABCD data1ENDSdata2SEGMENTstr2DB4DUP data2EMDScodeSEGMENT CLDMOVAX data1MOVDS AXLEASI str1MOVAX data2MOVES AXLEADI str2MOVCX 4REPMOVSB codeENDS 假设程序经汇编 连接后 装入内存的情况如下 24 程序执行结果 25 例2比较string1和string2的两串 长度为8字节 26 用REPZCMPS进行串比较编程 设置比较方向 STD或CLD 设置源串 目的串地址将源串首地址 DF 0时 或末地址 DF 1时 放入DS SI将目的串首地址 DF 0时 或末地址 DF 1时 放入ES DI 设置串长度将串的长度放入CX中 按字节比较用REPZCMPSB按字比较用REPZCMPSW 27 执行完REPZCMPS后 根据ZF判断两串比较结果 若ZF 1 两串相等 此时 CX 0 表明串中所有元素已比较完毕SI DI指向串尾的下一单元 若ZF 0 两串不等 此时 CX的值为剩下的未比较的元素个数 SI DI指向不相等元素的下一元素 28 codeSEGMENT CLD DF 0 正向比较MOVAX SEGstring1 源串首地址 DS SIMOVDS AXLEASI string1MOVAX SEGstring2 目的串首地址 ES DIMOVES AXLEADI string2MOVCX 8 串长度 CXREPZCMPSB 串比较JZequal 利用ZF判断比较结果不相等处理JMPexitequal 相等处理exit codeENDS 29 30 31 执行完REPZCMPSB后 此时 ZF 0 两串不等CX 3 剩下的未比较的元素个数SI DI指向不相等元素的下一元素 例 32 例3用REPNZSCAS在串中找关键字 编程步骤 设置查找方向 设置串地址将串的首地址 DF 0时 或末地址 DF 1时 放入ES DI中 设置关键字将关键字放入AL 关键字为字节 或放入AX 关键字为字 设置串长度将串的长度放入CX中 查找字节用REPNZSCASB查找字用REPNZSCASW 33 执行完REPNZSCAS后 根据ZF判断查找结果 若ZF 1 则串中有关键字 此时 CX的值为剩下的未搜索的元素个数 DI指向关键字元素的下一元素 而关键字在 DI 1的位置若ZF 0 则串中无关键字 此时 CX 0 表明串中所有元素以搜索完毕DI指向串尾的下一单元 34 例 REPNZ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论