一、实验目的
1)、熟悉串操作指令的功能与应用;
2、掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序;
3、了解汇编语言字符串处理基本流程;
二、实验环境与原理
1、实验硬件环境
1) 硬件环境:惠普64 位一体化计算机及局域网;
2) 软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。
2、实验原理
1) 字符串操作流程
a. SI 寄存器保存源串首地址;
b. DI 寄存器保存目的串首地址;
c. CX 寄存器保存字符串长度;
d. CLD 或STD 指令设置字符串处理方向;
e.当CLD 指令使DF=0,在执行串处理指令时可使地址自动增量;STD 使DF=1,在执行串处理指令时可使地址自动减量。
2) 重复前缀指令
a.重复次数由计数寄存器CX 中存放的值决定,指令每重复执行一次,计数器CX 中值减1,当CX 中值减至0 时,停止重复执行,继续执行下一条指令。
b. 当REP 无条件重复前缀,重复串操作直到计数寄存器的内容CX 为0 为止。经常与REP配合工作的字符串处理指令有MOVS、STOS 和LODS。
c. 当REPE/REPZ 判断计数寄存器的内容CX 是否为0 或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。
d. 当REPNE/REPNZ 判断计数寄存器的内容是否为0 或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。
3) 字符串操作指令
a. lodsb、lodsw:把DS:SI 指向的存储单元中的数据装入AL 或AX,然后根据DF 标志增减SI;
b. stosb、stosw:把AL 或AX 中的数据装入ES:DI 指向的存储单元,然后根据DF 标志增减DI;
c. movsb、movsw:把DS:SI 指向的存储单元中的数据装入ES:DI 指向的存储单元中,然后根据DF 标志分别增减SI 和DI;
d. scasb、scasw:把AL 或AX 中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF 标志分别增减SI 和DI;
e. cmpsb、cmpsw:把DS:SI 指向的存储单元中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF 标志分别增减SI 和DI;
f. rep:重复其后的串操作指令。重复前先判断CX 是否为0,为0 就结束重复,否则CX 减1,重复其后的串操作指令。主要用在MOVS 和STOS 前。一般不用在LODS 前。
上述指令涉及的寄存器:段寄存器DS 和ES、变址寄存器SI 和DI、累加器AX、计数