8086指令系统(四) 串操作指令 | 您所在的位置:网站首页 › 8086指令系统表 › 8086指令系统(四) 串操作指令 |
串操作指令
串操作指令特点
源串(源操作数)的偏移地址是DS:SI, 允许段重设目标串(目标操作数)的偏移地址是ES:DI, 不允许段重设串的长度值放在CX寄存器中串操作指令本身可实现地址指针的自动修改, 修改方向与DF的状态有关, DF = 1按减地址(从高地址向减地址),DF = 0按增地址(从低地址向高地址),对字节(8位)操作加1, 对字(16位)操作加2可以在串操作指令前加重复前缀, 若使用了重复前缀, CX寄存器的值会自动减1
源串: DS/SEGMENT:SI 目标串: ES:DI 重复次数: CX 操作方向: DF 指令作用MOVSBDS:[SI] -> ES:[DI] 1次8位MOVSWDS:[SI] -> ES:[DI] 1次16位CMPSBDS:[SI] - ES:[DI] (改变状态标志位) 1次8位CMPSWDS:[SI] - ES:[DI] (改变状态标志位) 1次16位SCASBAL - ES:[DI]SCASWAX - ES:[DI]LODSBDS:[SI] -> AL, SI + 1 或 SI - 1LODSWDS:[SI] -> AX, SI + 1 或 SI - 1STOSBAL -> ES:[DI], DI + 1 或 DI - 1STOSWAL -> ES:[DI], DI + 1 或 DI - 1 1. 串操作指令重复操作前缀 前缀名称重复条件停止条件REP无条件重复前缀CX ≠ 0CX = 0REPE / REPZ有条件重复前缀CX ≠ 0, 且ZF = 1-REPNE / REPNZ有条件重复前缀CX ≠ 0, 且ZF = 0-直到CX = 0或满足指定条件, 重复操作才停下来 (1). 无条件重复前缀REP 重复执行指令规定的操作, 直到CX = 0 (2). 有条件重复前缀REPE REPZ CX ≠ 0, 且ZF = 1时重复 (3). 有条件重复前缀REPNE REPNZ CX ≠ 0, 且ZF = 0时重复 2. 串传送指令MOVS BYTE/WORD PTR [DI], BYTE/WORD PTR [SI] 功能: 将SEGMENT:[SI] 对应的指定字长的数据复制到 ES:[DI] 对应的单元中 MOVSB 功能: 将DS:[SI] 对应的1个单元的数据复制到 ES:[DI] 对应的单元中 MOVSW 功能: 将DS:[SI] 对应的2个单元的数据复制到 ES:[DI] 对应的单元中 3. 串比较指令CMPS BYTE/WORD PTR [DI], BYTE/WORD PTR [SI] 功能: 将SEGMENT:[SI] 单元指定字长的数据 与 ES:[DI] 对应的单元中的数据比较, 结果反映在状态标志位 CMPSB 功能: 将DS:[SI] 对应的1个单元的数据 与 ES:[DI] 对应的单元中的1个数据比较, 结果反映在状态标志位 CMPSW 功能: 将DS:[SI] 对应的2个单元的数据 与 ES:[DI] 对应的单元中的2个数据比较, 结果反映在状态标志位 串比较指令常与条件重复前缀REPZ(REPZ)或REPNE(REPNZ)连用, 加重复前缀的情况下吗串比较指令结束有两种可能: 不满足条件前缀所要求的条件CX = 0串比较指令会影响 ZF 的状态 重复前缀重复条件REPZ(REPZ)ZF = 1REPNE(REPNZ)ZF = 0 4. 串扫描指令SCAS OPRD 功能: OPRD是目标串, 用AL或AX的值与目标串(由ES:DI指定)中的字节或字比较, 结果影响状态标志位, 当不相等时, ZF = 0 SCASB 一次比较8位(1字节) SCASW 一次比较16位(2字节) 5. 串装入指令LODS OPRD 功能: OPRD是源串, 由DS:[SI]所指向的源串中的字节或字, 取到AL或AX, 并在之后, DF的值自动修改指针SI LODSB 一次装载8位(1字节) LODSW 一次装载16位(2字节) 6. 串存储指令STOS OPRD 功能: OPRD是目标串, 把AL或AX中的数据存储到ES:DI指向的存储单元中, 并在此之后, DF的值会自动修改DI的值 STOSB 一次存储8位(1字节) STOSW 一次存储16位(2字节) |
CopyRight 2018-2019 实验室设备网 版权所有 |