汇编语言课件(5)

2019-03-16 13:26

汇编语言程序设计

⑤ 循环左移指令

格式:ROL OPR,CNT 操作:

⑥ 循环右移指令

格式:ROR OPR,CNT 操作:

⑦ 带进位循环左移指令 格式:RCL OPR,CNT 操作:

⑧ 带进位循环右移指令 格式:RCR OPR,CNT 操作:

说明:

1. 可以为字/字节操作

2. 对条件码的影响(CF)

3. OPR可以是除立即数以外的任何寻址方式

4、串操作指令

包括: MOVS,CMPS,SCAS ,LODS,STOS 与上述指令配合使用的前缀有:

- 20 -

汇编语言程序设计

REP 重复

REPE/REPZ 当相等/为零时重复

REPNE/REPNZ 当不相等/不为零时重复

1)重复指令 ① REP重复串操作 格式:REP 串指令 操作:

1. CX=0时,退出REP,否则继续执行 2. CX=CX-1

3. 执行REP后面的串指令 4. 重复1.~3. ② REPE/REPZ 当相等/为零时重复串操作 格式:REPE(或REPZ) 串指令 操作:

1. CX=0或ZF=0时退出,否则继续执行 2. CX=CX-1

3. 执行REPE/REPZ后面的串指令 4. 重复1.~3. ③ REPNE/REPNZ 当不相等/不为零时重复串操作

当CX=0或ZF=1时退出,其余的操作与REPE/REPZ相同

2)串处理指令 ① MOVS 串传送指令

格式:MOVSB 字节操作,MOVSW字操作 操作: ·((DI))←((SI)) ·修改SI,DI

字节:(SI)←(SI)±1 ,(DI)←(DI)±1 字:(SI)←(SI)±2 ,(DI)←(DI)±2 注:DF=0时,用+,DF=1时,用- 功能:把SI指向的数据段中的一个字/字节传送到由DI指向的附加段的一个字/字节单元中。

设置DF的指令: 设置DF=0,CLD 设置DF=1,STD

例如:将数组STR1的内容传送到数组STR2中。 设 STR1 DB ‘HELLO’ ;(在数据段中)

- 21 -

汇编语言程序设计

STR2 DB 5 DUP(?) ;(在附加段中) 程序

LEA SI,STR1 LEA DI,STR2 MOV CX,5 CLD

REP MOVSB

由此可知,要想传送整个字符串,需做以下工作: 1. 设置SI,DI

2. 将字符串长度送CX寄存器 3. 设置DF

4. 执行REP MOVSB ② CMPS 字符串比较指令

格式:CMPSB 字节操作,CMPSW字操作 操作: ·((SI))—((DI)) ·修改SI,DI

字节:(SI)←(SI)±1 ,(DI)←(DI)±1 字:(SI)←(SI)±2 ,(DI)←(DI)±2 功能:将SI指向的数据段中的一个字/字节单元的内容与DI指向的附加段中的一个字/字节单元的相减,但不保存结果,根据结果设置标志位。

例如:比较字符串STR1与字符串STR2是否相等。 设 STR1 DB ‘HELLO’ ;(在数据段中) STR2 DB ‘HELOO’ ;(在附加段中)

程序如下: LEA SI,STR1 LEA DI,STR2 MOV CX,5 CLD

REPE CMPSB JE MATCH

JNE NOMATCH ……

MATCH:………… …… ……

NOMATCH:…… …………

- 22 -

汇编语言程序设计

………… ③ SCAS 字符串检索指令

格式:SCASB 字节操作,SCASW字操作 操作: · 字节:(AL)—((DI)),(DI)←(DI)±1 · 字: (AX)—((DI)),(DI)←(DI)±2 功能:常用于查找某字符是否在某字符串中。

例如:在附加段中定义如下字符串STR,查找空格是否在该字符串中。 STR DB ‘WHAT IS THIS’

程序如下: MOV AL,20H LEA DI,STR MOV CX,12 CLD

REPNE SCASB JNZ NOFOUND JZ FOUND ……

FOUND:………… …… ……

NOFOUND:…… ………… ………… ④ LODS 取字符串指令

格式:LODSB 字节操作,LODSW字操作 操作: · 字节:(AL)←((SI)),(SI)←(SI)±1 · 字: (AX)←((SI)),(SI)←(SI)±2

功能:把由SI指向的数据段中的一个字/字节单元的内容传送到AL/AX中。 ⑤ STOS 存字符串指令

格式:STOSB 字节操作,STOSW字操作 操作: · 字节:((DI))←(AL),(DI)←(DI)±1 · 字: ((DI))←(AX),( DI)←(DI)±2

功能:把AL/AX中的内容传送到由DI指向的附加段中的一个字/字节单元中。

5、控制转移指令 1)无条件转移指令

- 23 -

汇编语言程序设计

格式:JMP OPR

功能:转移到指定的地方继续执行

2)条件转移指令

JE/JZ 相等,则转移

JNE/JNZ 不相等,则转移 ·带符号数的比较

(大于:Greater 小于:Less 等于:Equal)

JG/JNLE 大于,则转移 JNG/JLE 不大于,则转移 JL/JNGE 小于,则转移 JNL/JGE 不小于,则转移 ·无符号数的比较

(高于:Above 低于:Belove 等于:Equal)

JB/JNAE 低于,则转移 JNB/JAE 不低于,则转移 JA/JNBE 高于,则转移 JNA/JBE 不高于,则转移 ·根据某个标志位的值

JZ ZF为1,则转移 JNZ ZF为0,则转移 JS SF为1,则转移 JNS SF为0,则转移 JO OF为1,则转移 JNO OF为0,则转移 JP PF为1,则转移 JNP PF为0,则转移 JC CF为1,则转移 JNC CF为0,则转移 ·测试CX之为零则转移指令

JCXZ ;CX的值为0,则转移

例如:比较AX和BX中两个带符号数的大小,如果(AX)>(BX),则令CX=0;否则令CX=0FFFFH (条件设置指令 略) 3)循环指令 ① LOOP 循环指令 格式:LOOP OPR 循环条件:(CX)≠0

- 24 -


汇编语言课件(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅谈待定系数法在中学数学中的应用

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: