第七章 指 令 系 统;指令系统;一、机器指令的格式;1、操作码;(1)定长编码;;(2)变长编码 ;PDP-11机的指令格式;(3) 扩展操作码技术;2. 地址码;(3) 二地址;二、指令字长;小结;7.2 操作数类型和操作种类;存储器中的数据存放(存储字长为 32 位);三、操作类型;3. 移位操作;80×86cpu的标志寄存器;① 条件码标志 包括以下6位:OF(Over Flow Flag) 溢出标志。(示例) 将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF置1;否则OF置0。对于字节运算有?128≤N≤+127;对于字运算有?32768≤N≤+32767。SF(Sign Flag) 符号标志。(示例) 把指令执行结果看作带符号数,如结果为负,则SF置1;结果为正,则SF置0。ZF(Zero Flag) 零标志。(示例) 如指令执行结果各位全为0时,则ZF置1;否则ZF置0。 ;CF(Carry Flag) 进位标志。 (示例) (与OF的区别) 在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF置1;否则置0。在移位类指令中,CF用来存放移出的代码(0或1)。AF(Auxiliary Carry Flag)辅助进位标志 (与CF的区别) 在进行算术运算时,如低字节中低4位(第3位)产生进位或借位时,则AF置1;否则AF置0。AF可用于十进制运算的校正。PF(Parity Flag) 奇偶标志。 (示例) 用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当运算结果中1的个数为偶数时置1,否则置0。;示例指令1: mov al,98 add al,99 执行后将产生溢出。因为add al,99 进行的有符号数运算是:(al)=(al)+99=98+99=197 而结果197超出了机器所能表示的8位有符号数的范围:-128~127。示例指令2: mov al,0F0H ;0F0H,为有符号数-16的补码 add al,88H ;88H,为有符号数-120的补码 执行后将产生溢出。 因为add al,88H进行的有符号数运算是: (al)=(al)+(-120)=(-16)+(-120)=-136 而结果-136超出了机器所能表示的8位有符号数的范围:-128~127。;计算机中通常用补码来表示有符号数据。所以计算机中的一个数据可以看作是有符号数,也可以看成是无符号数指令示例 mov al add al,1 结果: (al)?将add指令进行的运算当作无符??数的运算,那么add指令相当于计算129+1,结果为130);虽然运算影响了SF的值,但是SF的值则没有意义。;?将add指令进行的运算当作有符号数的运算,那么add指令相当于计算-127+1,结果为-126)。这是结果为负数,则SF=1,所以通过SF来得知结果的正负。总之,SF 标志就是CPU对有符号数运算结果的一种记录 ,它记录数据的正负。;指令示例: mov ax,1 sub ax,1 ? 指令执行后,结果为0,则ZF =1。
mov ax,2 sub ax,1 ? 指令执行后,结果为1,则ZF = 0。;比如,两个8 位数据:98H+98H,将产生进位。mov al,98Hadd al,al ;执行后: (al)=30H,CF=1,add al,al ;执行后:(al)=60H,CF=0, ;CF记录了最高有效位向更高位的进位值
比如,两个 8 位数据:97H-98H,将产生借位,借位后,相当于计算197H-98H。mov al,98Hsub al,al ;执行后: (al)=FFH,CF=1,sub al,al ;执行后: (al)=00H,CF=0, ;CF记录了最高有效位向更高位的借位值;示例指令:mov al,1 add al,10 执行后,结果,其中有3(奇数)个1,则PF=0;指令:mov al,1 or al,10 执行后,结果,其中有2(偶数)个1,则PF=1;;CF是对无符号数运算有意义的标志位; OF是对有符号数运算有意义的标志位。比如: mov al,