【教学课件】第5章指令系统.ppt
《【教学课件】第5章指令系统.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第5章指令系统.ppt(111页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章指令系统计算机教学实验中心计算机教学实验中心第二部分第二部分1三、逻辑运算和移位类逻辑运算逻辑运算移位操作移位操作与与或或非非异或异或非循环移位非循环移位循环移位循环移位逻辑移位逻辑移位算术移位算术移位不带进位位的移位不带进位位的移位带进位位的移位带进位位的移位21.逻辑运算n逻辑运算指令对操作数的要求大多与逻辑运算指令对操作数的要求大多与MOV指令指令相同。相同。“非非”运算指令要求操作数不能是立即运算指令要求操作数不能是立即数;数;n除除“非非”运算指令外,其余指令的执行都会使运算指令外,其余指令的执行都会使标志位标志位OF=CF=03“与”指令n格式:格式:AND OPRD1,
2、OPRD2n操作:操作:两操作数按位相两操作数按位相“与与”,结果送目标,结果送目标地地 址址4“与”指令的应用n实现两操作数相与的运算;实现两操作数相与的运算;n使目标操作数的某些位不变,某些位清零;使目标操作数的某些位不变,某些位清零;n在操作数不变的情况下使在操作数不变的情况下使CF和和OF清零。清零。5“与”指令的应用nAND BL,BXnAND AL,0FHnAND AX,AX6“或”运算指令n格式:格式:OR OPRD1,OPRD2n操作:操作:两操作数按位相两操作数按位相“或或”,结果送目标,结果送目标 地址地址7“或”运算指令的应用n实现两操作数相实现两操作数相“或或”的运算;
3、的运算;n使某些位不变,某些位置使某些位不变,某些位置“1”n在不改变操作数的情况下使在不改变操作数的情况下使OF=CF=08应用程序例OR AX,DIOR CL,0FHOR AX,AX OR AL,AL JPE GOON OR AL,80H GOON:.偶校验转移偶校验转移(PF=1)将一个二将一个二进制数进制数9变变为字符为字符9?9“非”运算指令n格式:格式:NOT OPRDNOT OPRDn操作:操作数按位取反再送回原地址操作:操作数按位取反再送回原地址n指令中的操作数不能是立即数指令中的操作数不能是立即数n指令的执行对标志位无影响指令的执行对标志位无影响n例:例:NOT BYTE P
4、TRBXNOT BYTE PTRBX10“异或”运算指令n格式:格式:XOR OPRD1,OPRD2n操作:操作:两操作数相两操作数相“异或异或”,结果送目标,结果送目标 地址地址n两操作数自身相异或,结果两操作数自身相异或,结果 XOR AX,AX11“测试”指令n格式:格式:TEST OPRD1,OPRD2n操作:操作:执行执行“与与”运算,但运算的结果不运算,但运算的结果不 送回目标地址。送回目标地址。n应用:应用:常用于测试某些位的状态常用于测试某些位的状态12“测试”指令例n从地址为从地址为38F0H的端口中读入一个字节数,的端口中读入一个字节数,如果该数的如果该数的bit1位为位为
5、1,则可从,则可从38FEH端口端口将将DATA为首地址的一个字输出,否则就不为首地址的一个字输出,否则就不能进行数据传送。能进行数据传送。编写相应的程序段。编写相应的程序段。13“测试”指令例开开 始始取待输出数的取待输出数的偏移地址偏移地址读入状态字读入状态字测试测试bit1位状态位状态Bit1=1?取输入口地址取输入口地址取输出口地址取输出口地址 输出一个字输出一个字NY14“测试”指令例 LEA SI,DATA MOV DX,38F0HWATT:IN AL,DX TEST AL,02H JZ WATT ;ZF=1转移转移 MOV DX,38FEH MOV AX,SI OUT DX,AX
6、152.移位指令n非循环移位指令非循环移位指令n循环移位指令循环移位指令n注:注:移动一位时由指令直接给出;移动两位及以上,移动一位时由指令直接给出;移动两位及以上,则移位次数由则移位次数由CL指定。指定。16非循环移位指令n逻辑左移逻辑左移n算术左移算术左移n逻辑右移逻辑右移n算术右移算术右移17算术左移和逻辑左移n格式:格式:SAL OPRD,1 SAL OPRD,CL SHL OPRD,1 SHL OPRD,CL有符号数有符号数无符号数无符号数逻辑逻辑左移左移移动一位后,若移动一位后,若CF与最高不相等,则与最高不相等,则OF=1;否则否则OF=018逻辑右移n格式:格式:SHR OPR
7、D,I SHR OPRD,CL0CF无符号数无符号数的右移的右移移动一位后,若次高位与最高位不相等,则移动一位后,若次高位与最高位不相等,则OF=1;否则否则OF=019算术右移n格式:格式:SAR OPRD,I SAR OPRD,CL有符号数有符号数的右移的右移CF20非循环移位指令的应用n左移可实现乘法运算左移可实现乘法运算n右移可实现除法运算右移可实现除法运算 见见教材教材教材教材p198p198例例例例21循环移位指令不带进位位的循环移位不带进位位的循环移位 带进位位的循环移位带进位位的循环移位循环移位指令的格式、对操作数的要求与非循环移位指循环移位指令的格式、对操作数的要求与非循环移
8、位指令相同令相同左移左移 ROL右移右移 ROR左移左移 RCL右移右移 RCR22不带进位位的循环移位CFCF23带进位位的循环移位CFCF24循环移位指令的应用n用于对某些位状态的测试;用于对某些位状态的测试;n高位部分和低位部分的交换;高位部分和低位部分的交换;n与非循环移位指令一起组成与非循环移位指令一起组成32位或更长字位或更长字长数的移位。长数的移位。25程序例 MOV SI,1000H MOV DI,3000H MOV CX,4BBB:MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV DI,AL INC DI MOV AL,BLPUSH C
9、XMOV CL,4SHR AL,CLSHR AL,CLOR AL,30HOR AL,30HMOV DI,ALMOV DI,ALINC DIINC DIINC SIINC SIPOP CXPOP CXDEC CXDEC CXJNZ BBBJNZ BBBHLTHLT程序程序功能?功能?26程序功能n将将1000H开始存放的开始存放的四个压缩四个压缩BCD码转换码转换为为ASCII码存放在码存放在3000H开始的单元中开始的单元中去。去。12H34H56H78H 1000H3000H27四、串操作指令n针对数据块或字符串的操作;针对数据块或字符串的操作;n可实现存储器到存储器的数据传送;可实现存储器
10、到存储器的数据传送;n待操作的数据串称为源串,目标地址称为待操作的数据串称为源串,目标地址称为目标串。目标串。28串操作指令的特点n源串一般存放在数据段,偏移地址由源串一般存放在数据段,偏移地址由SI指定。允指定。允许段重设;许段重设;n目标串必须在附加段,偏移地址由目标串必须在附加段,偏移地址由DI指定;指定;n指令自动修改地址指针,修改方向由指令自动修改地址指针,修改方向由DF决定。决定。DF=0 增地址方向;增地址方向;DF=1 减地址方减地址方向;向;n数据块长度值由数据块长度值由CX指定;指定;n可增加自动重复前缀以实现自动修改可增加自动重复前缀以实现自动修改CX内容。内容。29串操
11、作指令流程取源串地址取源串地址取目标串地址取目标串地址设串长度设串长度传送一个字节或字传送一个字节或字修改地址指针修改地址指针修改串长度值修改串长度值传送完否?传送完否?30重复前缀nREP 无条件重复无条件重复nREPE 相等重复相等重复nREPZ 为零重复为零重复nREPNE 不相等重复不相等重复nREPNZ 不为零重复不为零重复条件重复条件重复CX0ZF=1CX0ZF=0CX0 重复重复31串操作指令n串传送串传送 MOVSn串比较串比较 CMPSn串扫描串扫描 SCASn串装入串装入 LODSn串送存串送存 STOS32串传送指令n格式:格式:MOVS OPRD1,OPRD2 MOVS
12、B MOVSW指令用于实现数据块的传送,常与无条件重复前缀连用。指令用于实现数据块的传送,常与无条件重复前缀连用。33串传送指令n对比用对比用MOV指令和指令和MOVS指令实现将指令实现将200个字节数据从内存的一个区域送到另一个个字节数据从内存的一个区域送到另一个区域的程序段。区域的程序段。34串传送指令例n用串传送指令实现用串传送指令实现200个字节数据的传送:个字节数据的传送:LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT35串比较指令n格式:格式:CMPS OPRD1,OPRD2 CMPSB CMPSWn该指令用于两个数据块或两
13、个字符串之间的比较;该指令用于两个数据块或两个字符串之间的比较;n常与条件重复前缀连用,指令的执行不改变操作数,常与条件重复前缀连用,指令的执行不改变操作数,仅影响标志位。仅影响标志位。36串比较指令例n测试上例中测试上例中200个字节数据是否传送正确:个字节数据是否传送正确:LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD REPE CMPSB JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT 37串扫描指令n格式:格式:SCAS OPRD SCASB SCASWn指令执行:指令执行:AX(或(或AL)-OPRDn该指令常用于在某个区
14、域中寻找关键字。该指令常用于在某个区域中寻找关键字。目目 标标操作数操作数38串装入指令n格式:格式:LODS OPRD LODSB LODSWn操作:操作:对字节:对字节:AL (DS:SI)AL (DS:SI)对对 字:字:AX (DS:SI)AX (DS:SI)源操作数源操作数39串装入指令n用于将内存某个区域的数据串依次装入累加器,用于将内存某个区域的数据串依次装入累加器,以便显示或输出到接口。以便显示或输出到接口。nLODS指令一般不加重复前缀。指令一般不加重复前缀。40串送存指令n格式:格式:STOS OPRD STOSB STOSWn操作:操作:对字节:对字节:AL (ES:DI
15、)AL (ES:DI)对对 字:字:AX (ES:DI)AX (ES:DI)目目 标标操作数操作数41串送存指令的应用n将内存某个区域清零将内存某个区域清零 区域首地址送区域首地址送ES:DI串长度送串长度送CX置方向标志置方向标志DF0送累加器送累加器AL执行串送存指令执行串送存指令开始开始42五、程序控制指令n转移指令转移指令n循环控制循环控制n过程调用过程调用n中断控制中断控制431.转移指令n无条件无条件转移指令转移指令 无条件转移到目标地址,执行新的指令无条件转移到目标地址,执行新的指令n有条件转移指令有条件转移指令 在具备一定条件的情况下转移到目标地址在具备一定条件的情况下转移到目
16、标地址44转移指令的转移原理n通过修改代码段寄存器通过修改代码段寄存器CS及指令指针及指令指针IP的内容,使程序改变顺序执行的模式,转的内容,使程序改变顺序执行的模式,转到新的目标地址执行。到新的目标地址执行。45无条件转移指令n指令格式:指令格式:JMP OPRDn无条件转移的目标地址可以是在当前代码段,无条件转移的目标地址可以是在当前代码段,也可在另一代码段也可在另一代码段46无条件转移指令n段内转移段内转移目标地址与目标地址与JMP指令在同一代码段指令在同一代码段n转移方式:转移方式:直接转移直接转移指令中直接给出转移的目标地址指令中直接给出转移的目标地址 间接转移间接转移由指令中的寄存
17、器或存储器间接给出转移由指令中的寄存器或存储器间接给出转移 目标地址目标地址47无条件段内转移n直接转移:直接转移:JMP Lablen转移目标地址:转移目标地址:段基地址不变;段基地址不变;偏移地址偏移地址=当前当前IP+位移量位移量JMPLabel 代代码码段段位移量位移量近地址标号近地址标号48无条件段内转移n间接转移:间接转移:JMP BX JMP WORD PTRBXJMP 代代码码段段数数据据段段BX=1200 XXHXXHIP指令码指令码49无条件段间转移n直接转移:直接转移:JMP FAR Lable远地址标号远地址标号JMPLabel 代代码码段段1代代码码段段2XXHXXH
18、XXHXXHIPCS50无条件段间转移n间接转移:间接转移:JMP DWORD PTRBXXXHXXHXXHXXHBXIPCSJMP 指令码指令码代代码码段段1代代码码段段2数数据据段段51条件转移指令n在满足一定的条件下,程序转移到目标地址继在满足一定的条件下,程序转移到目标地址继续执行;续执行;n在条件转移指令之前,应有一条为条件转移指在条件转移指令之前,应有一条为条件转移指令的执行形成条件的指令(如对标志位产生影令的执行形成条件的指令(如对标志位产生影响的指令);响的指令);n条件转移指令均为段内短转移,即转移范围为:条件转移指令均为段内短转移,即转移范围为:-128-+127p2065
19、22.循环控制指令n控制程序在以当前控制程序在以当前IP为中心的为中心的-128+127范围范围内循环执行;内循环执行;n循环次数由循环次数由CX寄存器指定。寄存器指定。循环指令循环指令无条件循环指令无条件循环指令LOOP 条件循环指令条件循环指令LOOPZ LOOPNZ53无条件循环指令n格式:格式:LOOP Lablen循环条件:循环条件:CX 0nLOOP指令的操作相当于:指令的操作相当于:DEC CX JNZ Lable54条件循环指令n格式:格式:LOOPZ Lable LOOPE Lablen循环条件:循环条件:CX 0 ZF=1n格式:格式:LOOPZ Lable LOOPE L
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 指令系统
限制150内