111111
精灵王
精灵王
  • 注册日期2010-12-08
  • 发帖数640
  • QQ
  • 火币1103枚
  • 粉丝120
  • 关注75
  • 社区明星
阅读:2045回复:0

经典汇编语言教程:5.2.11-字符串比较指令

楼主#
更多 发布于:2013-01-24 14:32

该指令是从某一指定的端口接受一个字符串,并存入一片存储单元之中。输入端口由DX指定,存储单元的首地址和读入数据的个数分别由ES:DI和CX来确定。在指令的执行过程中,还根据标志位DF对寄存器DI作相应增减。该指令不影响任何标志位。
与指令有关的操作数ES、DI、DX和CX等都是隐含操作数。
指令的格式:INS  地址表达式
INSB/INSW
INSD ;80286+
5、输出字符串指令(OutputString Instruction)
该指令是把一个字符串输入到指定的输出端口中。输出端口由DX指定,其输出数据的首地址和个数分别由DS:SI和CX来确定。在指令的执行过程中,还根据标志位DF对寄存器SI作相应增减。该指令的执行不影响任何标志位。
与指令有关的操作数DS、SI、DX和CX等都是隐含操作数。
指令的格式:OUTS  地址表达式
OUTSB/OUTSW
OUTSD ;80286+
6、字符串比较指令(CompareString Instruction)

该指令是把指针DS:SI和ES:DI所指向字节、字或双字的值相减,并用所得到的差来设置有关的标志位。与此同时,变址寄存器SI和DI也将根据标志位DF的值作相应增减。
指令的格式:CMPS 地址表达式1,地址表达式2
CMPSB/CMPSW
CMPSD ;80386+
受影响的标志位:AF、CF、OF、PF、SF和ZF


图5.18 字符串比较指令的功能示意图

7、字符串扫描指令(ScanString Instruction)

该指令是用指针ES:DI所指向字节、字或双字的值与相应的AL、AX或EAX的值相减,用所得到的差来设置有关标志位。与此同时,变址寄存器DI还将根据标志位DF的值进行增减。
指令的格式:SCAS 地址表达式1
SCASB/SCASW
SCASD ;80386+
受影响的标志位:AF、CF、OF、PF、SF和ZF

喜欢0 评分0
游客

返回顶部