在汇编中,怎样根据一个16进制数来判断SF,OF等的标志位?

来源:百度知道 编辑:UC知道 时间:2024/06/30 03:20:41
类如有这样一个题:
已知程序段如下:
MOV AX,1234H
MOV CL,4
ROL AX,CL
DEC AX
MOV CX,4
MUL CX
INT 20H
问每条指令执行完后,进位、符号和零标志位的值是什么?
我知道通过加减法怎样确定这些标志位,但是这道题不是我懂的那种类型,希望哪位大侠可以给我解答一下,真是非常感谢~~~

以下是每行程序执行后,三个标志位的值
R表示保持原值,X表示不定值

C S Z
R 0 0
R 0 0
R 0 0
R 0 0
R 0 0
0 X X

乘法指令是由一系列的移位累加动作完成的,所以执行后很难确定除了CF和OF以外的标志位,故此运行后是不定态。

标志位的判断不是依据数值,而是依据于指令。有些指令是不影响标专位的。如MOV等,有些数据的运算会影响如sub等,这些指令是否会影响标志位,你可以查询指令集,每条指令后都对标志位的影响与否给了简单的说明。

只要你分清什么是影响标志位,什么是不影响,什么是无定义,三种对标志位的说明就可以了!

但对于标志位的使用,一般还是对影响的指令后使用,对于无定义和不影响标志位的没有多大的深究。只不过你可保证,在根据某条指令对标志位的影响后使用时,不能再有指令对标志位无定义或是影响了标志位而出现错误。

所以对比指令对标志位的影响,可以查看每条指令执行后标志位的结果。