你的理解有点错误,要注意把CPSR和指令编码格式区分开:
CPSR,是用来记录程序运行过程中的程序状态,你说的[31:28]=NZCV指的是CPSR中的位定义,表示程序运行中是否产生负值、零、进位和溢出等结果,如若产生,则会自动将CPSR中对应位置位;
但是ARM的指令
31~28 27~25 24~21 20 19~16 15~12 11~0
cond opcode S Rn Rd op2
注意,也就是说ARM指令的31~28和CPSR的31~28没有啥关系的,但是这个指令执行的时候想要加入条件,比如EQ、NE、CS等,这些条件分别对应的cond码是0000,0001,0010,你图中的数据就是对应这些码。而这些条件的成立与否又是与ZCNV这几个CPSR中的位直接相关的,因此可以说CPSR中的Z置位时,即NZCV=0100时,cond为"0000"的指令便可以执行,若C置位,即NZCV=0010时,cond为"0010"的指令便可以执行。