1.写出下面每条指令执行后,ZF、PF、SF等标志位的值。
答:
sub al,al ZF=1 PF=1 SF=0
mov al,1 ZF=1 PF=1 SF=0
push ax ZF=1PF=1SF=0
pop bx ZF=1PF=1SF=0
add al,bl ZF=0PF=0SF=0
add al,10 ZF=0PF=1SF=1
mul al ZF=0PF=1SF=0
2.写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。
CF OF SF ZF PF
sub al,al
mov al,10h
add al,90h
mov al,80h
add al,80h
mov al,0fch
add al,05h
mov al,7dh
add al,0bh
答:
sub al,al
CF OF SF ZF PF
0 0 0 1 1
mov al,10H ; MOV 指令不影响 Flag
CF OF SF ZF PF
0 0 0 1 1
add al,90H ; 作无符号数,A0H无进位,当作有符号数,16+(-112),在-128~127,无溢出
CF OF SF ZF PF
0 0 1 0 1
mov al,80H ; MOV 指令不影响 Flag
CF OF SF ZF PF
0 0 1 0 1
add al,80H ;作无符号数,100H,进位,作有符号数,(-128)+(-128),不在-128~127,溢出
CF OF SF ZF PF
1 1 0 1 1
mov al,0FCH ; MOV 指令不影响 Flag
CF OF SF ZF PF
1 1 0 1 1
add al,05H ; 无符号,有进位,有符号,(-4)+5=1,在-128~127,无溢出
CF OF SF ZF PF
1 0 0 0 0
mov al,7DH ; MOV 指令不影响 Flag
CF OF SF ZF PF
1 0 0 0 0
add al,0BH ; 无符号数,无进位,有符号数 125+12=137,不在-128~127,溢出
CF OF SF ZF PF
0 1 1 0 1
3.请说说标志CF和标志OF的差异。
答: 如果把指令中处理的数据按照无符号数看待,则处理结果达到进位是,置CF为1;
如果把该处理中的数据按照有符号数看待,则处理结果超过有符号数表达范围的,
置OF为1;两个标志同步进行,CPU并不知道该数的类型;
4.8086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志的状态?
答: 8086/8088标志寄存器中定义了9个标志,如下:
CF: Carry Flag
ZF: Zero Flag
SF: Sign Flag
OF: Overflow Flag
PF: Parity Flag
AF: Auxiliary Carry Flag
DF: Direction Flag
IF: Interrupt-enable Flag
TF: Trap Flag
这些标志可分为两类,分别为:
1、运算结果标志;
2、状态控制标志;
采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF;
采用CLC可清除CF,置CF到0
采用STC可置CF到1
采用CLD可置DF到0
采用STD可置DF到1
采用CLI可置IF到0
采用STI可置IF到1
另外,在某些指令执行过程中会改变部分标志的状态;
5.请写出如下程序片段中每条算术运算指令执行后标志CF、ZF、SF、OF、PF、AF的状态。
mov al,89h
add al,al
add al,9dh
cmp al,0bch
sub al,al
dec al
inc al
自己动手网上查资料,或者利用debug工具得出结果;
答: INSTRUCTION CF ZF SF OF PF AF
MOV AL,89H 0 0 0 0 0 0
ADD AL,AL 1 0 0 1 1 1
ADD AL,9DH 0 0 1 0 1 0
CMP AL,0BCH 1 0 1 0 1 0
SUB AL,AL 0 1 0 0 1 0
DEC AL 0 0 1 0 1 1
INC AL 0 1 0 0 1 1
6.请写出如下程序片段中每条逻辑运算指令执行后标志ZF、SF、PF的状态:
mov al,45h
and al,0fh
or al,0c3h
xor al,al
答: INSTRUCTION ZF SF PF
MOV AL,45H 0 0 0
AND AL,0FH 0 0 1
OR AL,0C3H 0 1 0
XOR AL,AL 1 0 1
7.请写出如下程序片段中每条移位指令执行后标志CF、ZF、SF、PF的状态
mov al,84h
sar al,1
shr al,1
ror al,1
rcl al,1
shl al,1
rol al,1
答: INSTRUCTION CF ZF SF PF
MOV AL,84H 0 0 0 0
SAR AL,1 0 0 1 0
SHR AL,1 0 0 0 0
ROR AL,1 1 0 0 0 (该命令不影响SF位)
RCL AL,1 1 0 0 0
SHL AL,1 0 0 1 0
ROL AL,1 1 0 1 0