x86标志寄存器(PSW)
- 格式:ppt
- 大小:203.50 KB
- 文档页数:17
1. 介绍PSW=8FH的背景和起源PSW=8FH是计算机领域的术语,源自于X86架构的CPU。
在这个术语中,PSW代表程序状态字(Program Status Word),而8FH则代表一个十六进制的数值。
在讨论PSW=8FH的具体含义之前,我们需要先了解PSW在计算机系统中的作用以及8FH的数值所代表的含义。
2. PSW在计算机系统中的作用程序状态字(PSW)是一种用来存储程序状态信息的寄存器,它记录了CPU在执行程序时的各种状态和标志位,帮助CPU进行条件判断,控制程序执行流程。
在X86架构的CPU中,PSW通常包括零标志、进位标志、符号标志、溢出标志等,这些标志位可以影响程序的运行结果。
3. 8FH的含义在十六进制表示中,8FH代表的是一个8位的二进制数值,即xxx。
在计算机系统中,这个数值通常用来表示各种状态信息和标志位。
具体到PSW=8FH,这个数值代表了程序状态字中各种标志位的具体配置,从而影响了程序的执行结果。
4. PSW=8FH的具体含义PSW=8FH代表了一种特定的程序状态字配置,它可能在特定的计算机系统或特定的应用场景中产生特定的效果。
具体来说,PSW=8FH可能代表了特定的条件判断结果、特定的标志位状态,或者特定的程序执行状态。
5. PSW=8FH的使用场景根据X86架构的CPU规范,PSW=8FH可能被用于特定的指令集、特定的系统调用或特定的应用程序中。
在一些特定的条件判断、逻辑运算或算术运算中,PSW=8FH可能会被设置或需要被检查,以实现特定的程序控制流程或逻辑执行。
6. 总结在计算机系统中,PSW=8FH代表了一种特定的程序状态字配置,它通过设置各种标志位的状态来影响程序的执行结果。
在X86架构的CPU中,PSW=8FH可能会在特定的条件判断、逻辑运算或算术运算中发挥作用,帮助程序实现预期的逻辑控制或执行流程。
对于计算机领域的专业人士来说,理解并掌握PSW=8FH的具体含义和使用场景是极为重要的。
PSW(状态字寄存器)
D7 D6 D5 D4 D3 D2 D1 D0
CY:进位标志(如果最高位有进位或者借位,则该位为1,否则为0.)
AC:辅助进位标志,又称半进位标志。
它指两个八位运算第四位是否有进位。
F0:有用户使用的一个状态标志位,可用软件使它置1或清零,也可由软件来测试它以控制程序的流向。
RS1,RS0 :四组工作寄存器区选择控制位,在汇编语言中这两位用来选择四组工作寄存器中的哪一组为当前工作寄存区。
OV:溢出标志位,反应带符号数的运算是否溢出,有溢出为1,否则为0.
P:奇偶标志位,假如运算结果又偶数个1,则P为0,否则P为1.。
psw 是什么
psw 的定义
PSW 即程序状态字(也叫程序状态寄存器)Program Status Word,可用于OS 在管态(系统态)和目态(用户态)之间的转换。
程序状态寄存器PSW 是计算机系统的核心部件运算器的一部分,PSW 用来存放两类信息:一类是体现当前指令执行结果的各种状态信息,称
为状态标志,如有无借位进位(CY 位)、有无溢出(OF 位)、结果正负(SF 位)、结果是否为零(ZF 位)、奇偶标志位(PF 位)等;另一类是存放控制
信息,称为控制状态,如允许中断(IF 位),跟踪标志(TF 位),方向标志(DF)等。
有些机器中将PSW 称为标志寄存器FR(Flag Register)。
在8086/8088CPU 中,PSW 是一个16 位寄存器,用于寄存单签指令执行后的某些状态,即反映指令执行结果的一些特征信息。
在debug 程序
中,可以使用R 命令来查看PSW 的值,除了TF 没有显示之外,其它8 个标志的值显示方式如下:。
80X86 汇编指令符号大全+、-、*、/∶算术运算符。
&∶宏处理操作符。
宏扩展时不识别符号和字符串中的形式参数,如果在形式参数前面加上一个& 记号,宏汇编程序就能够用实在参数代替这个形式参数了。
$∶地址计数器的值——记录正在被汇编程序翻译的语句地址。
每个段均分配一个计数器,段内定义的所有标号和变量的偏移地址就是当前汇编地址计数器的值。
?∶操作数。
在数据定义语句中,操作数用?,其作用是分配并保留存储空间,但不存入确定的数据。
=∶等号伪指令——符号定义。
对符号进行定义和赋值,功能与EQU相似,但允许(重复)再定义。
:∶修改属性运算符(操作符)——段操作符。
用来临时给变量、标号或地址表达式指定一个段属性(不用缺省的段寄存器),自动生成一个“跨段前缀字节”。
注意,段寄存器CS和ES 不能被跨越,堆栈操作时也不能跨越SS。
;∶注释符号。
%∶特殊宏操作符,用来将其后的表达式(通常是符号常数,不能是变量名和寄存器名)转换成它所代表的数值,并将此数值的ASCII码嵌入到宏扩展中。
( )∶1.运算符——用来改变运算符的优先级别。
2.教材符号,表示括号内存储单元(或寄存器)的内容。
< >∶宏调用时用来将带间隔符(如空格,逗号等)的字符串(作为实参)括起来。
[ ]∶1.运算符。
方括号括起来的数是数组变量的下标或地址表达式。
带方括号的地址表达式必须遵循下列原则,①只有BX、BP、SI、DI这四个寄存器可在方括号内出现;②BX或BP 可单独出现在各方括号中,也可以与常数、SI或DI一起出现在方括号内,但不允许BX和BP出现在同一个方括号内;③SI和DI可以单独出现在各方括号内,也可以与常数、BP或BX一起出现在方括号内,但不允许SI和DI出现在同一个方括号内;④一个方括号内包含多个寄存器时,它们只能作加法运算;⑤若方括号内包含基址指针BP,则隐含使用堆栈段寄存器SS提供段基址,否则均隐含使用数据段寄存器DS提供段基址。
第4章Intel80X86系列微处理器习题解答4.1 8086/8088内部寄存器有哪些?哪些属于通用寄存器?哪些用于存放段地址?标志寄存器的含义是什么?答:8086/8088内部有14个16位的寄存器。
8个通用寄存器AX、BX、CX、DX、SP、BP、SI、DI。
4个16位的段寄存器CS、DS、SS、ES,用于存放段地址。
标志寄存器FLAGS用于存放指令执行结果的特征和CPU 工作方式,其内容通常称为处理器状态字PSW。
4.2 对于8086/8088CPU,确定以下运算的结果与标志位。
(1)5439H+456AH (2)2345H+5219H (3)54E3H-27A0H(4)3881H+3597H (5)5432H-6543H (6)9876H+1234H略。
4.3 8086/8088为什么要对存储器采用分段管理?一个段最多包含多少存储单元?答:8086/8088内部与地址有关的寄存器都是16位的,只能处理16位地址,对内存的直接寻址范围最大只能达64KB。
为了实现对1MB单元的寻址,8086/8088系统采用了存储器分段技术。
一个段最多包含64K 个存储单元。
4.4 8086/8088CPU内部共有多少个段?分别称为什么段?段地址存放在哪些寄存器中?答:8086/8088 CPU内部共有4个段。
分别称为代码段、数据段、堆栈段和附加段。
段地址存放在4个16位的段寄存器,CS代码段寄存器、DS数据段寄存器、SS堆栈段寄存器、ES附加段寄存器中。
4.5 简述物理地址、逻辑地址、段基地址和偏移量的含义及其相互关系。
答:物理地址:信息在存储器中实际存放的地址,它是CPU访问存储器时实际输出的地址。
逻辑地址:编程时所使用的地址,由段基地址和偏移量两部分构成。
段基地址(段地址或段基址):段的起始地址的高16位。
偏移量(偏移地址):所访问的存储单元距段的起始地址之间的字节距离。
给定段基地址和偏移量,就可以在存储器中寻址所访问的存储单元。
汇编语⾔复习题(2)汇编语⾔复习题第2章8086CPU寄存器的结构及使⽤1.8086CPU由指令执⾏部件EU和总线接⼝部件BIU两部分组成。
其中EU的功能是控制和执⾏指令,主要由算术逻辑部件ALU、EU控制部件、8个16位寄存器和⼀个标志寄存器FLAGS组成。
BIU的功能是从存储器预取指令和数据,以及所有EU需要的总线操作,实现CPU与存储器和外设间信息传递。
BIU由指令队列、指令指针寄存器、段寄存器、地址加器组成。
2.Intel8086CPU共有14个16位寄存器,它们分别是通⽤寄存器8个即AX、BX、CX、DX、SP、BP、SI、DI,其中能⽤作寄存器间接寻址的寄存有BX、BP、SI和DI,控制寄存器2个即IP、PSW,段寄存器4个即DS、SS、CS和ES它们的含义分别是:其中在编程过程中程序的段基值由汇编程序装⼊的段寄存器是SS和CS,由编程者⽤汇编指令将段基值装⼊的段寄存器是DS 和ES,其具体指令是MOV AX,数据段段/附加数据段名,MOV DS/ES,AX,编程⼈员不能⽤指令去取其值或给其设置给定值的寄存器是IP,但是可以通过某些指令的执⾏⽽⾃动修改其内容,如JMP NEXT指令的功能是将⽬的地址的偏移量送⼊IP。
3.PSW是程序状态字寄存器⼜称为标志寄存器,⽤来反映微处理器在程序运⾏时的某些状态,其中的6个状态标志位分别是OF、SF、ZF、AF、PF和CF,反映了刚执⾏完算术或逻辑运算指令后的某些特征。
三个控制标志位是DF即⽅向标志、IF即中断标志位和TF陷阱标志。
如两个8位的⼆进制数相加其状态标志位中各标志的值是多少?10110101+10011011。
4.8086CPU数据总线16根地址总线是20根能访问的最⼤存储空间是1MB。
第3章存储器的分段1.在8086CPU中存储器的编址原则是按字节编址即每⼀个字节单元是⼀个存储器地址,在源程序中⽤常⽤⼗六进制数或符号来表⽰⼀个存储单元的地址。
8086标志寄存器CPU内部的寄存器中,有⼀种特殊的寄存器(对于不同的机器,个数和结构都有可能不同)具有以下三个功能:⽤来存储某些相关指令的执⾏结果⽤来为CPU执⾏相关的指令提供⾏为依据⽤来控制CPU的相关⼯作⽅式这种特殊的寄存器在8086CPU中称为标志寄存器。
8086的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。
标志寄存器与其他寄存器不⼀样,其他寄存器是⽤来放数据的,都是整个寄存器具有⼀个含义,⽽标志寄存器是按位起作⽤的。
8086中的标志寄存器的结构如下图所⽰:其中1、3、4、12、13、14、15位在8086中没有使⽤。
另外对于有确切含义的每⼀位,我们称为标志位ZF标志标志寄存器的第六位是ZF,零标志位。
他是记录相关指令执⾏后,其结果是否位零。
如果为零,那么zf=1,如果不为零,那么zf=0⽐如指令:mov ax, 1sub ax, 1执⾏后,ax的结果为0,所以zf=1再⽐如:mov ax, 2sub ax, 1执⾏后,ax的结果不为0,所以zf=0在这⾥,有⼀点需要注意:在8086的指令集中,有的指令的执⾏是影响标志位的,⽐如add、sub、mul、div、inc、or、and等,它们⼤都是运算指令(进⾏逻辑或算数运算);有的指令的执⾏对标志寄存器没有影响,⽐如mov、push、pop等,它们⼤都是传送指令。
PF标志标志寄存器的第⼆位是PF,奇偶标志位。
它记录相关指令执⾏后,其结果的所有bit位中1的个数是否位偶数。
如果是偶数,pf=1,如果位奇数,pf=0⽐如指令:mov al, 1add al, 10执⾏后,al为00001011B,其中有3个1,所以pf=0再⽐如:mov al, 1or al, 2执⾏后结果为00000011B,其中有2个1,所以pf=1SF标志标志寄存器的第七位是SF,符号标志位。
它记录相关指令执⾏后,其结果是否为负。
如果为负,sf=1,如果⾮负,sf=0这⾥要明确⼀点,在计算机中,通常⽤补码来表⽰有符号的数据,计算机中的⼀个数据既可以看作有符号数,也可以看作⽆符号数。
李伯成《微机原理》习题第一章本章作业参考书目:①薛钧义主编《微型计算机原理与应用——Intel 80X86系列》机械工业出版社2002年2月第一版②陆一倩编《微型计算机原理及其应用(十六位微型机)》哈尔滨工业大学出版社1994年8月第四版③王永山等编《微型计算机原理与应用》西安电子科技大学出版社2000年9月1.1将下列二进制数转换成十进制数:X=10010110B=1*27+0*26+0*25+1*24+0*23+1*22+1*21 +0*21=128D+0D+0D+16D+0D+0D+4D+2D=150DX=101101100B=1*28+0*27+1*26+1*25+0*24+1*23+1*22+0*21+0*20=256D+0D+64D+32D+0D+16D+4D+0D=364DX=1101101B=1*26+1*25+0*24+1*23+1*22+0*21 +1*20=64D+32D+0D+8D+4D+0D+1D=109D1.2 将下列二进制小数转换成十进制数:(1)X=0.00111B=0*2-1+0*2-2+1*2-3+1*2-4+1*2-5=0D+0D+0.125D+0.0625D+0.03125D=0.21875D(2) X=0.11011B=1*2-1+1*2-2+0*2-3+1*2-4+1*2-5=0.5D+0.25D+0D+0.0625D+0.03125D=0.84375D(3) X=0.101101B=1*2-1+0*2-2+1*2-3+1*2-4+0*2-5+1*2-6=0.5D+0D+0.125D+0.0625D+0D+0.015625D=0.703125D1.3 将下列十进制整数转换成二进制数:(1)X=254D=11111110B(2)X=1039D=10000001111B(3)X=141D=10001101B1.4 将下列十进制小数转换成二进制数:(1)X=0.75D=0.11B(2) X=0.102 D=0.0001101B(3) X=0.6667D=0.101010101B1.5 将下列十进制数转换成二进制数(1) 100.25D= 0110 0100.01H(2) 680.75D= 0010 1010 1000.11B1.6 将下列二进制数转换成十进制数(1) X=1001101.1011B =77.6875D(2) X=111010.00101B= 58.15625D1.7 将下列二进制数转换成八进制数(1)X=101011101B=101’011’101B=535Q(2) X=1101111010010B=1’101’111’010’010B=15722Q(3) X=110B=6Q1.8 将下列八进制数转换成二进制数:(1)X=760Q=111'110'000B(2)X=32415Q=11'010'100'001'101B1.9 将下列二进制数转换成十六进制数:X=101 0101 1110 1101B= 5 5 E D HX= 1100110101'1001B= 11 0011 0101 1001B= 3 3 5 9HX= 1000110001B= 10 0011 0001 B= 2 3 1 H1.10 将下列十六进制数转换成二进制数:X= ABCH= 1010 1011 1100 BX=3A6F.FFH = 0011 1010 0110 1111.1111 1111BX= F1C3.4B =1111 0001 1100 0011 . 0100 1011B1.11 将下列二进制数转换成BCD码:(1) X= 1011011.101B= 1'011'011.101B= 91.625d=1001 0001.0110BCD(2) X=1010110.001B= 1’010’110.001 =126.1 BCD1.12 将下列十进制数转换成BCD码:(1)X=1024D=0001 0000 0010 0100 BCD(2)X=632 = 0110 0011 0010 BCD(3)X= 103 = 0001 0000 0011 BCD1.13 写出下列字符的ASCI I码:A 41H 65D 0100 0001B9 39H 47D* 2AH 42D= 3DH 45D!21H 33D1.14 若加上偶校验码,下列字符的ASCII码是什么?字符原码加上偶校验码之后B 42H,0100 0010B 42H,0100 0010B4 34H,0011 0100B B4H,1011 0100B7 37H,0011 0111B B7H,1011 0111B= 3DH,0011 1101B BDH,1011 1101B!21H,0010 0001B 21H,0010 0001B?3FH 0011 1111B 3FH,0011 1111B1.15 加上奇校验,上面的结果如何?字符原码加上奇校验码之后B 42H,0100 0010B C2H,1100 0010B4 34H,0011 0100B 34H,0011 0100B7 37H,0011 0111B 37H,0011 0111B= 3DH,0011 1101B 3DH,0011 1101B!21H,0010 0001B A1H,1010 0001B?3FH 0011 1111B BFH,1011 1111B1.16 计算下式:(1)[‘B’/2+ABH-11011001B]*0.0101BCD=(42H/2+ABH-D9H)*0.21 BCD = = F3H*0.21 BCD =(-DH) *0.21 BCD= -2.73D(2) 3CH –[(84D)/(16Q)+’8’/8D]= 60D-[84D/14D+(56/8)]=60D-[13]D==47D1.17 对下列十进制数,用八位二进制数写出其原码、反码和补码:(正数的反码与原码相同,负数的反码除符号位之外其余各位按位取反。
P0 = 0x80;P1 = 0x90;P2 = 0xA0;P3 = 0xB0;PSW = 0xD0;PSW寄存器,全称——程序状态字标志寄存器,是一个8位寄存器。
该寄存器用来存放运算结果的一些特征,如有无进位、借位等。
使用汇编编程是PSW寄存器很有用,但在C语言编程时,编译器会自动控制该寄存器,很少人为操作,仅作了解即可。
D7 D6 D5 D4 D3 D2 D1 D0CY AC F0 RS1 RS0 OV —— P①CY——进位标志位,他表示运算是否有进位(或借位)。
如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0.②AC——辅助进位标志,又称半进位标志,它指两个8位数运算低四位是否有半进位,即低四位相加(或相减)是否进位(或借位),如有AC为1,否则为0.③F0——由用户使用的一个状态标志位,可用软件来使它置1或清0,也可由软件来测试它,以控制程序的流向。
④RS1、RS0——四组工作寄存器选择控制位,在汇编语言中这两位用来选择4组工作寄存器区中的哪一组为当前工作寄存区。
⑤OV——溢出标志位,反应带符号数的运算结果是否有溢出。
有溢出时,此位为1,否则为0.⑥P——奇偶标志位,反应累加器ACC内容的奇偶性,如果ACC内中的运算结果有偶数个1,则P为0,否则为1.ACC = 0xE0;B = 0xF0;SP = 0x81;DPL = 0x82;DPH = 0x83;PCON = 0x87;电源管理寄存器,不能位寻址。
PCON用来管理单片机的电源部分,包括上电复位检测、掉电模式、空闲模式等。
单片机复位时PCON全部被清0.为序号D7 D6 D5 D4 D3 D2 D1 D0位符号SMOD SMOD0 LVDF P0F GF1 GF0 PD IDL①SMOD——该位与串口通信波特率有关。
SMOD=0:串口方式为1、2、3时,波特率正常。
SMOD=1:串口方式为1、2、3时,波特率加倍。