(2)标志位操作指令 标志位操作指令是一组对标志位置位.复位.保存和恢复等操作的指令. 1.进位CF操作指令 Ø 清进位指令CLC(Clear Carry Flag):CF←0 Ø 置进位指令STC(Set Carry Flag):CF←1 Ø 进位取反指令CMC(Complement Carry Flag):CF←not CF 2.方向位DF操作指令 Ø 清方向位指令CLD(Clear Direction Flag):DF←0 Ø 置方向位指令STD(Set Direction Flag):D…
五.微机CPU的指令系统 1.汇编语言指令格式 汇编语言的指令格式如下: 指令助忆符 [操作数1 [, 操作数2 [, 操作数3]]] [;注释] 指令助忆符体现该指令的功能,它对应一条二进制编码的机器指令.指令的操作数个数由该指令的确定,可以没有操作数,也可以有一个.二个或三个操作数.绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出. 当指令含有操作数,并要求在指令中显式地写出来时,则在书写时必须遵守: l 指令助忆符和操作数之间要有分隔符,分隔符可以是若干个…
(6) 位操作指令 1.位扫描指令(Bit Scan Instruction) 指令的格式:BSF/BSR Reg, Reg/Mem ;80386+ 受影响的标志位:ZF 位扫描指令是在第二个操作数中找第一个“1”的位置.如果找到,则该“1”的位置保存在第一操作数中,并置标志位ZF为1,否则,置标志位ZF为0. 根据位扫描的方向不同,指令分二种:正向扫描指令和逆向扫描指令. a) 正向扫描指令BSF(Bit Scan Forward)从右向左扫描,即:从低位向高位扫描: b) 逆向扫描指令BSR…
(7)比较运算指令 在程序中,我们要时常根据某个变量或表达式的取值去执行不同指令,从而使程序表现出有不同的功能.为了配合这样的操作,在CPU的指令系统中提供了各种不同的比较指令.通过这些比较指令的执行来改变有关标志位,为进行条件转移提供依据. 1.比较指令CMP(Compare Instruction) 指令的格式:CMP Reg/Mem, Reg/Mem/Imm 受影响的标志位:AF.CF.OF.PF.SF和ZF 指令的功能:用第二个操作数去减第一个操作数,并根据所得的差设置有关标志位,为随后…
(9)转移指令 转移指令是汇编语言程序员经常使用的一组指令.在高级语言中,时常有“尽量不要使用转移语句”的劝告,但如果在汇编语言的程序中也尽量不用转移语句,那么该程序要么无法编写,要么没有多少功能,所以,在汇编语言中,不但要使用转移指令,而且还要灵活运用,因为指令系统中有大量的转移指令. 转移指令分无条件转移指令和有条件转移指令两大类. 1.无条件转移指令(Transfer Unconditionally) 无条件转移指令包括:JMP.子程序的调用和返回指令.中断的调用和返回指令等. 下面只介绍…
(8)循环指令 循环结构是程序的三大结构之一.为了方便构成循环结构,汇编语言提供了多种循环指令,这些循环指令的循环次数都是保存在计数器CX或ECX中.除了CX或ECX可以决定循环是否结束外,有的循环指令还可由标志位ZF来决定是否结束循环. 在高级语言中,循环计数器可以递增,也可递减,但汇编语言中,CX或ECX只能递减,所以,循环计数器只能从大到小.在程序中,必须先把循环次数赋给循环计数器. 汇编语言的循环指令都是放在循环体的下面,在循环时,首先执行一次循环体,然后把循环计数器CX或ECX减1.当…
(5) 移位操作指令 移位操作指令是一组经常使用的指令,它包括算术移位.逻辑移位.双精度移位.循环移位和带进位的循环移位等五大类. 移位指令都有指定移动二进制位数的操作数,该操作数可以是立即数或CL的值.在8086中,该立即数只能为1,但在其后的CPU中,该立即数可以是1··31之内的数. 1.算术移位指令 算术移位指令有:算术左移SAL(Shift Algebraic Left)和算术右移SAR(Shift Algebraic Right).它们的指令格式如下: SAL/SAR Reg/Mem…
(3)算术运算指令 算术运算指令是反映CPU计算能力的一组指令,也是编程时经常使用的一组指令.它包括:加.减.乘.除及其相关的辅助指令. 该组指令的操作数可以是8位.16位和32位(80386+).当存储单元是该类指令的操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式. 1.加法指令  (a)加法指令ADD(ADD Binary Numbers Instruction) 指令的格式:ADD Reg/Mem, Reg/Mem/Imm 受影响的标志位:AF.CF.OF.PF.SF和ZF 指…
(11)字符串操作指令 字符串操作指令的实质是对一片连续存储单元进行处理,这片存储单元是由隐含指针DS:SI或ES:DI来指定的.字符串操作指令可对内存单元按字节.字或双字进行处理,并能根据操作对象的字节数使变址寄存器SI(和DI)增减1.2或4.具体规定如下: (1).当DF=0时,变址寄存器SI(和DI)增加1.2或4: (2).当DF=1时,变址寄存器SI(和DI)减少1.2或4. 在后面各指令中,有关变址寄存器都按上述规定进行增减,不再一一说明. 1.取字符串数据指令(Load Stri…
(10)条件设置字节指令 条件设置字节指令(Set Byte Conditionally)是80386及其以后CPU所具有的一组指令.它们在测试条件方面与条件转移是一致的,但在功能方面,它们不是转移,而是根据测试条件的值来设置其字节操作数的内容为1或0. 条件设置字节指令的一般格式如下: SETnn Reg/Mem ;80386+ 其中:nn是表示测试条件的(见表5.4),操作数只能是8位寄存器或一个字节单元. 这组指令的执行不影响任何标志位. 例5.19 编写程序段:检测寄存器EAX的8个16…