💿
汇编语言 - 王爽
  • 本电子书信息
  • 各章检测点答案
    • 第 1 章:基础知识
    • 第 2 章:寄存器
    • 第 3 章:寄存器(内存访问)
    • 第 4 章:第一个程序
    • 第 5 章:[BX]和 loop 指令
    • 第 6 章:包含多个段的程序
    • 第 7 章:更灵活的定位内存地址的方法
    • 第 8 章:数据处理的两个基本问题
    • 第 9 章:转移指令的原理
    • 第 10 章:CALL 和 RET 指令
    • 第 11 章:标志寄存器
    • 第 12 章:内中断
    • 第 13 章:int 指令
    • 第 14 章:端口
    • 第 15 章:外中断
    • 第 16 章:直接定址表
    • 第 17 章:使用 BIOS 进行键盘输入和磁盘读写
Powered by GitBook
On this page
  • 检测点 11.1
  • 检测点 11.2
  • 检测点 11.3
  • 检测点 11.4
  • 参考链接
  1. 各章检测点答案

第 11 章:标志寄存器

检测点 11.1

写出下面每条指令执行后,ZF、PF、SF 等标志位的值。

指令

ax

bx

ZF

PF

SF

sub al,al

0000

1

1

0

mov al,1

0001

-

-

-

push ax

(0001)

-

-

-

pop bx

0001

-

-

add al,bl

0002

0

0

-

add al,10

0012

-

1

-

mul al

0144

-

-

-

检测点 11.2

指令

ax

CF

OF

SF

ZF

PF

sub al,al

0000

0

0

0

1

1

mov al,10H

0010

-

-

-

-

-

add al,90H

00a0

-

-

1

0

-

mov al,80H

0080

-

-

-

-

-

add al,80H

0000

1

1

0

1

-

mov al,0FCH

00fc

-

-

-

-

-

add al,05H

0001

1

0

-

0

-

mov al,7DH

007d

-

-

-

-

-

add al,0BH

0088

0

1

1

-

1

  • CF:直接对十六进制(无符号数)的操作数进行运算,得出结果,如果有进位或借位,CF=1

  • OF:将操作数转换成十进制数(有符号数),然后运算,得出十进制结果,看是否在寄存器取值范围内,如果超出:OF=1;

  • SF:执行指令后的结果,最高位是1,SF就是1(负数);最高位是0,SF就是0(正数);

  • PF:数 1 的个数。或将二进制的所有1相加,得出的十进制结果是偶数,PF=1,否则 PF=0.

检测点 11.3

(1)补全下面的程序,统计 F000:0 处 32 个宇节中 , 大小在 [32,128] 的数据的个数 。

mov ax,0f000h
mov ds,ax
mov bx,0
mov dx,0
mov cx,32
s:  mov al,[bx]
    cmp al,32
    jb s0      ; al < 32 
    cmp al,128
    ja s0      ; al > 128 
    inc dx
s0: inc bx
    loop s

(2)补全下面的程序,统计 F000:0 处 32 个宇节中 , 大小在 (32,128) 的数据的个数 。

mov ax,0f000h
mov ds,ax
mov bx,0
mov dx,0
mov cx,32
s:  mov al,[bx]
    cmp al,32
    jna s0       ; al <= 32
    cmp al,128
    jnb s0       ; al >= 128
    inc dx
s0: inc bx
    loop s

检测点 11.4

下面的程序执行后: (ax)=?

mov ax,0
push ax
popf           ; 将所有标志寄存器置零,因为它们和 ax 使用同一个栈
mov ax,0fff0h
add ax, 0010h   ; ax=(1)0000h
                ; CF=1(有符号)  OF=0(无符号) PF=1
pushf
pop ax           ; ax = 0000 0xxx 010x 00x0 0101 B
and al,11000101B ; al = 0100 0101 B = 45H
and ah,00001000B ; ah = 0000 0000 B = 00H

ax = 0045H

参考链接

  • 汇编语言(王爽第三版)检测点11 - 筑基2017 - 博客园

Previous第 10 章:CALL 和 RET 指令Next第 12 章:内中断

Last updated 4 years ago

https://www.cnblogs.com/Base-Of-Practice/articles/6883947.html