计算机硬件基础5指令系统2.pptVIP

  • 3
  • 0
  • 约5.24千字
  • 约 59页
  • 2017-12-23 发布于上海
  • 举报
计算机硬件基础5指令系统2

第5章 指令系统 三、逻辑运算和移位指令 逻辑运算 移位操作 1. 逻辑运算 逻辑运算指令对操作数的要求大多与MOV指令相同。“非”运算指令要求操作数不能是立即数; 除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0 “与”指令 格式: AND OPRD1,OPRD2 操作: 两操作数按位相“与”,结果送目标地址 用途:使目标操作数的某些位不变,某些位清零; “或”运算指令 格式: OR OPRD1,OPRD2 操作: 两操作数按位相“或”,结果送目标地址 “非”运算指令 格式:NOT OPRD 操作:操作数按位取反再送回原地址 指令中的操作数不能是立即数 指令的执行对标志位无影响 例:NOT BYTE PTR[BX] “异或”运算指令 格式: XOR OPRD1,OPRD2 操作: 两操作数相“异或”,结果送目标 地址 两操作数自身相异或,结果 XOR AX,AX “测试”指令 格式: TEST OPRD1,OPRD2 操作: 执行“与”运算,但运算的结果不 送回目标地址,只影响标志位。 应用: 常用于测试某些位的状态 例: TEST AX, 8000H ;注意ZF标志位 2. 移位指令 非循环移位指令 循环移位指令 注: 移动一位时由指令直接给出移位次数1; 移动两位及以上,则移位次数由CL指定。 非循环移位指令 逻辑左移: SHL 算术左移: SAL 逻辑右移: SHR 算术右移: SAR 算术左移和逻辑左移 格式: SHL OPRD,1 SHL OPRD,CL SAL OPRD,1 SAL OPRD,CL 逻辑右移和算数右移 SHR OPRD,1 SHR OPRD,CL 非循环移位指令的应用 左移可实现乘法运算:左移n位:乘以2n 右移可实现除法运算:右移n位:除以2n 移位运算比乘除运算效率高 循环移位指令 不带进位位的循环移位 带进位位的循环移位 循环移位指令的格式、对操作数的要求与非循环移位指令相同 不带进位位的循环移位 带进位位的循环移位 循环移位指令的应用 用于对某些位状态的测试; 高位部分和低位部分的交换; 与非循环移位指令一起组成32位或更长字长数的移位。 四、串操作指令 串:存储器中地址连续的若干字符或数据 针对数据块或字符串的操作; 可实现存储器到存储器的数据传送; 待操作的数据串称为源串,目标地址称为目标串。 串操作指令的特点 源串一般存放在数据段,偏移地址由SI指定。允许段重设; 目标串必须在附加段,偏移地址由DI指定; 指令自动修改地址指针,修改方向由DF决定。DF=0 增地址方向;DF=1 减地址方向; 数据块长度值由CX指定; 可增加自动重复前缀以实现自动修改CX内容。 串操作指令流程 重复前缀 REP 无条件重复 REPE 相等重复 REPZ 为零重复 REPNE 不相等重复 REPNZ 不为零重复 串操作指令 串传送 MOVS 串比较 CMPS 串扫描 SCAS 串装入 LODS 串存储 STOS 它们是惟一能处理原和目标都是存储器操作数的指令 串传送指令 格式: MOVS OPRD1,OPRD2 MOVSB MOVSW 指令用于实现串的传送,常与无条件重复前缀连用。 后两种:源串: DS:SI 目标串:ES:DI 串传送指令例 用串传送指令实现200个字节数据从内存的一个区域送到另一个区域的的传送: LEA SI, MEM1 LEA DI, MEM2 MOV CX, 200 CLD ;方向标志置0 REP MOVSB HLT 串比较指令 格式: CMPS OPRD1,OPRD2 CMPSB CMPSW 后两种: 源串:DS:SI 目标串:ES:DI 该指令用于两个数据块或两个字符串之间的比较; 常与条件重复前缀连用,指令的执行不改变操作数,仅影响标志位。 串扫描指令 格式: SCAS OPRD SCASB SCASW 指令执行:在目标串OPRD中寻找AX(或AL)中放的关键字 在目标串[ES

文档评论(0)

1亿VIP精品文档

相关文档