二十二、标志寄存器与栈(代码设计安全,与子程序寄存器安全类似)
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
二十二、标志寄存器与栈(代码设计安全,与子程序寄存器安全类似)相关推荐
- 【C语言】二十二步了解函数栈帧(压栈、传参、返回、弹栈)
阅读本文需要掌握的知识 熟练使用--c语言函数 进入正题前 首先我们为什么要学习函数的栈帧? 简单回答就是:增加内功 学习函数调用的底层代码,了解函数如何传参.如何返回 这样对于函数的使用有很大的帮助 ...
- 实现会员管理的会员政策优惠设置功能的代码(二十二)
实现会员管理的会员政策优惠设置功能的代码(二十二) 3.5.3会员政策优惠设置 3.5.3.1会员政策优惠设置主界面 会员政策优惠设置是针对会员来讲的,可能是医院为了感谢会员们的支持或是其它的原因而设 ...
- JAVA基础知识总结:一到二十二全部总结
>一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...
- iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)
iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2) 此时,当用户轻拍按钮后,一个叫tapButton()的方法就会被触发. 注意:以上这一种方式是动作声明和关联一起进行的,还有一种先 ...
- 插入DLL和挂接API——Windows核心编程学习手札之二十二
插入DLL和挂接API --Windows核心编程学习手札之二十二 如下情况,可能要打破进程的界限,访问另一个进程的地址空间: 1)为另一个进程创建的窗口建立子类时: 2)需要调试帮助时,如需要确定另 ...
- OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十
OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...
- (原创)无废话C#设计模式之二十二:总结(针对GOF23)
无废话C#设计模式之二十二:总结(针对GOF23) 比较 设计模式 常用程度 适用层次 引入时机 结构复杂度 Abstract Factory 比较常用 应用级 设计时 比较复杂 Builder 一般 ...
- Android项目实战(二十二):启动另一个APP or 重启本APP
Android项目实战(二十二):启动另一个APP or 重启本APP 原文:Android项目实战(二十二):启动另一个APP or 重启本APP 一.启动另一个APP 目前公司项目需求,一个主AP ...
- Android开发笔记(一百二十二)循环器视图RecyclerView
RecyclerView RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView.GridView,以及瀑布流 ...
- JavaScript学习(二十二)—动态创建表格
JavaScript学习(二十二)-动态创建表格 效果如下: 代码如下: <!DOCTYPE html> <html lang="en"><head& ...
最新文章
- EOS安全漏洞再发,BCH将如何兼顾智能合约效率与安全?
- LeetCode Rectangle Area
- Flask+nginx负载均衡综合使用
- android source镜像源_【转载】Celadon快速上路指南Part2:编译Celadon镜像
- 手把手带你搭建Mvp+Dagger架构
- SH760二自由度系统自由振动解析法求解
- Java操作Mongodb 保存/读取java对象到/从mongodb
- 性价比不高却出到8?华为存在感最低的一个系列再发新机
- C# 使用Process调用外部程序中所遇到的参数问题
- ALinq 让Mysql变得如此简单
- imx6 linux调试平台,iMX6Q调试篇-Linux程序开发使用gdb调试
- linux中脚本退出函数,PowerShell中使用return语句退出函数例子
- 201521123033《Java程序设计》第5周学习总结
- 记一次Python爬取某网站公众号二维码的过程
- python interpreter是什么_如何写一个Python Interpreter | 学步园
- lisp方格网法计算土方量_CASS方格网法如何计算土方量
- linux cat和vim区别,cat命令和vim存在着什么区别
- oracle 访问日志ip,怎么从访问日志中把ip提取出来
- 印度这事真的干的挺棒的! |
- ubuntu 安装 navicat
热门文章
- 内存小还免费,Adobe Acrobat表示有危机
- NOI大纲 CSP初赛篇·知识大纲 CSP-入门级-NOI大纲
- 文献信息检索与论文写作书籍(二)
- ant-design tree 设置默认选中状态_快速掌握文件夹位置的更改和文件的默认打开方式及重命名的操作...
- TCP/IP笔记-ARP协议包结构相关笔记
- Redis工作笔记-spring整合jedis
- QML笔记-QML基本数据类型的使用
- Vmware工作笔记-通过光驱位与虚拟机(Vmware)共享数据【含iso制作】
- Qt工作笔记-QML界面与QWidgets界面相互交互
- MySQL入门之数据库介绍及MySQL介绍