1、子程序安全调用

子程序的设计要以保持寄存器值的平衡,栈空间的平衡为原则。
    子程序的设计在必要时候,需要保持标志寄存器的平衡。

2、标志寄存器

在计算机中,有一个专用16位的寄存器FLAGS(又称:标志寄存器)。
    标志寄存器是按位起作用的,每一位都有专门的含义,记录特定的信息。

FLAGS寄存器结构:
    0    CF进位(是/否)        CY    NC
    1
    2    PF奇偶(偶/奇)        PE    PO
    3
    4    AF辅助进位(是/否)    AC    NA
    5
    6    ZF零(是/否)        ZR    NZ
    7    SF符号(负/正)        NG    PL
    8    TF
    9    IF中断(允许/关闭)    EI    DI
    10    DF方向(减量/增量)    DN    UP
    11    OF溢出(是/否)        OV    NV
    12
    13
    14
    15

3、标志寄存器与栈

 PUSHF    标志寄存器的值入栈
    POPF    标志寄存器的值出栈

assume cs:code,ds:data,ss:stack
data segmentdw 256 dup (0H)
data endsstack segmentdw 256 dup (0H)
stack endscode segment
start:mov ax,stackmov ss,axmov sp,60Hcldmov ax,1234Hpush axstdpushfcldpopf   ;恢复到stdmov ax,4c00Hint 21H
code ends
end start

二十二、标志寄存器与栈(代码设计安全,与子程序寄存器安全类似)相关推荐

  1. 【C语言】二十二步了解函数栈帧(压栈、传参、返回、弹栈)

    阅读本文需要掌握的知识 熟练使用--c语言函数 进入正题前 首先我们为什么要学习函数的栈帧? 简单回答就是:增加内功 学习函数调用的底层代码,了解函数如何传参.如何返回 这样对于函数的使用有很大的帮助 ...

  2. 实现会员管理的会员政策优惠设置功能的代码(二十二)

    实现会员管理的会员政策优惠设置功能的代码(二十二) 3.5.3会员政策优惠设置 3.5.3.1会员政策优惠设置主界面 会员政策优惠设置是针对会员来讲的,可能是医院为了感谢会员们的支持或是其它的原因而设 ...

  3. JAVA基础知识总结:一到二十二全部总结

    >一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...

  4. iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)

    iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2) 此时,当用户轻拍按钮后,一个叫tapButton()的方法就会被触发. 注意:以上这一种方式是动作声明和关联一起进行的,还有一种先 ...

  5. 插入DLL和挂接API——Windows核心编程学习手札之二十二

    插入DLL和挂接API --Windows核心编程学习手札之二十二 如下情况,可能要打破进程的界限,访问另一个进程的地址空间: 1)为另一个进程创建的窗口建立子类时: 2)需要调试帮助时,如需要确定另 ...

  6. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  7. (原创)无废话C#设计模式之二十二:总结(针对GOF23)

    无废话C#设计模式之二十二:总结(针对GOF23) 比较 设计模式 常用程度 适用层次 引入时机 结构复杂度 Abstract Factory 比较常用 应用级 设计时 比较复杂 Builder 一般 ...

  8. Android项目实战(二十二):启动另一个APP or 重启本APP

    Android项目实战(二十二):启动另一个APP or 重启本APP 原文:Android项目实战(二十二):启动另一个APP or 重启本APP 一.启动另一个APP 目前公司项目需求,一个主AP ...

  9. Android开发笔记(一百二十二)循环器视图RecyclerView

    RecyclerView RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView.GridView,以及瀑布流 ...

  10. JavaScript学习(二十二)—动态创建表格

    JavaScript学习(二十二)-动态创建表格 效果如下: 代码如下: <!DOCTYPE html> <html lang="en"><head& ...

最新文章

  1. EOS安全漏洞再发,BCH将如何兼顾智能合约效率与安全?
  2. LeetCode Rectangle Area
  3. Flask+nginx负载均衡综合使用
  4. android source镜像源_【转载】Celadon快速上路指南Part2:编译Celadon镜像
  5. 手把手带你搭建Mvp+Dagger架构
  6. SH760二自由度系统自由振动解析法求解
  7. Java操作Mongodb 保存/读取java对象到/从mongodb
  8. 性价比不高却出到8?华为存在感最低的一个系列再发新机
  9. C# 使用Process调用外部程序中所遇到的参数问题
  10. ALinq 让Mysql变得如此简单
  11. imx6 linux调试平台,iMX6Q调试篇-Linux程序开发使用gdb调试
  12. linux中脚本退出函数,PowerShell中使用return语句退出函数例子
  13. 201521123033《Java程序设计》第5周学习总结
  14. 记一次Python爬取某网站公众号二维码的过程
  15. python interpreter是什么_如何写一个Python Interpreter | 学步园
  16. lisp方格网法计算土方量_CASS方格网法如何计算土方量
  17. linux cat和vim区别,cat命令和vim存在着什么区别
  18. oracle 访问日志ip,怎么从访问日志中把ip提取出来
  19. 印度这事真的干的挺棒的! |
  20. ubuntu 安装 navicat

热门文章

  1. 内存小还免费,Adobe Acrobat表示有危机
  2. NOI大纲 CSP初赛篇·知识大纲 CSP-入门级-NOI大纲
  3. 文献信息检索与论文写作书籍(二)
  4. ant-design tree 设置默认选中状态_快速掌握文件夹位置的更改和文件的默认打开方式及重命名的操作...
  5. TCP/IP笔记-ARP协议包结构相关笔记
  6. Redis工作笔记-spring整合jedis
  7. QML笔记-QML基本数据类型的使用
  8. Vmware工作笔记-通过光驱位与虚拟机(Vmware)共享数据【含iso制作】
  9. Qt工作笔记-QML界面与QWidgets界面相互交互
  10. MySQL入门之数据库介绍及MySQL介绍