8086CPU指令系统市公开课一等奖省赛课获奖课件_第1页
8086CPU指令系统市公开课一等奖省赛课获奖课件_第2页
8086CPU指令系统市公开课一等奖省赛课获奖课件_第3页
8086CPU指令系统市公开课一等奖省赛课获奖课件_第4页
8086CPU指令系统市公开课一等奖省赛课获奖课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本教案内容第3章8086CPU指令系统汇编语言指令8086指令分类数据与转移地址寻址方式数据传送类指令算术运算类指令逻辑运算类指令移位类指令标志位操作指令转移指令循环控制指令子程序调用返回指令中止调用返回指令字符串操作指令I/O输入输出指令其它指令宏指令8086CPU指令系统第1页所谓字符串是指一组代码或数据,并不一定是常规由字符组成。字符串操作指令就是对这组代码或数据进行相同功效处理指令。字符串存放在一个连续存放区域中。3.13字符串操作指令8086CPU指令系统第2页3.13字符串操作指令8086系统提供了5类字符串操作指令:字符串传送MOVS(Movebyteorwordstring)字符串比较CMPS(Comparebyteorwordstring)字符串扫描SCAS(Scanbyteorwordstring)字符串装入LODS(Loadbyteorwordstring)字符串存放STOS(Storebyteorwordstring)

8086CPU指令系统第3页3.13字符串操作指令因为这类指令要对一组代码进行操作,希望能够成批处理数据,这需要字符串指令与重复前缀配合使用。重复前缀REP(Repeatstringoperation)重复前缀REPZ/REPE(Repeatstringoperationwhileequal/zero)重复前缀REPNZ/REPNE(Repeatstringoperationwhilenotequal/notzero)8086CPU指令系统第4页☞字符串处理指令既能够按字节操作,也能够按字操作,且DST和SRC寻址方式均为隐含寻址。这类指令要遵照共同约定以下:3.13字符串操作指令8086CPU指令系统第5页①若源串在存放器,则存放器地址由DS:SI确定;

若源串在存放器,则:字操作时,在AX中字节操作时,在AL中3.13字符串操作指令8086CPU指令系统第6页②若目串在存储器,则存储器地址必须由ES:DI确定;若目串在寄存器,则:字操作时,在AX中字节操作时,在AL中3.13字符串操作指令8086CPU指令系统第7页

③字符串操作指令CPU执行后,(SI)或(DI)会自动地修改,其修改方向受DF控制。3.13字符串操作指令8086CPU指令系统第8页1时,会自动地减1或20时,会自动地增1或2当DF=受操作类型控制,字节操作时,增/减1字操作时,增/减23.13字符串操作指令8086CPU指令系统第9页④字符串处理指令重复次数。

(重复执行次数)→CX3.13字符串操作指令8086CPU指令系统第10页☞

字符串操作指令有:

3.13字符串操作指令8086CPU指令系统第11页助记符格式主要功效MOVSDST,SRCMOVSBMOVSW(ES:DI)←(DS:SI)字操作时:(SI)←(SI)±2(DI)←(DI)±2字节操作时:(SI)←(SI)±1(DI)←(DI)±1字节传送字传送3.13字符串操作指令一、字符串传送指令在MOVSDST,SRC中,当DST和SRC同为字节类型时,等同于MOVSB指令;当DST和SRC同为字类型时,等同于MOVSW指令。8086CPU指令系统第12页3.13字符串操作指令比如指令MOVSVAR1,VAR2并不是完成VAR1变量内容传送到VAR2,而是将(DS:SI)中内容传送到由(ES:DI)指定位置,当VAR1和VAR2均为字节型变量时,该指令等同于MOVSB,当VAR1和VAR2均为字型变量时,该指令等同于MOVSW。8086CPU指令系统第13页3.13字符串操作指令说明:字符串传送指令对PSW标志位无影响。字符串传送指令每次只能完成一个字和字节传送,而实际应用中,经常需要将一块存放区域内容整体搬移到另一个位置,为此,8086提供了重复前缀。8086CPU指令系统第14页3.13字符串操作指令二、重复前缀有三种形式:REPREPZ/REPEREPNZ/REPNE它们放在字符串操作指令之前,表示重复执行该指令,重复次数由CX决定。8086CPU指令系统第15页助记符格式主要功效REPMINST

当(CX)≠0时,重复执行MINST,(CX)-1→(CX);MINSTSTOSWSTOSBMOVSWMOVSB3.13字符串操作指令1.重复前缀REP相当于LOOP指令8086CPU指令系统第16页3.13字符串操作指令当REP与MOVS指令配合时,有REPMOVSB

;(ES:DI)←(DS:SI)(字节传送),;(SI)←(SI)±1,(DI)←(DI)±1,;(CX)←(CX)-1,(CX)≠0时重复执行,;即当(CX)=0时退出循环REPMOVSW

;与REPMOVSB指令类似,;只是每次传送一个字8086CPU指令系统第17页助记符格式主要功效

REPE/REPZCINST

当(CX)≠0时,且ZF=1时,重复执行CINST,(CX)-1→(CX);3.13字符串操作指令CINSTCMPSSCAS2.重复前缀REPZ/REPE相当于LOOPZ/LOOPE指令8086CPU指令系统第18页助记符格式主要功效

REPNE/REPNZCINST当(CX)≠0时,且ZF=0时,重复执行CINST,(CX)-1→(CX).3.13字符串操作指令CINSTSCASCMPS3.重复前缀REPNZ/REPNE相当于LOOPNZ/LOOPNE指令8086CPU指令系统第19页助记符格式主要功效CMPSDST,SRCCMPSBCMPSW(DS:SI)-(ES:DI)建立标志字操作时:(SI)←(SI)±2(DI)←(DI)±2字节操作时:(SI)←(SI)±1(DI)←(DI)±1字节比较字比较3.13字符串操作指令三、字符串比较指令8086CPU指令系统第20页3.13字符串操作指令指令CMPS与CMP类似,比较结果不进行保留,只是用于设置PSW中标志位,不过,在字符串比较指令中,采取“源操作数”减去“目标操作数”,而在CMP指令中,采取“目标操作数”减去“源操作数”。所以,对比较结果转移条件是不一样:CMPDST,SRCCMPSDST,SRCJGABCJGABC当(DST)>(SRC)时转ABC当(ES:DI)≤(DS:SI)时转ABC这一点应尤其引发注意。8086CPU指令系统第21页3.13字符串操作指令字符串比较指令会正常影响PSW中6个标志位。CMPS指令经常与REPZ/REPE、REPNZ/REPNE配合使用,其含义有所不一样。1.REPZCMPS比较两字符串时,当碰到第一个不相同字符时,就跳出比较循环(ZF=0)。2.REPNZCMPS比较两字符串时,当碰到第一个相同字符时,就跳出比较循环(ZF=1)。8086CPU指令系统第22页3.13字符串操作指令例3.37BUFFER1和BUFFER2为长度100两个字型缓冲区,对比这两个缓冲区中数据,假如找到相同字,则在ADDR中保留该数据在BUFFER1中地址,假如找不到,则在ADDR中置0FFFFH。解:设在数据段中已经定义好字型缓冲区BUFFER1、BUFFER2和字型变量ADDR,并将DS和ES都指向该数据段,则在代码段中编写以下程序:8086CPU指令系统第23页3.13字符串操作指令LEA SI,BUFFER1 LEA DI,BUFFER2 MOV CX,100

REPNZCMPSW JZ FOUND MOV ADDR,-1 JMP ELSEFOUND: SUB SI,2 MOV ADDR,SIELSE:8086CPU指令系统第24页助记符格式主要功效SCASDSTSCABSCAW字扫描时:(AX)-(ES:DI)建立标志(DI)←(DI)±2字节扫描时:(AL)-(ES:DI)建立标志(DI)←(DI±1)3.13字符串操作指令四、字符串扫描指令8086CPU指令系统第25页3.13字符串操作指令说明:SCAS指令与字符串比较指令类似,只是源操作数固定为AL或AX内容。其它说明类似于字符串比较指令。字符串扫描指令会正常影响PSW中6个状态标志位,从而后续指令能够对比较结果进行判断与转移操作。所以SCAS指令经常与REPZ/REPE、REPNZ/REPNE配合使用,其含义有所不一样。8086CPU指令系统第26页3.13字符串操作指令1.REPZSCAS比较(AL)或(AX)内容与目标字符串内容,也就是在目标字符串中查找指定字符(AL)或(AX),当找到第一个不相同字符时,就跳出比较循环(ZF=0)。2.REPNZSCAS比较(AL)或(AX)内容与目标字符串内容,也就是在目标字符串中查找指定字符(AL)或(AX),当找到第一个相同字符时,就跳出比较循环(ZF=1)。8086CPU指令系统第27页3.13字符串操作指令例3.38在字节型缓存区BUFFER中保留有0个数据,要求在其中查找字符串“12345”(以ASCII码表示),并将其在BUFFER偏移地址存放在ADDR单元中,假如没有找到,则将0FFFFH存放在ADDR中。解:为了查找一串数据,首先应该在BUFFER中查找第一个数据,当找到后,再对后续数据进行对比,假如恰好都相同,则表示找到了找到字符串;假如有一个字符不相同,则应该回到刚才位置继续查找第一个数据,这一点很主要,能够防止遗漏要查找字符串。8086CPU指令系统第28页3.13字符串操作指令比如在BUFFER中有这么字符串:“112345”,就轻易造成漏检,如图3.6所表示,当找到第一个字符“1”时,DI指向位置“B”,接着与第二个字符“2”比较,发觉二者不一样,这时DI已经指向位置“C”,假如不恢复原来地址进行搜索,则程序找不到第二个“1”,从而使该正确字符串漏检。8086CPU指令系统第29页3.13字符串操作指令数据段内容为:BUFFERDB0dup(?)ADDR dw?STRING DB'12345‘并使DS和ES都指向该数据段,则设计程序为: MOVADDR,-1 LEADI,BUFFER MOVCX,0 MOVAL,STRING ;取第一个字符8086CPU指令系统第30页STARTSEARCH: REPNZSCASB ;查找第一个字符 JNZNOFOUND LEASI,STRING+1 PUSHCX ;保留搜索次数 PUSHDI ;保留搜索指针 MOVCX,4 ;比较后续字符 REPZCMPSB POPDI ;恢复搜索指针 POPCX ;恢复搜索次数 JNZSTARTSEARCHFOUND: SUBDI,1 ;指针修正 MOVADDR,DINOFOUND: 8086CPU指令系统第31页助记符格式主要功效LODSSRCLODSBLODSW字操作时:(AX)←(DS:SI)(SI)←(SI)±2字节操作时:(AL)←(DS:SI)(SI)←(SI)±13.13字符串操作指令五、字符串装入指令8086CPU指令系统第32页3.13字符串操作指令字符串装入指令不影响FLAG。每次执行都会从源数据区取一个值送到(AL)或(AX),重复操作意味着后面装人内容将覆盖前面装人内容,所以LODS指令极少与重复前缀配合使用。8086CPU指令系统第33页助记符格式主要功效S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论