11.1
写出下面每条指令执行后,ZF、PF、SF等标志位的值。
注意:传送指令不影响标志位!
看了一下,al初始值是0,所以:
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
11.2
这里容易混淆,给出解析。写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。
CF OF SF ZF PF
sub al,al 0 0 0 1 1
mov al,10H 0 0 0 1 1
add al,90H 0 0 1 0 1
mov al,80H 0 0 1 0 1
add al,80H 1 1 0 1 1
mov al,OFCH 1 1 0 1 1
add al,05H 1 0 0 0 0
mov al,7DH 1 0 0 0 0
add al,0BH 0 1 1 0 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
11.3
(1)
jnb s0
jna s0
(2)
jb s0
ja s0
实验11
assume cs:codesg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
begin:
mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:
pushf
push si
s:
mov cl,ds:[si]
jcxz next
cmp byte ptr ds:[si],61h
jb next
cmp byte ptr ds:[si],90h
ja next
and byte ptr ds:[si],11011111b
next:
inc si
jmp short s
ensi
pop cx
pop si
popf
ret
codesg ends
end begin