美文网首页
【汇编语言】第 11 章 标志寄存器

【汇编语言】第 11 章 标志寄存器

作者: gfson | 来源:发表于2017-07-13 11:39 被阅读0次

    版权声明:本文为 gfson 原创文章,转载请注明出处。
    注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢。

    11.1 概述

    11.2 标志介绍

    • ZF 标志
    • ZF 是零标志位。
    • 它记录相关指令执行以后,其结果是否为 0。
    • 如果结果为 0,则 ZF = 1,如果结果不为 0,则 ZF = 0。
    • PF 标志
    • PF 是奇偶标志位。
    • 它记录相关指令执行以后,其结果的所有 bit 位中 1 的个数是否为偶数。
    • 如果 1 的个数为偶数,PF = 1,如果为奇数,那么 PF = 0。
    • SF 标志
    • SF 是符号标志位。
    • 它记录相关指令执行以后,其结果是否为负。
    • 如果结果为负,SF = 1,如果非负,那么 SF = 0。
    • CF 标志
    • CF 是进位标志位。
    • 在进行无符号运算时,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。
    • 如果无符号运算产生了进位或借位,则 CF =1,反之,则 CF = 0。
    • OF 标志
    • OF 是溢出标志位。
    • 在进行有符号运算时,它记录了运算结果是否发生了溢出。
    • 如果有符号运算发生了溢出,则 OF =1,反之,则 OF = 0。
    • CF 和 OF 的区别:
    • CF 是对无符号运算有意义的标志位。
    • OF 是对有符号运算有意义的标志位。
    • CF 和 OF 所表示的进位和溢出,是分别对无符号运算和有符号运算而言的,它们之间没有任何关系。

    11.3 检测点 11.1 - 11.2

    • 答案:
    • 答案:

    11.4 adc 指令

    add 和 adc 的配合,完成对较大数据的加法

    11.5 sbb 指令

    11.6 cmp 指令

    11.7 检测比较结果的条件转移指令

    11.8 检测点 11.3

    • 答案:

    (1)

    • jb s0
    • ja s0

    (2)

    • jna s0
    • jnb s0

    11.9 DF 标志和串传送指令

    • DF 标志
    • DF 是方向标志位。
    • 在串传送指令中,控制每次操作后 si、di 的增减。
    • DF = 0,每次操作后 si、di 递增。
    • DF = 1,每次操作后 si、di 递减。
    • 串传送指令
    • movsb
      • movsb 的功能是将 ds:si 指向的内存单元中的字节送入 es:di 中,然后根据标志寄存器 DF 的值,将 si 和 di 递增或递减。
    • movsw
      • movsw 的功能是将 ds:si 指向的内存单元中的送入 es:di 中,然后根据标志寄存器 DF 的值,将 si 和 di 递增或递减。
    • rep 指令

      • rep 的作用是根据 cx 的值,重复执行后面的串传送指令。
      • 如:rep movsbrep movsw
    • cld 和 std 指令

      • cld 指令:将标志寄存器的 DF 位置 0。
      • std 指令:将标志寄存器的 DF 位置 1。
    • pushf 和 popf 指令

      • pushf:将标志寄存器的值压栈。
      • popf:从栈中弹出数据,送入标志寄存器。

    11.10 检测点 11.4

    • 答案:(ax)=45H

    11.11 标志寄存器在 debug 中表示

    11.12 实验 11

    • 答案:
    assume cs:code
    stack segment
    dw 8 dup (0)
    stack ends
    data segment
    db "Beginner's All-purpose Symbolic Instruction Code.", 0
    data ends
    code segment
    begin:  mov ax, stack
    mov ss, ax
    mov sp, 16
    mov ax, data
    mov ds, ax
    mov si, 0
    call letterc
    mov ax, 4c00h
    int 21h
    letterc:
    push cx
    push si
    pushf
    mov ch, 0
    start:  mov cl, ds:[si]
    jcxz zero
    cmp cl, 97
    jb next
    cmp cl, 122
    ja next
    sub cl, 20h
    mov ds:[si], cl
    next:   inc si
    jmp start
    zero:   popf
    pop si
    pop cx
    ret
    code ends
    end begin
    

    相关文章

      网友评论

          本文标题:【汇编语言】第 11 章 标志寄存器

          本文链接:https://www.haomeiwen.com/subject/cwqwhxtx.html