奥普瓯江 发表于 2019-4-12 17:19:12

检测点 17.1

在int 16h中断例程中,一定有设置 IF = 1 的命令。这种说法对吗?

答:这种说法是错误的,应该不需要因为int 16会把标志寄存器、段地址、偏移地址入栈,当他们出站时标志寄存器会被从新还原所以这里面应该不需要将IF = 1


他的执行顺序是:
int 16h
                push ds
                push bx
                mov bx, 0040h
                mov ds, bx
                cmp ah, 10h
                call 07b9h
                push ds
                push ax
                mov ax, 0040h
                mov ds, ax
                lahf
                test word ptr , 2400h
                jnz 07d5
                cli
                jmp 07d0h
                sahf
                pop ax
                pop ds
                jmp 07d8
                ret
                jb 09d6
                or ah, ah
                jz 0a18h
                mov bx,
                cmp bx,
                jnz 0a35
                call 0bc8
                push bx
                push cx
                push ax
                lahf
                push ax
                mov al,
                and al, 70
                mov cl, 04
                shr al, cl
                and al, 07
                mov bl,
                xor bl, al
                and bl, 07
                jz 0c08
                pop ax
                sahf
                pop ax
                pop cx
                pop bx
                ret
                jnz 0a3f
                mov ax,
                call 0bbbh
                inc bx
                inc bx
                cmp bx,
                jnz 0bc7
                ret
                mov , bx
                call 0b74
                push bx
                push ax
                lahf
                mov bx, ax
                pop ax
                push bx
                cmp ah, 0e0h
                jnz 0b8f
                cmp ah, 84
                ja 0bb2h
                cmp al, 0f0h
                jnz 0b9f
                cmp al, 0e0h
                jnz 0ba9
                mov bx, ax
                pop ax
                sahf
                mov ax, bx
                pop bx
                clc
                ret
                jb 0a2a
                call 0b4c
                mov word ptr cs:, 0000
                mov word ptr cs:, 0000
                ret
                jmp 09ee
                pop bx
                pop ds
                jmp 064c
                push ds
                push ax
                mov ax, 0040
                mov ds, ax
                test word ptr , 2400
                jnz 06aa
                pop ax
                pop ds
                iret
               
页: [1]
查看完整版本: 检测点 17.1