




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、复习复习1、逻辑运算指令:and or xor not test2、移位指令:2移位指令小结保存其它指令移入保存其它指令移入cf的值的值带进位位循环左移指令带进位位循环左移指令rcl带进位位循环右移指令带进位位循环右移指令rcr将操作数的高低将操作数的高低4位或位或8位位(字节)数据相交换。(字节)数据相交换。循环左移指令循环左移指令rol循环右移指令循环右移指令ror将操作数乘以将操作数乘以2的的cl次。次。将补码数除以将补码数除以2的的cl次。次。算术左移指令算术左移指令sal算术右移指令算术右移指令sar将操作数乘以将操作数乘以2的的cl次。次。将操作数除以将操作数除以2的的cl次。次。
2、逻辑左移指令逻辑左移指令shl逻辑右移指令逻辑右移指令shr主要作用主要作用指指 令令3例题1、以下指令序列,请问实现了什么功能?、以下指令序列,请问实现了什么功能? mov al,08h sal al,1 mov bl,al mov cl,2 sal al,cl add al,bl ;08h al ;al算术左移一位,算术左移一位,al=10h, ;相当于;相当于al2;al bl;2 cl;al算术再左移两位,算术再左移两位,al=40h,;相当于;相当于al4 ;al + blal整个过程相当于整个过程相当于al10,al = 50h试分析下面的程序段完成什么功能?试分析下面的程序段完成
3、什么功能?mov cl,04hshl dx,cl mov bl,ahshl ax,clshr bl,clor dl,bl;04h cl;dx逻辑左移逻辑左移4位,相当于位,相当于dx;低;低4位清零,位清零,dx = 0h;ahbl;ax逻辑左移逻辑左移4位,相当于位,相当于ax低低4位位;清零,;清零,ax = 0h;bl逻辑右移逻辑右移4位,相当于位,相当于ah=0h;现;现dl的高的高4位是原来位是原来dl的低的低4位,位,;现;现dl的低的低4位是原位是原ah的高的高4位位所以,完成将所以,完成将dx,ax组成的双字逻辑左移组成的双字逻辑左移4位。位。53.6 3.6 控制转移类指令控
4、制转移类指令1、无条件转移指令、无条件转移指令2、条件转移指令、条件转移指令3、循环控制指令、循环控制指令4、调用和返回指令、调用和返回指令6 控制转移类指令通过控制转移类指令通过改变改变ip(和(和cs)值,实现程序执行顺序的改变值,实现程序执行顺序的改变l用于实现分支转移、循环控制、过程调用等用于实现分支转移、循环控制、过程调用等l常用指令常用指令重点掌握:jmp/jcc/loop call/ret一般了解: int n/iret intoloopz / loopnz71 无条件转移指令无条件转移指令l指令格式:指令格式:jmp labeljmp label;程序无条件转向;程序无条件转向
5、labellabel标号指定的地址标号指定的地址l指令功能:使程序转到指定的目标地址处,并从该指令功能:使程序转到指定的目标地址处,并从该处开始继续执行,操作数处开始继续执行,操作数label是要转移到的是要转移到的目标地目标地址(目的地址、转移地址)址(目的地址、转移地址)执行执行jmp 段内转移、直接寻址;段内转移、直接寻址; 段内转移、间接寻址段内转移、间接寻址 段间转移、直接寻址;段间转移、直接寻址; 段间转移、间接寻址段间转移、间接寻址 jmp short hello ;转移到目标地址是;转移到目标地址是hello ; ipip+8位位移量位位移量 jmp near ptr abc
6、;转移到目标地址;转移到目标地址abc, ;ip被修改了被修改了,ipip+16位位移量位位移量8段内直接近转移段内直接近转移(jmp near ptr lable):指指明在同一段的转移,明在同一段的转移, 偏移在偏移在32k 32kb范围范围之内,之内,ip的值被改变。的值被改变。 段内转移段内转移 段内直接短转移段内直接短转移(jmp short lable):指明指明在同一段内更短距离的转移。目的地址与在同一段内更短距离的转移。目的地址与jmp指令指令所处地址的距离应在所处地址的距离应在128 127b范围之内。范围之内。 段间直接转移段间直接转移 “far ptr”:指明要转到另一:
7、指明要转到另一个逻辑段执行程序,个逻辑段执行程序,cs和和ip都被修改都被修改。 段间间接转移段间间接转移”dwrod ptr”,存储器寻址方存储器寻址方式式.(2)段间转移)段间转移9段内转移、直接寻址段内转移、直接寻址jmp label;ipip+ipip+位移量位移量l位移量是紧接着位移量是紧接着jmp指令后的那条指令的偏移地址指令后的那条指令的偏移地址到到目标指令的偏移地址目标指令的偏移地址的地址位移的地址位移实际为相对寻址实际为相对寻址jmp again;转向转向again处继续执行处继续执行again:dec cx;标号;标号again的指令的指令jmp output;转向;转向o
8、utputoutput: mov bl,al;标号;标号output的指令的指令jmp 0120h;直接转向直接转向cs:0120h单元单元10段内直接短转移段内直接短转移 jmp short hello hello:mov al,3 010ah010bhe 8e 80 80 8b 0b 00 30 30100h0101h0102hjmp指令hello位移量代码段代码段11段间直接转移段间直接转移c2c2段段20000h20000h20250h20250h新新(ip)=0250h(ip)=0250h新新(cs)=2000h(cs)=2000hnext_prognext_progc1 segme
9、ntc1 segment jmp far jmp far ptr ptr next_prognext_progc1 endsc1 endsc2 segmentc2 segment next_prog add al,bl next_prog add al,blc2 endsc2 endsc1段ea5 00 20 02 0jmp指令122. 条件转移指令条件转移指令格式:格式:jcc label功能:能够对一个或几个状态位进行测试功能:能够对一个或几个状态位进行测试, ,判判断是否满足转移条件条件满足,转移到目的断是否满足转移条件条件满足,转移到目的地址地址labellabel去执行;条件不满足,
10、顺序执行去执行;条件不满足,顺序执行下下一一条指令条指令,不影响标志位。,不影响标志位。13相对寻址方式相对寻址方式ljcc指令的操作数指令的操作数label是一个标号是一个标号l条件转移指令的目的地址必须在现行的代码段内条件转移指令的目的地址必须在现行的代码段内一个一个8位位移量,表示位位移量,表示jcc指令后的那条指令的偏移指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移地址,到目标指令的偏移地址的地址位移l8位位移量是相对于当前位位移量是相对于当前ip的,且距当前的,且距当前ip地址地址128127个单元的范围之内,属于段内短距离转个单元的范围之内,属于段内短距离转移移ljcc
11、指令为指令为2个字节,条件不满足时的顺序执个字节,条件不满足时的顺序执行就是当前指令偏移指针行就是当前指令偏移指针ip加加214jcc指令的分类指令的分类ljcc指令不影响标志,但要利用标志指令不影响标志,但要利用标志位。根据利用的标志位不同,位。根据利用的标志位不同,16条指条指令分成令分成3种情况:种情况:(1)判断单个标志位状态)判断单个标志位状态(2)比较无符号数高低)比较无符号数高低(3)比较有符号数大小)比较有符号数大小15(1)判断单个标志位状态)判断单个标志位状态功功 能能结果有进位(借位)转移结果有进位(借位)转移结果无进位(借位)转移结果无进位(借位)转移 cf=1cf=0
12、jc dstjnc dst结果为零转移结果为零转移结果不为零转移结果不为零转移 zf=1zf=0jz dstjnz dst结果溢出转移结果溢出转移 结果不溢出转移结果不溢出转移of=1of=0jo dstjno dst奇偶校验结果为偶转移奇偶校验结果为偶转移奇偶校验结果为奇转移奇偶校验结果为奇转移 pf=1pf=0jp dstjnp dst结果为负数转移结果为负数转移结果为正数转移结果为正数转移 sf=1sf=0js dstjns dst转移条件转移条件条件转移指令条件转移指令例:jz/jnz指令test al,80h;测试;测试al的最高位的最高位jz next1;d70(zf1),转移),
13、转移mov ah,0ffh ;d71,顺序执行,顺序执行jmp done;无条件转向;无条件转向next1:mov ah,0done:.test al,80h ;测试最高位;测试最高位jnz next2 ;d71(zf0),转移),转移mov ah,0 ;d70,顺序执行,顺序执行jmp done ;无条件转向;无条件转向next2:mov ah,0ffhdone:.例:js/jns指令;x和和y为存放于为存放于x单元和单元和y单元的单元的16位操作数位操作数 lea si , x lea di , ymov ax , sisub ax , dijns nextneg ax ;neg是求补指令
14、:是求补指令:0axnext:mov result , ax;计算;计算|xy|(绝对值)(绝对值);结果存入;结果存入result单元单元 18bcd码码:二进制编码的十进制数二进制编码的十进制数lbcd码是十进制数码是十进制数,而运算器对数据做加减运而运算器对数据做加减运算时算时,都是按二进制运算规则进行处理的都是按二进制运算规则进行处理的(四位四位二进制相加逢十六进一二进制相加逢十六进一),而实际上是两个十进而实际上是两个十进制数相加制数相加,应该逢十进一应该逢十进一.因此采用因此采用bcd码后码后,在在两数相加的和小于或等于两数相加的和小于或等于9时时,十进制运算的结十进制运算的结果是
15、正确的果是正确的;当大于当大于9时时,结果不正确结果不正确,必须加必须加6修修正后才能得出正确的结果正后才能得出正确的结果.l(57.2)10=(01010111.0010)bcd例:例:jo/jno指令指令;计算;计算xy;若溢出,则转移到;若溢出,则转移到overflow处理处理 lea si , x lea di , y mov ax , si sub ax , di jo overflow .;无溢出,结果正确;无溢出,结果正确overflow: .;有溢出,出错处理有溢出,出错处理;x和和y为存放于为存放于x单元和单元和y单元的字操作数单元的字操作数例:jp/jnp指令;设字符的设字
16、符的ascii码在码在al寄存器中寄存器中and al,7fh;最高位先置最高位先置“0”,并判断,并判断“1”的个的个数数jnp next;个数已为奇数,则转向个数已为奇数,则转向nextor al,80h;否则,最高位置否则,最高位置“1”next:.;若该字符;若该字符ascii码中为码中为“1”的个数已为奇数时的个数已为奇数时 则令其最高位为则令其最高位为“0”;否则令最高位为;否则令最高位为“1” ;将字符加上奇校验位;将字符加上奇校验位例:jc/jnc指令;记录记录bx中中1的个数的个数方法方法1xor al , al ;al0,cf0again: cmp bx , 0jz nex
17、tshl bx , 1;也可使用;也可使用 shr bx , 1adc al , 0 ;alal+(cf)jmp againnext:.;al保存保存1的个数的个数22记录bx中“1”的个数方法2xor al , al again:test bx , 0ffffh jz nextshl bx , 1jnc againinc aljmp again next:.;al0,cf0;等价于等价于 cmp bx , 0;al保存保存1的个数的个数;若若bx0,转到转到next;否则,;否则,bx逻辑左移逻辑左移1位位;cf=0,转到转到again;cf=1,al加加1;无条件转到;无条件转到again
18、23(2)比较无符号数高低)比较无符号数高低l无符号数的大小用无符号数的大小用 高高(above)、)、低低(below)表示,利用表示,利用cf确定高低确定高低l利用利用zf标志确定标志确定相等相等(equal )l两数的高低分成:两数的高低分成:1) 低于(不高于等于):低于(不高于等于):jb(jnae/jc)2) 不低于(高于等于):不低于(高于等于):jnb(jae/jnc)3) 低于等于(不高于):低于等于(不高于):jbe(jna)4) 不低于等于(高于):不低于等于(高于):jnbe(ja )5) 相等(等于零):相等(等于零):je/jz6) 不相等(不等于零):不相等(不等
19、于零):jne/jnz24(3)比较有符号数大小)比较有符号数大小l有符号数的大小用有符号数的大小用大大(greater)小小(less)表示)表示l利用利用zf标志确定标志确定相等相等(equal)l两数的大小分成两数的大小分成4种关系:种关系: 小于(不大于等于):小于(不大于等于):jl(jnge) 不小于(大于等于):不小于(大于等于):jnl(jge) 小于等于(不大于):小于等于(不大于):jle(jng) 不小于等于(大于):不小于等于(大于):jnle(jg )25jcc m,nm n 无符号数无符号数(a,b) 有符号数有符号数(g,l)l=) jb(jnae) jl(jng
20、e)l) jbe(jna) jle( (jng) )l (= (b)时转移时转移ljne 不等于不等于(a b)时转移时转移 mov ax, xcmp ax, 50jg too_highsub ax, yjo overflowjns nonnegneg ax nonneg: mov result, ax too_high: overflow: 例:例:x50,转到,转到too_high; 计算计算x-y: 溢出转到溢出转到overflow, 否则否则 |x-y|result 343. 循环指令循环指令(loop)l控制某程序段反复执行的次数。循环指令默认利控制某程序段反复执行的次数。循环指令默认利用用cx计数器,方便实现计数循环的程序结构计数器,方便实现计数循环的程序结构llabel操作数采用相对寻址方式操作数采用相对寻址方式loo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏泊尔专业知识培训内容课件
- 成人高考数学试卷及答案
- 压力蒸汽消毒锅灭菌验证讲课文档
- 江苏联考生物竞赛试题及答案
- 苏州茶叶知识培训课件
- 2025年洛阳市第三批中小学面向社会公开联考招聘教师100人备考练习题库及答案解析
- 2025年嘉兴平湖市医疗卫生单位招聘编外用工9人备考练习试题及答案解析
- 2025嘉兴海宁市盐官镇中心幼儿园公开招聘劳动合同制教职工4人考试参考试题及答案解析
- 2025衢州市衢江区公开招聘体育教练员4人备考练习题库及答案解析
- 外科护理学考试试题及答案题库
- 土壤改良施工方案
- 化工设备基础知识培训课件
- 商铺店面装修合同
- 食品企业总经理聘用模板
- 《纵隔病变的ct诊断》课件
- 【蝉妈妈】2024年抖音电商酒水行业趋势洞察报告
- 《毒虫咬伤》课件
- 教学设备安装及售后服务方案
- 工作交接单(标准模版)
- dq加盟合同模板
- 体育-初中水平四(七年级)篮球大单元教学计划表及运球急停急起教学设计、教案
评论
0/150
提交评论