北京理工大学计算机实验三报告,北京理工大学汇编实验三

一、实验目的

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、计数

你可能感兴趣的:(北京理工大学计算机实验三报告)