微机CPU的指令系统

5.2.2 标志位操作指令

标志位操作指令是一组对标志位置位、复位、保存和恢复等操作的指令。

1、进位CF操作指令

a、清进位指令CLC(Clear Carry Flag):CF←0
b、置进位指令STC(Set Carry Flag):CF←1
c、进位取反指令CMC(Complement Carry Flag):CF←not CF

、方向位DF操作指令

a、清方向位指令CLD(Clear Direction
Flag):DF←0
b、置方向位指令STD(Set Direction Flag):DF←1

、中断允许位IF操作指令

a、清中断允许位指令CLI(Clear Interrupt
Flag):IF←0
    其功能是不允许可屏蔽的外部中断来中断其后程序段的执行。

b、置中断允许位指令STI(Set Interrupt
Flag):IF←1
    其功能是恢复可屏蔽的外部中断的中断响应功能,通常是与CLI成对使用的。

、取标志位操作指令

a、LAHF(Load AH from
Flags):AH←Flags的低8位
b、SAHF(Store AH in Flags):Flags的低8位←AH

、标志位堆栈操作指令

a、PUSHF/PUSHFD(Push Flags onto
Stack):把16位/32位标志寄存器进栈;
b、POPF/POPFD(Pop Flags off
Stack):把16位/32位标志寄存器出栈;

6、逻辑操作指令的小结

  下面是学习标志位指令的控件,浏览者可以运用此类指令,观看标志寄存器的相应变化。

5.2.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
    指令的功能是把源操作数的值加到目的操作数中。

  b、带进位加指令ADC(ADD With Carry Instruction)

    指令的格式:ADC  Reg/Mem,
Reg/Mem/Imm
    受影响的标志位:AF、CF、OF、PF、SF和ZF
    指令的功能是把源操作数和进位标志位CF的值(0/1)一起加到目的操作数中。

  c、加1指令INC(Increment by 1 Instruction)

    指令的格式:INC 
Reg/Mem
    受影响的标志位:AF、OF、PF、SF和ZF,不影响CF
    指令的功能是把操作数的值加1。

  d、交换加指令XADD(Exchange and Add)

    指令的格式:XADD  Reg/Mem,
Reg      ;80486+
    受影响的标志位:AF、CF、OF、PF、SF和ZF
    指令的功能是先交换两个操作数的值,再进行算术“加”法操作。

  例5.3 已知有二个32位数d1和d2(用数据类型DD说明),编写程序片段把d2的值加到d1中。

    解:32位数d1和d2在内存中如下所示。

    方法1:用16位寄存器编写程序
        MOV AX, word ptr d1 ;由于d1是双字类型,必须使用强制类型说明符。以下同。
        MOV DX, word ptr d1+2 ;(DX,AX)构成一个32位数据
        ADD AX, word ptr d2 ;低字相加
        ADC DX, word ptr d2+2 ;高字相加。在低字相加时,有可能会产生“进位”
        MOV word ptr d1, AX ;低字送给d1的低字
        MOV word ptr d1+2, DX ;高字送给d1的高字
    方法2:用32位寄存器编写程序
        MOV EAX, d1
        ADD EAX, d2
        MOV d1, EAX

  从上面两段程序不难看出:用32位寄存器来处理32位数据显得简单、明了,而16位微机虽然也能处理32位数据,但做起来就要复杂一些。

  下面是学习和掌握加法类指令的控件,可模拟执行ADD、ADC、INC、XADD、CLC、STC和CMC等指令。用鼠标左键单击寄存器列表框中指定的寄存器,则可修改其值。后面其它控件的有关操作与此相一致,不再说明。从上面两段程序不难看出:用32位寄存器来处理32位数据显得简单、明了,而16位微机虽然也能处理32位数据,但做起来就要复杂一些。

汇编语言从入门到精通-5微机CPU的指令系统2的更多相关文章

  1. 汇编语言从入门到精通-5微机CPU的指令系统1

    微机CPU的指令系统 5.1 汇编语言指令格式 为了介绍指令系统中指令的功能,先要清楚汇编语言是如何书写指令的,这就象在学习高级语言程序设计时,要清楚高级语言语句的语义.语法及其相关规定一样. 5.1 ...

  2. 汇编语言从入门到精通-2CPU资源和存储器

    CPU资源和存储器 在汇编语言中,需要访问的硬件资源主要有:CPU内部资源.存储器和I/O端口.本章将着重讲解CPU内部寄存器的命名.功能及其常见的用途,还要介绍存储器的分段管理模式.存储单元地址的表 ...

  3. 汇编语言--微机CPU的指令系统(五)(数据传送指令)

    五.微机CPU的指令系统 1.汇编语言指令格式 汇编语言的指令格式如下: 指令助忆符 [操作数1 [, 操作数2 [, 操作数3]]] [;注释] 指令助忆符体现该指令的功能,它对应一条二进制编码的机 ...

  4. 汇编语言--微机CPU的指令系统(五)(比较运算指令)

    (7)比较运算指令 在程序中,我们要时常根据某个变量或表达式的取值去执行不同指令,从而使程序表现出有不同的功能.为了配合这样的操作,在CPU的指令系统中提供了各种不同的比较指令.通过这些比较指令的执行 ...

  5. 汇编语言--微机CPU的指令系统(五)(转移指令)

    (9)转移指令 转移指令是汇编语言程序员经常使用的一组指令.在高级语言中,时常有“尽量不要使用转移语句”的劝告,但如果在汇编语言的程序中也尽量不用转移语句,那么该程序要么无法编写,要么没有多少功能,所 ...

  6. 汇编语言--微机CPU的指令系统(五)(算术运算指令)

    (3)算术运算指令 算术运算指令是反映CPU计算能力的一组指令,也是编程时经常使用的一组指令.它包括:加.减.乘.除及其相关的辅助指令. 该组指令的操作数可以是8位.16位和32位(80386+).当 ...

  7. 汇编语言--微机CPU的指令系统(五)(条件设置字节指令)

    (10)条件设置字节指令 条件设置字节指令(Set Byte Conditionally)是80386及其以后CPU所具有的一组指令.它们在测试条件方面与条件转移是一致的,但在功能方面,它们不是转移, ...

  8. 汇编语言--微机CPU的指令系统(五)(循环指令)

    (8)循环指令 循环结构是程序的三大结构之一.为了方便构成循环结构,汇编语言提供了多种循环指令,这些循环指令的循环次数都是保存在计数器CX或ECX中.除了CX或ECX可以决定循环是否结束外,有的循环指 ...

  9. 汇编语言--微机CPU的指令系统(五)(移位操作指令)

    (5) 移位操作指令 移位操作指令是一组经常使用的指令,它包括算术移位.逻辑移位.双精度移位.循环移位和带进位的循环移位等五大类. 移位指令都有指定移动二进制位数的操作数,该操作数可以是立即数或CL的 ...

随机推荐

  1. Spring - MVC - 修改 Java 类后, 触发重启

    1. 概述 学习 Spring MVC 下, 如何可控的触发重启 2. 背景 学习 Spring 场景 有些时候, 改完类, 需要重启 之前有听说, Spring MVC 可以自动重启 于是想, 尝试 ...

  2. 【PAT甲级】1109 Group Photo (25分)(模拟)

    题意: 输入两个整数N和K(N<=1e4,K<=10),分别表示人数和行数,接着输入N行每行包括学生的姓名(八位无空格字母且唯一)和身高([30,300]的整数).按照身高逆序,姓名字典序 ...

  3. Python实验案例

    Python 运算符.内置函数 实验目的: 1.熟练运用 Python 运算符. 2.熟练运用 Python 内置函数.实验内容: 1.编写程序,输入任意大的自然数,输出各位数字之和. 2.编写程序, ...

  4. 每天进步一点点------SOPC的Avalon-MM IP核(四) KEY_LED IP定制

    /********************************************************************************* * Company : * Eng ...

  5. IDEA中使用maven下载插件速度很慢解决方法

    1.打开IDEA的File--->settings--->搜索mavaen--->找到settings.xml 2.在settings.xml中添加 <!-- 阿里云仓库 -- ...

  6. Git主库私库相关操作操作

    命令1: git remote add 库名称 库地址 说明:写好的代码提交到两个git远端,git remote add是将另一个库地址设置进来 命令2: git fetch 库名称 分支名称 说明 ...

  7. MySQL主从复制(一主两从)

       主库开启bin-log二进制日志功能,并建立slave账号,并授权从库连接主库,从库通过change master得到主库的相关同步信息, 然后连接主库进行验证,主库产生的新数据会导入到bin- ...

  8. Centos 7源码编译安装 php7.1 之生产篇

    Centos 7源码编译安装 php7.1 之生产篇 Published 2017年4月30日 by Node Cloud 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具 ...

  9. 03-Docker-Engine详解

    目录 03-Docker-Engine详解 摆脱 LXC 摒弃大而全的 Docker daemon 开放容器计划(OCI)的影响 runc containerd 启动一个新的容器 该模型的显著优势 s ...

  10. spring web 测试用例

    spring web 测试有三种方式 1. 自己初始化 MockMvc 2.依赖@springbootTest 它会帮你生产 webTestClient ,只需自己注入即可. 3.启动的时候,不加载整 ...