微机原理:CH3(3) 8086的指令系统_第1页
微机原理:CH3(3) 8086的指令系统_第2页
微机原理:CH3(3) 8086的指令系统_第3页
微机原理:CH3(3) 8086的指令系统_第4页
微机原理:CH3(3) 8086的指令系统_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、一、数据传送指令二、算术运算指令三、逻辑运算与移位指令四、控制转移指令五、字符串处理指令六、处理器控制指令3.3 8086的指令系统实质(或作用) 改变IP(或IP和CS)的值,以改变指令的执行顺序。所有转移指令不会影响标志位。类型无条件转移和过程调用指令条件转移指令循环控制指令中断指令(自学)四、控制转移指令无条件转移和过程调用指令JMPCALLRET无条件转移过程调用过程返回条件转移JZ / JE (10条)JA / JNBE (8条)直接标志转移间接标志转移条件循环控制LOOPLOOPE / LOOPZLOOPNE / LOOPNZJCXZCX0 则循环CX0和ZF=1 则循环CX0和Z

2、F=0 则循环CX=0 则转移中 断INTINTOIRET中断溢出中断中断返回掌握转移条件 转向位置 简单应用格式:JMP 目的功能:无条件转移到目的地址分类: 根据转移的距离和寻址方式的不同分为4类。段内直接转移段内间接转移段间直接转移段间间接转移1、无条件转移指令 段内直接转移特点:直接给出转移地址例如:JMP 0100H ;IP0100H JMP SHORT NEXT ;NEXT为标号,符号地址 JMP NEXT 段内间接转移特点:以寄存器或内存单元给出转移地址例如:JMP BX ;IP BX JMP WORD PTR BX ;IP 字内存单元的内容 段间直接转移特点:转向另一代码段的标

3、号处格式:JMP FAR PTR 标号实质:IP 远标号的偏移地址 CS 远标号的段地址 段间间接转移特点:转向双字内存单元所给定的地址格式:JMP DWORD PTR BX实质:IP 低字内容 CS 高字内容无条件转移指令 JMP简单应用:一般目的地址采用标号直接给出。例如: JMP ABC ABC:MOV AL,BL 例:已知:BX=0100H,DS=2000H,CS=0200H,(20100H)=1234H,(20102H)=5678H,标号PROC的地址为:3000H:0300H。求下列转移指令的转向位置(即执行后CS和IP值)。JMP 0700HJMP BXJMP WORD PTR

4、BXJMP DWORD PTR BXJMP FAR PTR PROC; IP=0700H,CS=0200H; IP=0100H,CS=0200H; IP=1234H,CS=0200H; IP=1234H,CS=5678H; IP=0300H,CS=3000H过程(也称子程序) 能完成特定功能而又经常用到的程序段,编写成独立的模块,供其它程序调用。两条相关指令:过程调用指令 CALL过程返回指令 RET两种类型:近调用:CALL和被调用的过程在同一代码段。远调用:两者在不同代码段中。 2、过程调用及返回指令 CALL 过程调用指令段内直接调用 例:CALL NEAR PTR 目标地址段内间接调用

5、例:CALL WORD PTR SI 段间直接调用 例:CALL FAR PTR 目标地址 段间间接调用 例:CALL DWORD PTR SI应用时:CALL NEAR/FAR 过程名与JMP的不同:CPU会自动保存断点CALL指令执行时分两步进行:保护断点:将返回地址,即CALL指令下面那条指令的地址(由IP或CS和IP的内容决定)压入堆栈。 近调用:SP SP2,IP入栈; 远调用:SP SP2,CS入栈; SP SP2,IP入栈根据指令给出的地址转移。 RET 过程返回指令格式:RET功能:与CALL指令相对应,通常作为一个子程序的最后一条指令,执行时从栈中弹出返回地址,即:栈顶的内容

6、被弹出到IP(或IP和CS),用以返回到调用这个子程序的断点处。格式:条件操作符(JXX) 标号功能:条件成立则程序转至标号处执行;常用于比较指令或算术逻辑运算指令之后,以状态标志作为判别测试条件。应用:实现程序的条件分支。条件转移指令共有18条,可以为两类:直接标志转移指令间接标志转移指令3、条件转移指令 直接标志转移指令特点:根据单个状态标志位的值决定是否转移。JC ;CF=1,即有进位或借位则转移JNC ;CF=0,没有进位或借位则转移JZ/JE ;结果为零(ZF=1),则转移JNZ/JNE ;结果不为零(ZF=0),则转移JS ;SF=1,即,符号位为负则转移JNS ;SF=0,符号位

7、为正则转移JO、JNO、JP/JPE 、JNP/JPO例1: ADD AL,BL JC NEXT MOV AH,0 JMP EXITNEXT: MOV AH,1EXIT: 功能: AL+BL,有进位则AH置1;否则,AH清0例2: BUF DB 100 DUP(?) MOV BX,OFFSET BUF MOV CL,64H LP: MOV BYTE PTRBX,0 INC BX DEC CL JNZ LP功能:将BUF单元开始的100个存储单元全部清0。 间接标志转移指令 特点:常放在CMP之后,用来判断两个数的大小。 判断无符号数的大小JA ;高于则转移JAE ;高于等于则转移JB ;低于则

8、转移JBE ;低于等于则转移 判断有符号数的大小JG ;大于则转移JGE ;大于等于则转移JL ;小于则转移JLE ;小于等于则转移例1: CMP AL,60 JB FAILCMP AL,85 JAE GOOD MOV AL,P JMP PRINT FAIL:MOV AL,F JMP PRINT GOOD:MOV AL,G PRINT:程序功能:判断AL的内容,若AL60, AL=F60AL85,AL=PAL85, AL=G详见:P112 例3-89例2:TABLE DB 01H,80H,0F5H,32H,86H DB 74H,49H,0AFH,25H,40HPLUS DB 0NEGT DB

9、0ZERO DB 0 MOV CX,10 MOV BX,0AGAIN:CMP TABLEBX,0 JGE GRET_EQ INC NEGT(转右上) JMP NEXTGRET_EQ:JG P_INC INC ZERO JMP NEXTP_INC: INC PLUSNEXT: INC BX DEC CX JNZ AGAIN 功能:分别统计正数、负数和零的个数。详见:P113 例3-91特点:一组增强型的条件转移指令,控制程序段的重复执行,用在循环程序中以确定是否要继续循环。循环次数通常置于CX中。循环控制指令均不影响标志。共有4条。4、循环控制指令 LOOP循环指令格式:LOOP label功能

10、:CX-1CX; 判断若CX0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。LOOP指令与下面的指令段等价: DEC CX JNZ label例:OLDDB1,2,3,4,5NEWDB 5 DUP(0)MOVCX,5 MOVBX,00H NEXT:MOVAL,OLDBXADDAL,5MOVNEWBX,AL INCBXLOOPNEXT功能:将内存中的5个数据分别加5后,存入新的内存单元。 LOOPE/LOOPZ 相等或结果为零时循环功能:CX-1CX;若CX0且ZF=1则转移; LOOPNE/LOOPNZ 不相等或结果不为零循环功能:CX-1CX;若CX0且ZF=0则转移;

11、JCXZ 若CX为0跳转功能:判断若CX0则转移;注意:JCXZ指令不对CX的内容进行自动减1操作一、数据传送指令二、算术运算指令三、逻辑运算与移位指令四、控制转移指令五、字符串处理指令(自学)六、处理器控制指令3.3 8086的指令系统特点:对存储器中一串数据进行处理的指令相关概念字符串:一系列存放在存储器中的字或字节数据,不管它们是不是ASCII码。字符串长度可达64K字节。字符串元素:组成字符串的字节或字。每种字符串指令对字符串元素只进行同一种操作。字符串操作指令:对字符串进行的传送、比较、扫描、存储及装入等5种操作。五、字符串处理指令字符串操作指令的类型和格式 P96 表3-8指令名称

12、字节/字操作字节操作字操作字符串传送字符串比较字符串扫描字符串装入字符串存储MOVS 目的串,源串CMPS 目的串,源串SCAS 目的串LODS 源串STOS 目的串MOVSBCMPSBSCASBLODSBSTOSBMOVSWCMPSWSCASWLODSWSTOSW说明:每种指令都有3种格式。有两种方法说明是字节操作还是字操作。一、用指令中的源串和目的串名(即操作数)表明是字节还是字;二、在指令助记符后加B说明是字节,加W说明是字操作。隐含约定源串:地址为DS:SI;允许用段超越前缀修改段地址。目的串:地址为ES:DI;不允许使用段超越前缀修改ES。若要在同一段内进行串运算,必须使DS和ES指

13、向同一段。指针:每执行一次字符串指令,指针SI和DI会自动修改,以指向下一个待操作单元。DF标志:控制字符串处理的方向。 DF=0为递增方向。每执行一次串操作:字节串操作时,SI、DI分别增1;字串操作时,SI和DI分别增2;DF=1为递减方向。字节串操作时指针减1;字串操作时减指针2。STD使DF置1,CLD将DF清0。串长度:要处理的字符串长度(字节或字数)放在CX中。重复前缀:功能:在基本指令前加重复前缀,可加快串运算指令的执行速度。每重复执行一次,地址指针SI和DI按方向标志自动修改,CX的值自动减1。类型与格式: REP:无条件重复,常与 (MOVS)连用,连续传送字符串。直到传送完

14、毕,即CX0为止。 REPE/REPZ:相等/结果为零则重复,常与(CMPS)连用,连续比较字符串。当两个字符串对应字符相等(ZF=1)和CX0时,则重复进行比较,直到ZF=0或CX=0为止。 REPNE/REPNZ :不相等/结果非零则重复,常与(SCAS)连用,当结果非0(ZF=0)和CX0时,重复进行扫描,直到ZF=1或CX=0为止。1、MOVS 字符串传送指令格式:MOVS 目的串,源串功能:SI作指针的源串中的一个字节或字DI作指针的目的串;自动修改指针SI和DI。应用:解决MOV不能直接在存储单元间进行数据传送的问题。若使用重复前缀,还可利用一条指令传送一批数据。例:要求把数据段中

15、以SRC_MESS为偏移地址的一串字符“HELLO!”,传送到附加段中以NEW_LOC开始的单元中主要程序段: LEA SI,SRC_MESS ;SI指向源串偏移地址LEA DI,NEW_LOC ;DI指向目的串偏移地址MOV CX,6 ;CX作串长度计数器CLD ;清方向标志,地址增量REP MOVSB ;重复传送串中各字节,CX=0其中“REP MOVSB”指令可用以下几条指令代替: AGAIN: MOVS NEW_LOC, SRC_MESS DEC CX JNZ AGAIN2、CMPS 字符串比较指令格式:CMPS 目的串,源串功能:SI作指针的源串减去DI作指针的目的串数据,结果反映在

16、标志位上;原值不变;源串和目的串指针自动修改,指向下一对待比较的串。加重复前缀:REPE/REPZ CMPS ;直至CX=0(比完了)或ZF=0(两串不相等)时停止操作。REPNE/REPNZ CMPS;直至CX=0(比完了)或ZF=1(两串相等)时停止比较。例:比较两个字符串,一个是程序中设定的口令串PASSWORD,另一个是从键盘输入的字符串IN_WORD,若输入串与口令串相同,程序将开始执行。否则,程序驱动PC机的扬声器发声,警告用户口令不符,拒绝往下执行。(P98 例3-76) 这可以用CMPS指令来实现,有关程序段如下:DATA SEGMENT;数据段PASSWORDDB750424

17、LI;口令串IN_WORD DB750424LE;从键盘输入的串COUNTEQU8;串长度DATAENDSCODESEGMENT;代码段LEASI, PASSWORD;源串指针LEADI, IN_WORD;目的串指针MOVCX, COUNT;串长度CLD;地址增量REPZCMPSB;CX0且串相等时重复比较JNESOUND;若不相等,转发声程序OK: ;比完且相等,往下执行SOUND:;使PC机扬声器发声并退出CODEENDS3、SCAS字符串扫描指令格式:SCAS 目的串功能:AL/AX(字节/字操作)内容减去ES:DI中的串元素,结果反映在标志位上,源操作数不变,操作后目的串指针会自动修改

18、,指向下一个待搜索的串元素。应用:利用SCAS指令,可在内存中搜索关键字。指令执行前,必须事先将关键字存在AL(字节)或AX(字)中。SCAS指令可以加重复前缀。例:在某一字符串中搜寻是否有字符A,若有,则把搜索次数记下来,送到BX寄存器中,若没有查到,则将BX寄存器清0。设字符串起始地址STRING的偏移地址为0,字符串长度为CX。解:MOV DI,OFFSET STRING ;DI字符串偏移地址 MOV CX,COUNT ;CX字符串长度 MOV AL,A ;AL关键字A的ASCII码 CLD ;清标志方向 REPNE SCASB ;CX0和ZF=0时重复 JZ FIND ;若ZF=1,表示已搜到,转出 MOV DI,0 ;若ZF=0,表示没搜到,DI0FI:MOV BX,DI ;BX搜索次数4、LODS数据串装入指令格式:LODS 源串功能:DS:SI中的串元素 AL/AX(字节/字操作)中,修改SI,以指向串中的下一个元素,修改量遵守隐含约定。 注意:该指令加重复前缀意义不大,因为重复传送只能保留最后写入的数据。5、STOS数据串存储指令

温馨提示

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

评论

0/150

提交评论