当前位置:首页 > 微机原理与接口技术 期末复习总结 - 图文
微机原理与接口技术
SAL AL,1 ; 8x
ADD AL,AH ; 8x+2x = 10x
(2)循环移位指令(只影响OF,CF)
循环左移: ROL OPRD,M(循环8次,复位)
循环右移指令
循环右移: ROR OPRD,M
通过进位位循环左移指令RCL(循环9次,复位) 指令格式:RCL dst,count
用原CF的值填补空出的位,移出的位再进入CF。
通过进位位循环右移指令 指令格式:RCR dst,count
21 / 66
微机原理与接口技术
四、串操作指令
数据串:位于存储器中若干个字节或字组成的一组数据(或字符)
每个字节或字称为数据串的元素
字节串:元素为字节的数据串 字串:元素为字的数据串
是唯一的源操作数和目的操作数均在存储单元的指令 指令均以寄存器SI寻址源操作数(默认在数据段DS中),而目的操作数用寄存器DI(目的操作数默认在附加数据段ES中)字串长度默认在CX中,存取或搜索的值默认在AL中,每执行一次串操作指令,SI和DI将自动进行加(或减)1修改(对于字节串操作),或者进行加(或减)2修改(对于字串操作)。执行指令STD指令后,DF=1,SI和DI作自动减量修改;执行指令CLD指令后,DF=0,SI和DI作自动增量修改
执行前,需对SI,DI,DF进行设置; CMPS,SCAS指令影响标志位 1. 重复指令前缀
串操作类指令可以与重复指令前缀配合使用。从而可以使操作得以重复进行,及时停止。重复指令前缀的几种形式见下表:
2.串指令
· MOVS指令(move string) 功能:把数据段中由SI间接寻址的一个字节(或一个字)传送到附加段中由DI间接寻址的一个字节单元(或一个字单元)中去,然后,根据方向标志DF及所传送数据的类型(字节或字)对SI及DI进行修改,在指令重复前缀REP的控制下,可将数据段中的整串数据传送到附加段中去,CX(可为十进制也可为十六进制,后面加H)自动减1,直到CX=0为止(用CLD)该指令不影标志位。
.CMPS指令(compare string) 功能:把数据段中由SI间接寻址的一个字节(或一个字)与附加段中由DI间接寻址的一个字节(或一个字)进行比较操作,(由SI作为指针的元素减去DI作为指针的元素)使比较的结果影响标志位,然后根据方向标志DF及所进行比较的操作数类型(字节或字)对SI及DI进
22 / 66
微机原理与接口技术
行修改
在指令重复前缀REPE/REPZ或者REPNE/REPNZ的控制下,可在两个数据串中寻找第一个不相等的字节(或字),或者第一个相等的字节(或字)。
· SCAS指令(scan string)
功能:用由指令指定的关键字节或关键字(分别存放在AL及AX 寄存器中),与附加段中由DI间接寻址的字节串(或字串)中的一个字节(或字)进行比较操作,使比较的结果影响标志位,然后根据方向标志DF及所进行操作的数据类型(字节或字) 对DI进行修改,在指令重复前缀REPE/REPZ或REPNE/REPNZ的控制下,可在指定的数据串中搜索第一个与关键字节(或字)匹配的字节(或字),或者搜索第一个与关键字节(或字)不匹配的字节(或字)。 LODS指令(load string) 功能:把数据段中由SI间接寻址的字节内存单元(或字内存单元) 中指定的一个字节或一个字传送到AL(AX)寄存器中。然后,根据方向标志DF及所进行操作的数据类型(字节或字)对SI进行修改操作。在指令重复前缀的控制下,可连续将数据段中的一段内存区域中数据读入AL(AX)中,该指令不影响标志位。
注意:LODS指令一般不加重复前缀,因为执行一次重复指令,会将前一次累加器的数据覆盖 · STOS指令(store string)
功能:把指令中指定的一个字节或一个字(分别存放在AL及AX寄存器中),传送到附加段中由DI间接寻址的字节内存单元(或字内存单元)中去,然后,根据方向标志DF及所进行操作的数据类型(字节或字)对DI进行修改操作。在指令重复前缀的控制下,可连续将AL(AX)的内容存入到附加段中的一段内存区域中去,建立一串相同的值,该指令不影标志位。
23 / 66
微机原理与接口技术
五、控制转移指令
? 控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变。
? 控制转移类指令用于实现程序分支、循环、过程等程序结构,是仅次于传送指令的
最常用指令。
1、 转移指令
(1)无条件转移指令JMP 格式:JMP label
本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。 1.直接转移:转移的有效地址直接给出 2.间接转移:由存储器或者寄存器给出 物理地址=段基址×10H+偏移地址 [1]直接转移
①短程转移 (段内的相对转移)
所处位置的距离在-128~127范围内,即转移范围可用1个字节来表达 格式: JMP SHORT Label ; IP=IP+8位偏移量 物理地址=段基址×10H+偏移地址 ② 近程转移(段内的直接转移)(在当前代码段64KB范围内,±32KB范围)
即转移范围可用1个段来表达(一个段16位,是64KB) 格式: JMP NEAR PTR OPRD;IP=偏移地址 物理地址=段基址×10H+偏移地址 ③远程转移(段间的直接转移) JMP FAR PTR OPRD
JMP 2000H:1000H ;修改CS和IP的内容(目标地址必须用32位数表达) 物理地址=段基址×10H+偏移地址 (源都为立即数) [2]间接转移
指令的目的地址可以由存储器或寄存器给出 ①段内间接转移
JMP WORD PTR OPRD
例如:JMP WORD PTR [BX]; IP=[DS×16+BX] JMP WORD PTR BX; IP=BX ③ 间间接转移
JMP DOWRD PTR OPRD(DOWRD=Double Word)
该指令由OPRD指明的第一个字单元送IP,第二个字单元送CS
24 / 66
共分享92篇相关文档