微机CPU的指令系统 5.1 汇编语言指令格式 为了介绍指令系统中指令的功能,先要清楚汇编语言是如何书写指令的,这就象在学习高级语言程序设计时,要清楚高级语言语句的语义.语法及其相关规定一样. 5.1.1 指令格式 汇编语言的指令格式如下: 指令助忆符 [操作数1 [, 操作数2 [, 操作数3]]] [;注释] 指令助忆符体现该指令的功能,它对应一条二进制编码的机器指令.指令的操作数个数由该指令确定,可以没有操作数,也可以有一个.二个或三个操作数.绝大多数指令的操作数要显式的写出来,但也有指令…
微机CPU的指令系统 5.2.2 标志位操作指令 标志位操作指令是一组对标志位置位.复位.保存和恢复等操作的指令. 1.进位CF操作指令 a.清进位指令CLC(Clear Carry Flag):CF←0b.置进位指令STC(Set Carry Flag):CF←1c.进位取反指令CMC(Complement Carry Flag):CF←not CF .方向位DF操作指令 a.清方向位指令CLD(Clear Direction Flag):DF←0b.置方向位指令STD(Set Directi…
CPU资源和存储器 在汇编语言中,需要访问的硬件资源主要有:CPU内部资源.存储器和I/O端口.本章将着重讲解CPU内部寄存器的命名.功能及其常见的用途,还要介绍存储器的分段管理模式.存储单元地址的表示法以及其物理地址的形成方式. 2.1 寄存器组 寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一.由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能. 寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结…
五.微机CPU的指令系统 1.汇编语言指令格式 汇编语言的指令格式如下: 指令助忆符 [操作数1 [, 操作数2 [, 操作数3]]] [;注释] 指令助忆符体现该指令的功能,它对应一条二进制编码的机器指令.指令的操作数个数由该指令的确定,可以没有操作数,也可以有一个.二个或三个操作数.绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出. 当指令含有操作数,并要求在指令中显式地写出来时,则在书写时必须遵守: l 指令助忆符和操作数之间要有分隔符,分隔符可以是若干个…
(7)比较运算指令 在程序中,我们要时常根据某个变量或表达式的取值去执行不同指令,从而使程序表现出有不同的功能.为了配合这样的操作,在CPU的指令系统中提供了各种不同的比较指令.通过这些比较指令的执行来改变有关标志位,为进行条件转移提供依据. 1.比较指令CMP(Compare Instruction) 指令的格式:CMP Reg/Mem, Reg/Mem/Imm 受影响的标志位:AF.CF.OF.PF.SF和ZF 指令的功能:用第二个操作数去减第一个操作数,并根据所得的差设置有关标志位,为随后…
(9)转移指令 转移指令是汇编语言程序员经常使用的一组指令.在高级语言中,时常有“尽量不要使用转移语句”的劝告,但如果在汇编语言的程序中也尽量不用转移语句,那么该程序要么无法编写,要么没有多少功能,所以,在汇编语言中,不但要使用转移指令,而且还要灵活运用,因为指令系统中有大量的转移指令. 转移指令分无条件转移指令和有条件转移指令两大类. 1.无条件转移指令(Transfer Unconditionally) 无条件转移指令包括:JMP.子程序的调用和返回指令.中断的调用和返回指令等. 下面只介绍…
(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 指…
(10)条件设置字节指令 条件设置字节指令(Set Byte Conditionally)是80386及其以后CPU所具有的一组指令.它们在测试条件方面与条件转移是一致的,但在功能方面,它们不是转移,而是根据测试条件的值来设置其字节操作数的内容为1或0. 条件设置字节指令的一般格式如下: SETnn Reg/Mem ;80386+ 其中:nn是表示测试条件的(见表5.4),操作数只能是8位寄存器或一个字节单元. 这组指令的执行不影响任何标志位. 例5.19 编写程序段:检测寄存器EAX的8个16…
(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…