《指令系统转移指令》PPT课件.ppt

上传人:wuy****n92 文档编号:77644857 上传时间:2023-03-15 格式:PPT 页数:71 大小:1.05MB
返回 下载 相关 举报
《指令系统转移指令》PPT课件.ppt_第1页
第1页 / 共71页
《指令系统转移指令》PPT课件.ppt_第2页
第2页 / 共71页
点击查看更多>>
资源描述

《《指令系统转移指令》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《指令系统转移指令》PPT课件.ppt(71页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、控制转移类指令控制转移类指令 控控制制转转移移类类指指令令用用于于实实现现分分支支、循循环环、过过程程等等程程序序结结构构,是是仅仅次次于于传传送送指指令令的常用指令的常用指令重点掌握:重点掌握:JMP/Jcc/LOOP/JCXZ CALL/RET INT n/IRET 常用系统功能调用常用系统功能调用 控控制制转转移移类类指指令令通通过过改改变变IP(和和CS)值值,实现程序执行顺序的改变实现程序执行顺序的改变目标地址的寻址方式目标地址的寻址方式相对寻址方式相对寻址方式指指令令代代码码中中提提供供目目的的地地址址相相对对于于当当前前IP的的位位移移量量,转转移移到到的的目目的的地地址址(转转

2、移移后后的的IP值值)就就是是当当前前IP值加上位移量值加上位移量直接寻址方式直接寻址方式指指令令代代码码中中提提供供目目的的逻逻辑辑地地址址,转转移移后后的的CS和和IP值值直接直接来自指令操作码后的目的地址操作数来自指令操作码后的目的地址操作数间接寻址方式间接寻址方式指指令令代代码码中中指指示示寄寄存存器器或或存存储储单单元元,目目的的地地址址从从寄存器或存储单元中寄存器或存储单元中间接间接获得获得用标号表达用标号表达用标号表达用标号表达用寄存器或存储器操作数表达用寄存器或存储器操作数表达目标地址的寻址范围:段内寻址目标地址的寻址范围:段内寻址段内转移段内转移近转移(近转移(near)在在

3、当当前前代代码码段段64KB范范围围内内转转移移(32KB范围)范围)不不需需要要更更改改CS段段地地址址,只只要要改改变变IP偏偏移地址移地址段内转移段内转移短转移(短转移(short)转转移移范范围围可可以以用用一一个个字字节节表表达达,在在段段内内128127范围的转移范围的转移代代码码段段代代码码段段目标地址的寻址范围:段间寻址目标地址的寻址范围:段间寻址段间转移段间转移远转移(远转移(far)从从当当前前代代码码段段跳跳转转到到另另一一个个代代码码段段,可以在可以在1MB范围范围需要需要更改更改CS段地址和段地址和IP偏移地址偏移地址目目标标地地址址必必须须用用一一个个32位位数数表

4、表达达,叫叫做做32位远指针,它就是逻辑地址位远指针,它就是逻辑地址代代码码段段代代码码段段 实实际际编编程程时时,汇汇编编程程序序会会根根据据目目标标地地址址的的属性,属性,自动处理自动处理成短转移、近转移或远转移成短转移、近转移或远转移 程程序序员员可可用用操操作作符符short、near ptr 或或far ptr 强制成为需要的转移类型强制成为需要的转移类型 无条件转移指令无条件转移指令只只要要执执行行无无条条件件转转移移指指令令JMP,就就使使程程序序转转到到指指定的目标地址,从目标地址处开始执行指令定的目标地址,从目标地址处开始执行指令操操作作数数label是是要要转转移移到到的的

5、目目标标地地址址(目目的的地地址址、转移地址转移地址)JMP指令分成指令分成4种类型:种类型:段内转移、相对寻址段内转移、相对寻址 段内转移、间接寻址段内转移、间接寻址 段间转移、直接寻址段间转移、直接寻址 段间转移、间接寻址段间转移、间接寻址JMP labelJMP label;程序转向;程序转向labellabel标号指定的地址标号指定的地址 无条件转移指令无条件转移指令JMP(jump)JMP label;段内转移、相对寻址段内转移、相对寻址;IPIP位移量位移量 JMP r16/m16;段内转移、间接寻址段内转移、间接寻址;IPr16/m16 JMP far ptr label;段间转

6、移、直接寻址段间转移、直接寻址;IP偏移地址偏移地址,CS段地址段地址 JMP far ptr mem;段间转移,间接寻址段间转移,间接寻址;IPmem,CSmem2演示演示演示演示演示演示演示演示演示演示 条件转移指令条件转移指令条条件件转转移移指指令令Jcc根根据据指指定定的的条条件件确确定定程程序序是否发生转移。其通用格式为:是否发生转移。其通用格式为:Jcc label;条件满足条件满足,发生转移发生转移;IPIP8位位移量;位位移量;否则,顺序执行否则,顺序执行label是是一一个个标标号号、一一个个8位位位位移移量量,表表示示Jcc指指令令后后的的那那条条指指令令的的偏偏移移地地址

7、址,到到目目标标指指令令的的偏偏移移地地址的地址位移址的地址位移label只支持短转移的相对寻址方式只支持短转移的相对寻址方式Jcc指令的分类指令的分类Jcc指令不影响标志,但要利用标志(指令不影响标志,但要利用标志(表表2-4)根据利用的标志位不同,分成三种情况:根据利用的标志位不同,分成三种情况:判断单个标志位状态判断单个标志位状态 比较无符号数高低比较无符号数高低 比较有符号数大小比较有符号数大小 Jcc指令实际虽然只有指令实际虽然只有16条,但却有条,但却有30个助记符个助记符 采用多个助记符,目的是为了方便记忆和使用采用多个助记符,目的是为了方便记忆和使用1.判断单个标志位状态判断单

8、个标志位状态 JZ/JE和和JNZ/JNE利用零标志利用零标志ZF,判断结果是否为零(或相等),判断结果是否为零(或相等)JS和和JNS利用符号标志利用符号标志SF,判断结果是正是负,判断结果是正是负 JO和和JNO利用溢出标志利用溢出标志OF,判断结果是否产生溢出,判断结果是否产生溢出 JP/JPE和和JNP/JPO利用奇偶标志利用奇偶标志PF,判断结果中,判断结果中“1”的个数是偶是奇的个数是偶是奇 JC/JB/JNAE和和JNC/JNB/JAE利用进位标志利用进位标志CF,判断结果是否进位或借位,判断结果是否进位或借位例题例题2题题目目:将将AX中中存存放放的的无无符符号号数数除除以以2

9、,如如果果是是奇奇数则加数则加1后除以后除以2问题:问题:如何判断如何判断AX中的数据是奇数还是偶数?中的数据是奇数还是偶数?解解答答:判判断断AX最最低低位位是是“0”(偶偶数数),还还是是“1”(奇数)。可以用位操作类指令(奇数)。可以用位操作类指令1:用用逻逻辑辑与与指指令令将将除除最最低低位位外外的的其其他他位位变变成成0,保保留留最最低低位位不变。判断这个数据是不变。判断这个数据是0,AX就是偶数;否则,为奇数就是偶数;否则,为奇数2:将将最最低低位位用用移移位位指指令令移移至至进进位位标标志志,判判断断进进位位标标志志是是0,AX就是偶数;否则,为奇数就是偶数;否则,为奇数3:将将

10、最最低低位位用用移移位位指指令令移移至至最最高高位位(符符号号位位),判判断断符符号号标志是标志是0,AX就是偶数;否则,为奇数就是偶数;否则,为奇数例题例题2解答解答1 用用JZ指令实现指令实现test ax,01h;测试;测试AX的最低位的最低位D0(不用(不用AND指令,以免改变指令,以免改变AX)jz even;标志;标志ZF1,即,即D00:AX内是偶数,程序转移内是偶数,程序转移add ax,1;标志;标志ZF0,即,即D01:AX内的奇数,加内的奇数,加1even:shr ax,1;AXAX2用右移一位的方法实现除以用右移一位的方法实现除以2。本例中用本例中用RCR指令比指令比S

11、HR指令更好。指令更好。例题例题2解答解答2 用用JNC指令实现指令实现mov bx,axshr bx,1;将;将AX的最低位的最低位D0移进移进CFjnc even;标志;标志CF0,即,即D00:AX内是偶数,程序转移内是偶数,程序转移add ax,1;标志;标志CF1,即,即D01:AX内的奇数,加内的奇数,加1even:shr ax,1;AXAX2还可用还可用SAR、ROR和和RCR指令指令例题例题2解答解答3 用用JNS指令实现指令实现mov bx,axror bx,1;将;将AX的最低位的最低位D0移进最高位(符号位移进最高位(符号位SF)jns even;标志;标志SF0,即,即

12、D00:AX内是偶数,程序转移内是偶数,程序转移add ax,1;标志;标志SF1,即,即D01:AX内的奇数,加内的奇数,加1even:shr ax,1;AXAX2错误!错误!循环指令不影响循环指令不影响SF等标志等标志ADD BX,0;增加一条指令;增加一条指令例例 判断是否为字母判断是否为字母Y;寄寄存存器器AL中中是是字字母母Y(含含大大小小写写),则则令令AH0,否则令否则令AH1cmp al,y;比较;比较AL与小写字母与小写字母yje next;相等,转移;相等,转移cmp al,Y;不相等,;不相等,;继续比较;继续比较AL与大写字母与大写字母Yje next;相等,转移;相等

13、,转移mov ah,-1;不相等,令;不相等,令AH1jmp done;无条件转移指令;无条件转移指令next:mov ah,0;相等的处理:令;相等的处理:令AH0done:例例 偶校验偶校验;对;对DL寄存器中寄存器中8位数据进行位数据进行偶校验偶校验;校验位存入;校验位存入CF标志标志test dl,0ffh;使使CF0,同时设置,同时设置PF标志标志jpe done;DL中中“1”的个数为偶数的个数为偶数;正好正好CF0,转向,转向donestc;DL中中“1”的个数为奇数,设置的个数为奇数,设置CF1done:;完成完成2.比较无符号数高低比较无符号数高低无无 符符 号号 数数 的的

14、 大大 小小 用用 高高(Above)、低低(Below)表表示示,需需要要利利用用CF确确定定高高低低、利用利用ZF标志确定相等(标志确定相等(Equal)两数的高低分成两数的高低分成4种关系,对应种关系,对应4条指令条指令JB(JNAE):目的操作数():目的操作数(=)源操作数)源操作数JBE(JNA):目的操作数():目的操作数()源操作数)源操作数3.比较有符号数大小比较有符号数大小判判 断断 有有 符符 号号 数数 的的 大大(Greater)、小小(Less),需需要要组组合合OF、SF标标志志、并并利利用用ZF标志确定相等与否标志确定相等与否两两数数的的大大小小分分成成4种种关

15、关系系,分分别别对对应应4条条指指令令JL(JNGE):目的操作数():目的操作数(=)源操作数)源操作数JLE(JNG):目的操作数():目的操作数()源操作数)源操作数例例 求较大值求较大值 wmaxcmp ax,bx;比较比较AX和和BXjae next;若若AXBX,转移,转移xchg ax,bx;若若AXBX,交换,交换next:mov wmax,ax如果如果AX和和BX存放的是有符号数,存放的是有符号数,则条件转移指令应采用则条件转移指令应采用JGE指令指令例例 求较大值(另解)求较大值(另解)cmp ax,bx;比较比较AX和和BXjae nextmov wmax,bx;若若AX

16、BX,wmaxBXjmp donenext:mov wmax,ax;若若AXBX,wmaxAXdone:例例 求较大值(另解对比)求较大值(另解对比)cmp ax,bx;比较比较AX和和BXjbe nextmov wmax,ax;若若AXBX,wmaxAXjmp donenext:mov wmax,bx;若若AXBX,wmaxBXdone:循环指令循环指令一段代码序列多次重复执行就是循环一段代码序列多次重复执行就是循环8088设计有针对设计有针对CX计数器的计数循环指令计数器的计数循环指令LOOP label;循环指令循环指令;首先;首先CXCX1;然后判断;若;然后判断;若CX0,转移,转移

17、JCXZ label;如果如果CX0,则转移,则转移label操作数采用相对短寻址方式操作数采用相对短寻址方式还还有有LOOPZ/LOOPE和和LOOPNZ/LOOPNE两两条条指令指令dec cxjnz labelLOOPELOOPZ指令指令 指令格式:LOOPE label 或者 LOOPZ label 执行 LOOPELOOPZ 指令,在进行循环次数的计数(即CX (CX)1后,若(CX)0且 ZF1,则转移到目标单元label,否则顺序执行LOOPNELOOPNZ指令指令格式:LOOPNE label 或者 LOOPNZ label执行LOOPNELOOPNZ指令,在进行循环次数的计数

18、(即CX (CX)-1后,如(CX)0且ZF0,则转移到目标单元label,否则顺序执行。例例 数据块传送(字节)数据块传送(字节)mov cx,400h;设置循环次数:;设置循环次数:1K1024400Hmov si,offset sbuf;设置循环初值:;设置循环初值:SI指向数据段源缓冲区开始指向数据段源缓冲区开始mov di,offset dbuf;DI指向附加段目的缓冲区开始(附加段)指向附加段目的缓冲区开始(附加段)again:mov al,si;循环体:实现数据传送;循环体:实现数据传送mov es:di,al;每次传送一个字节;每次传送一个字节inc si;SI和和DI指向下一

19、个单元指向下一个单元inc diloop again;循环条件判定:循环次数减;循环条件判定:循环次数减1,不为,不为0转移(循环)转移(循环)例例 数据块传送(字)数据块传送(字)mov cx,200h;设置循环次数:;设置循环次数:1K2200Hmov si,offset sbuf;设置循环初值:;设置循环初值:SI指向数据段源缓冲区开始指向数据段源缓冲区开始mov di,offset dbuf;DI指向附加段目的缓冲区开始(附加段)指向附加段目的缓冲区开始(附加段)again:mov ax,si;循环体:实现数据传送;循环体:实现数据传送mov es:di,ax;每次传送一个字;每次传送

20、一个字add si,2;指向下一个(字)单元;指向下一个(字)单元add di,2loop again;循环条件判定:循环次数减;循环条件判定:循环次数减1,不为,不为0转移(循环)转移(循环)例例 在在存存储储器器的的数数据据段段中中连连续续存存放放了了100个个8位位带带符符号号数数,数数据据块块的的首首地地址址为为2000H。试试编编写写程程序序统统计计其其中中负负数数的的个个数数,并并将将个个数数存放到字节单元存放到字节单元MINUS中。中。分析:分析:为为统统计计负负数数的的个个数数,可可先先将将MINUS清清零零然然后后将将数数据据块块中中的的带带符符号号数数逐逐个个取取入入AL寄

21、寄存存器器并并使使其其影影响响标标志志位位,再再利利用用JS或或JNS条条件转移指令进行统计。件转移指令进行统计。MOV MINUS,0;MINUS单元清零MOV SI,2000H;将数据块首地址(SI)MOV CX,100;数据块长度(循环次数)(CX)AGAIN:MOV AL,SI;取一个数到ALOR AL,AL;使数据影响标志位而其数值不变JNS NO_M;若不为负数,则转移到NO_MINC MINUS;否则为负数,MINUS单元加1NO_M:INC SI LOOP AGAIN;CX减1,若不为0,则转移到AGAINHLT ;停止 子程序指令子程序指令子程序是完成特定功能的一段程序子程序

22、是完成特定功能的一段程序当当主主程程序序(调调用用程程序序)需需要要执执行行这这个个功功能能时时,采采用用CALL调调用用指指令令转转移移到到该该子子程程序序的的起起始始处处执行执行当当运运行行完完子子程程序序功功能能后后,采采用用RET返返回回指指令令回到主程序继续执行回到主程序继续执行演示演示 转移转移指令指令有去无回有去无回 子程序子程序调用需要返回调用需要返回,其其中中利利用用堆堆栈栈保保存存返返回回地地址址 1.子程序调用指令子程序调用指令CALLCALL指令分成指令分成4种类型(类似种类型(类似JMP)CALL label;段内调用、直接寻址;段内调用、直接寻址CALL r16/m

23、16;段内调用、间接寻址;段内调用、间接寻址CALL far ptr label;段间调用、直接寻址;段间调用、直接寻址CALL far ptr mem;段间调用、间接寻址;段间调用、间接寻址CALL指令需要保存返回地址:指令需要保存返回地址:n段内调用段内调用当前偏移地址当前偏移地址IP入栈入栈(SP)(SP)2,SS:SP(IP)n段间调用段间调用偏移地址偏移地址IP和段地址和段地址CS入栈入栈(SP)(SP)2,SS:SP(CS)(SP)(SP)2,SS:SP(IP)段内调用段内调用call near ptr subp (1)保存返回地址 (2)转子程序 (IP)subp的偏移地址段间调

24、用段间调用call far ptr subp (1)保存返回地址保存返回地址 (2)转子程序转子程序 (CS)subp的段地址 (IP)subp的偏移地址 2.子程序返回指令子程序返回指令RET根据段内和段间、有无参数,分成根据段内和段间、有无参数,分成4种类型种类型RET;无参数段内返回;无参数段内返回RET i16;有参数段内返回;有参数段内返回RET;无参数段间返回;无参数段间返回RET i16;有参数段间返回;有参数段间返回需要弹出需要弹出CALL指令压入堆栈的返回地址指令压入堆栈的返回地址n段内返回段内返回出栈偏移地址出栈偏移地址IPIPSS:SP,SPSP2n段间返回段间返回出栈偏

25、移地址出栈偏移地址IP和段地址和段地址CSIPSS:SP,SPSP2CSSS:SP,SPSP2例例 十六进制转换为十六进制转换为ASCII码的子程序码的子程序;子程序:;子程序:将将DLDL低低4 4位的一位位的一位1616进制数进制数转换转换成成ASCIIASCII码码htoaschtoascprocprocand dl,0fhand dl,0fh;只取;只取DLDL的低的低4 4位位or dl,30hor dl,30h;DLDL高高4 4位变成位变成3 3cmp dl,39hcmp dl,39h;是;是0 09 9,还是,还是0Ah0Ah0Fh?0Fh?jbe htoendjbe htoe

26、nd;是;是0 09 9,转移,转移add dl,7add dl,7;是;是0Ah0Ah0Fh0Fh,加上,加上7 7htoend:htoend:retret;子程序返回;子程序返回htoaschtoascendpendp转换原理转换原理转换原理转换原理;主程序:调用;主程序:调用子程序子程序mov dl,28hcall htoasc 中断指令和系统功能调用中断指令和系统功能调用中中断断(Interrupt)是是又又一一种种改改变变程程序序执执行行顺序的方法顺序的方法8088CPU支支持持256个个中中断断,每每个个中中断断用用一一个编号(中断向量号)区别个编号(中断向量号)区别中断指令有中断

27、指令有3条:条:INT n IRET INTO本本节节主主要要掌掌握握类类似似子子程程序序调调用用指指令令的的中中断断调用指令调用指令INT n,进而掌握,进而掌握系统功能调用系统功能调用 中断指令中断指令INT nINT n;中断调用指令:产生;中断调用指令:产生n n号中断号中断;主程序使用,其中;主程序使用,其中n n表示中断向量号表示中断向量号IRETIRET;中断返回指令:实现中断返回;中断返回指令:实现中断返回;中断服务程序使用;中断服务程序使用标志处理指令:标志处理指令:CLC CF0 CMC CF CF STC CF1 CLD DF0 STD DF1 CLI IF0 STI I

28、F1 注意注意:*只影响本指令指定的标志只影响本指令指定的标志处理机控制指令其他处理机控制指令:其他处理机控制指令:NOP 无操作无操作(机器码占一个字节机器码占一个字节)HLT 暂停机暂停机(等待一次外中断,之后继续执行程序等待一次外中断,之后继续执行程序)WAIT 等待等待(等待外中断,之后仍继续等待等待外中断,之后仍继续等待)ESC mem 换码换码(mem)数据总线数据总线 )LOCK 封锁封锁(维持总线的锁存信号,直到其后的指令执行完维持总线的锁存信号,直到其后的指令执行完)注意注意:*不影响条件标志不影响条件标志 调用的一般过程:功能编号 AHAH,置入口参数 执行软中断语句INT

29、 21HINT 21H常用的dos系统功能调用:1.键盘输入(调用功能号1)调用格式:MOV AH,1MOV AH,1 INT 21H INT 21H 功能:等待从键盘输入一个字符并将输入字符的 ASCIIASCII码ALAL,若按CTRL+BREAKCTRL+BREAK退出DOS系统系统功能调用2.单字符显示输出(调用功能号2)调用格式:MOV DL,aMOV DL,a ;待显示字符(如a)的ASCII码 DL MOV AH,2MOV AH,2 INT 21H INT 21H功能:将DLDL中的字符送屏幕。例:MOV DL,0DHMOV DL,0DH MOV AH,2 MOV AH,2 IN

30、T 21H INT 21H MOV DL,0AH MOV DL,0AH INT 21H INT 21H显示回车显示换行3.显示字符串(功能调用号9)功能:将当前数据区中DS:DXDS:DX所指向的以$结尾的字符串送 屏幕显示。注:若字符串中包含字符串$,则不能采用本调用,只能循环 地使用2号调用。例:DATA SEGMENTDATA SEGMENT BUF DB HOW DO YOU DO?$BUF DB HOW DO YOU DO?$DATA ENDS DATA ENDS :MOV DX,SEG BUF;MOV DX,SEG BUF;存放字符串的段地址存放字符串的段地址MOV DS,DXMO

31、V DS,DX LEA DX,BUF;LEA DX,BUF;存放字符串的首偏移地址 MOV AH,9MOV AH,9 INT 21HINT 21H输出字符串HOW DO YOU DOHOW DO YOU DO?5.键盘输入字符串:(功能调用号:10(或0AH)调用格式:MOV DX,SEG BUF;MOV DX,SEG BUF;存放字符串的段地址存放字符串的段地址 MOV DS,DX MOV DS,DX LEA DX,BUF;LEA DX,BUF;存放字符串的首偏移地址 MOV AH,10 MOV AH,10 INT 21H INT 21H功能:从键盘上往DS:DXDS:DX所指的输入缓冲区输

32、入以回车键结束的字符串,并送显示器显示。对缓冲区的要求:BUF DB 80 BUF DB 80 DB?DB?DB 80 DUP(0)DB 80 DUP(0);第一个字节存放缓冲区大小,不能 为0,用户确定;第二个字节存放实际输入的字符个数,系统填入;从键盘上输入字符串从第三个字节存 放(如果超过则多余去掉,响铃告警)DATA SEGMENTDATA SEGMENT P DB 100 P DB 100 DB?DB?DB 100 DUP(?)DB 100 DUP(?)M DB WHAT IS YOUR NAME?$M DB WHAT IS YOUR NAME?$DATA ENDSDATA ENDS

33、STACK SEGMENT STACKSTACK SEGMENT STACK DB 100 DUP(?)DB 100 DUP(?)STACK ENDSSTACK ENDSCODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK ASSUME CS:CODE,DS:DATA,SS:STACKS:MOV AX,DATAS:MOV AX,DATA MOV DS,AX MOV DS,AX LEA DX,M LEA DX,M MOV AH,9 MOV AH,9 INT 21H INT 21H MOV DX,0FFSET P MOV DX,0FFSE

34、T P MOV AH,10 MOV AH,10 INT 21H INT 21H MOV AH,4CH MOV AH,4CH INT 21H INT 21HCODE ENDSCODE ENDS END S END S上机演示在屏幕上显示一行提示信息:“WHAT IS YOUR NAME?”“WHAT IS YOUR NAME?”串操作指令串操作指令 串传送指令串传送指令 存入串指令存入串指令 从串取指令从串取指令 串比较指令串比较指令 串扫描指令串扫描指令1.MOVS 串传送指令串传送指令MOVS DEST,SRC可以用无操作数指令代替:可以用无操作数指令代替:MOVSB(字节)(字节)MOVS

35、W(字)(字)例:例:MOVS ES:BYTE PTR DI,DS:SI 执行操作:执行操作:(1)(DI)(SI)(2)字节操作:字节操作:(SI)(SI)1,(DI)(DI)1 字操作:字操作:(SI)(SI)2,(DI)(DI)2 方向标志方向标志DF=0时用时用+,DF=1时用时用-。REP MOVS:将数据段中的整串数据传送到附加段中。:将数据段中的整串数据传送到附加段中。源串(数据段)源串(数据段)目的串(附加段)目的串(附加段)执行执行REP MOVS之前,应先做好:之前,应先做好:(1)源串首地址)源串首地址 SI(2)目的串首地址)目的串首地址 DI(3)串长度)串长度 CX

36、(4)建立方向标志()建立方向标志(CLD使使DF=0,STD使使DF=1)(SI)低地址低地址高地址高地址数据段数据段附加段附加段(SI)(DI)(DI)DF=0DF=0与REP配合工作的 MOVS REP MOVS 执行操作:(1)如(CX)=0则退出REP,否则转(2)(2)(CX)(CX)-1 (3)执行MOVS(4)重复(1)(3)例例datarea segmentmess1 db personal_computer;源数据段源数据段datarea endsextra segmentmess2 db 17 dup(?);目的段;目的段extra endscode segmentlea

37、 si,mess1 ;源数据段首地址;源数据段首地址 lea di,mess2 ;目的数据段首地址;目的数据段首地址 mov cx,17 ;数据长度;数据长度17个字节个字节 cld ;DF=0 rep movsb ;开始传送字节开始传送字节 code endslea si,mess1+16 lea di,mess2+16 mov cx,17 std ;DF=1 rep movsb串比较指令串比较指令 CMPS SRC,DSTCMPSB(字节)(字节)CMPSW(字)(字)执行操作:执行操作:(1)(SI)-(DI)根据比较结果设置条件标志位:相等根据比较结果设置条件标志位:相等 ZF=1 不

38、等不等 ZF=0 (2)字节操作:字节操作:(SI)(SI)1,(DI)(DI)1 字操作:字操作:(SI)(SI)2,(DI)(DI)2与REPE/REPZ和REPNE/REPNZ配合工作的CMPS REPE/REPZ(REPNE/REPNZ)CMPS 执行操作:(1)如(CX)=0或ZF=0(ZF=1)则退出,否则转(2)(2)(CX)(CX)-1 (3)执行CMPS (4)重复(1)(3)例:比较两个字符串,找出它们不相匹配的字节位置 lea si,mess1lea di,mess2mov cx,8cldrepe cmpsb;找到不相匹配的字节时停止找到不相匹配的字节时停止;(di)、(

39、si)为不匹配字符位置为不匹配字符位置SCASB(字节)(字节)SCASW(字)(字)执行操作:执行操作:字节操作:字节操作:(AL)-(DI),(DI)(DI)1 字操作:字操作:(AX)-(DI),(DI)(DI)2串扫描指令与与REPE/REPZ和和REPNE/REPNZ配合工作的配合工作的SCAS REPE/REPZ(REPNE/REPNZ)SCAS 执行操作:执行操作:(1)如如(CX)=0或或ZF=0(ZF=1)则退出,则退出,否则转否则转(2)(2)(CX)(CX)-1 (3)执行执行 SCAS (4)重复重复(1)(3)例例:从一个字符串中查找一个指定的字符从一个字符串中查找一

40、个指定的字符mess db COMPUTERlea di,messmov al,Tmov cx,8cldrepne scasb;不是;不是T则重复则重复(DI):相匹配字符的下一个地址相匹配字符的下一个地址(CX):剩下还未比较的字符个数:剩下还未比较的字符个数COMPUTER(di)COMPUTER(di)取串指令取串指令LODSB(字节)(字节)LODSW(字)(字)执执 行行 操操 作作:字字 节节 操操 作作:(AL)(SI),(SI)(SI)1 字字 操操 作作:(AX)(SI),(SI)(SI)2注意注意:*LODS指令一般不与指令一般不与REP联用联用 STOSB(字节)(字节)

41、STOSW(字)(字)执执 行行 操操 作作:字字 节节 操操 作作:(DI)(AL),(DI)(DI)1 字字 操操 作作:(DI)(AX),(DI)(DI)2与REP配合工作的STOS REP STOS 执行操作:(1)如(CX)=0则退出REP,否则转(2)(2)(CX)(CX)-1 (3)执行STOS(4)重复(1)(3)存串指令例:把例:把mess2缓冲区的缓冲区的5个字节置为个字节置为20Hlea di,mess2mov al,20Hmov cx,5cldrep stosb;cx=0时停止时停止教学要求教学要求了解了解8088/8086微处理器基本结构微处理器基本结构掌掌握握808

42、8/8086的的寄寄存存器器结结构构、存存储储器器结结构构和和寻寻址方式址方式熟熟悉悉汇汇编编语语言言的的语语句句格格式式,掌掌握握8088/8086基基本本指令:指令:数据传送:数据传送:MOVXCHGXLAT、PUSHPOP、LEA加减运算:加减运算:ADDSUB、ADCSBB、CMP、INCDEC逻辑运算:逻辑运算:ANDORXORNOTTEST、移位指令:移位指令:SHLSHRSAR、ROLRORRCLRCR控制转移:控制转移:JMPJccLOOP、CALLRET、INT n总结总结本章展开了本章展开了8088CPU16位指令系统的常用指令位指令系统的常用指令希望大家就如下几个方面进行一下总结:希望大家就如下几个方面进行一下总结:操作数寻址方式和目的地址寻址方式操作数寻址方式和目的地址寻址方式指令支持的操作数形式指令支持的操作数形式常用指令的助记符和功能常用指令的助记符和功能指令对标志的影响指令对标志的影响通通过过复复习习整整理理,形形成成指指令令系系统统的的整整体体概概念念,进进而而掌握常用指令掌握常用指令指令执行指令执行指令执行演示举例指令执行演示举例设设CS=1000H,DS=1492HMOV AX,0064HADD AX,0100HMOV 2000H,AX指令执行指令执行

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com