《汇编语言(第三版)》pushf 和 popf 指令,以及标志寄存器在 Debug 中的表示

pushf 和 popf

pushf 的功能是将标志寄存器的值压栈,而 popf 是从栈中探出数据,输入标志寄存器。

pushf 和 popf,为直接访问寄存器提供了方法。

格式

pushf
popf

这两条指令后面都不加东西,默认的操作对象是:所有的标志寄存器。

标志寄存器在 Debug 中的表示

在寄存器中,标志局存起是按有意义的各个标志位单独表示的。在 Debug 中,我们可以看到:

标志 值为1的标记 值为0的标记
of OV NV
sf NG PL
zf ZR NZ
pf PE PO
cf CY NC
df DN UP

原文地址:https://www.cnblogs.com/zhangjiuding/p/8343703.html

时间: 2024-11-10 15:18:24

《汇编语言(第三版)》pushf 和 popf 指令,以及标志寄存器在 Debug 中的表示的相关文章

《汇编语言第三版(王爽)》 读书笔记

前言 说起自己读汇编,总有人会在问:读汇编有啥意义?读汇编对我的开发工作有帮助吗?...我觉得读汇编是为了让我们更好地有计算机工作原理方面的知识,不仅仅是一味地高屋建瓴.就拿 IDE 和 Linux gcc 来说,我们为什么要试着用 gcc 去编译链接并生成可执行程序,而不是点一下 Run 程序就能跑起来?原因还是在我们想探究程序运行的本质. 而汇编就是一门帮助我们更好地理解程序如何"跑起来"的语言,它最接近机器语言这门计算机唯一能识别的语言,深入数据在内存单元的存储,直接对内存单元进

汇编语言第三版 第二章 寄存器

问题1.8086CPU的地址总线为20bit,而数据总线为16bit--也就是说每次传输的数据为16bit,那么如何使用16bit的数据总线来实现20bit的地址总线的地址传输? 答:8086CPU使用两个16bit的地址合成一个20bit的物理地址. 16bit A: XXXX 16bit B: XXXX 20bit物理地址的合成 A *16 也就是将A(16进制表示的数值),向左移动一位,然后加上B.A * 16  +  B.物理地址 = 段地址 * 16 + 偏移地址 16bit A: X

王爽汇编语言第三版第5章实验4

第(3)小题 下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序.上机调试,跟踪运行结果. assume cs:code code segment mov ax,     cs       ;cs为程序入口的段地址,我们就是要从这里开始复制 mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx,     cx        ;程序刚加载完成时,cx存放的是程序的大小,这里我不确定答案,我试过后看到mov ax,4

王爽《汇编语言第三版》实验10-1代码实现

;编写一个通用的子程序实现这个显示字符串的功能,提供灵活的调用接口,使调用者;可以决定显示的位置,内容,颜色assume cs:code,ss:stack,ds:data data segment        db 'welcome to masm!',0 ;要显示的字符串data ends stack segment        db 128 dup (0)stack ends code segment start: mov dh,23    ;行数        mov dl,10   

汇编语言学习第十一章-标志寄存器

本博文系列参考自<<汇编语言>>第三版,作者:王爽 8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW).除了前面介绍的寄存器.本博文将介绍最后一个寄存器,标志寄存器.不同于之前的寄存器,标志寄存器是按位起作用的.其每一位都有特殊的含义. 8086标志寄存器的结构如下图所示: 标志寄存器的1,3,5,12,13,14,15都没有特殊含义.其0,2,4,6,7,8,9,10,11用作标志位使用. 11.1 ZF标志(zeros flag) 标志寄存器第6位

数据结构与问题求解-Java语言描述(第三版)

数据结构对程序的重要性不言而喻,用java语言来实现常见的一些数据结构,以及在相应数据结构上的操作对学习java的同学来说是必须掌握的. 本系列博文参考<数据结构与问题求解-Java语言描述(第三版)>来实现 在自己学习的过程中,更希望有机会与大家交流. PS :本人是菜鸟,只是用博客的方式激励自己.请轻喷.Fighting!

王爽《汇编语言》第三版 第五章 [BX]和loop指令

5.1 [bx] mov ax,[bx]功能:bx 中存放的数据作为一个偏移地址EA ,段地址SA 默认在ds 中,将SA:EA处的数据送入ax中. 5.2 Loop指令 指令的格式是:loop 标号,CPU 执行loop指令的时候,要进行两步操作: 1.(cx)=(cx)-1: 2.判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行. 通常我们用loop指令来实现循环功能,cx 中存放循环次数. 5.3 在Debug中跟踪用loop指令实现的循环程序 5.4 Debug和汇编编译器

王爽《汇编语言》第三版 第十五章 外中断

引言 CPU 除了有运算能力外,还要有 I/O( Input/Output ,输入/输出)能力. 15.1 接口芯片和端口 在PC系统的接口卡和主板上,装有各种接口芯片.这些外设接口芯片的内部有若干寄存器,CPU将这些寄存器当作端口来访问. 外设的输入不直接送入内存和CPU ,而是送入相关的接口芯片的端口中. CPU向外设的输出也不是直接送入外设,而是先送入端口中,再由相关的芯片送到外设. 15.2 外中断信息 当CPU 检测到可屏蔽中断信息时: 1.如果IF=1,则CPU 在执行完当前指令后响

王爽《汇编语言》第三版 第三章 内存访问

3.1 内存中字的存储 在0地址处开始存放20000(4E20H): 注意:0号单元是低地址单元,1号单元是高地址单元. 任何两个地址连续的内存单元,N号单元和 N+1号单元,可以将它们看成两个内存单元 ,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元. 3.2 DS和[address] 在8086PC中,内存地址由段地址和偏移地址组成,8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址. 执行指令时,8086CPU自动取DS中的数据为内存单元的段地址. 3.3 字