雪绒★~花飘 发表于 2012-12-16 15:31:21

关于汇编第15.4章的新的int9返回的问题

这是书上的源代码,当运行到新写的int9那里,指令iret运行后ip是不是指向cmp al,1,如过是的话那这段新写的int9 不就一直重复,不好返回了吗???
assume cs:code

stack segment
db 128 dup (0)
stack ends

data segment
dw 0,0
data ends

code segment

start:
                mov ax,stack
                mov ss,ax
                mov sp,128
                mov ax,data
                mov ds,ax
                mov ax,0
                mov es,ax
               
               
                push es:
                pop ds:
                push es:
                pop ds:
               
                mov word ptr es:,offset int9
                mov es:,cs
               
                mov ax,0b800h
                mov es,ax
                mov ah,'a'
s:                mov es:,ah
                call delay
                inc ah
                cmp ah,'z'
                jna s
               
                mov ax,0
                mov es,ax
               
                push ds:
                pop es:
                push ds:
                pop es:
               
                mov ax,4c00h
                int 21h
               
delay:        push ax
                push dx
                mov dx,1000h
                mov ax,0
s1:   sub ax,1
                sbb dx,0
                cmp ax,0
                jne s1
                cmp dx,0
                jne s1
                pop dx
                pop ax
                ret
               
int9:                      push ax
                push bx
                push es
                in al,60h
               
                pushf
                pushf
                pop bx
                and bh,11111100b
                push bx
                popf
                call dword ptr ds:
               
                cmp al,1
                jne int9ret
               
                mov ax,0b800h
                mov es,ax
                inc byte ptr es:
               
int9ret:

                              pop es
                pop bx
                pop ax
                iret
               
code ends

end start               
页: [1]
查看完整版本: 关于汇编第15.4章的新的int9返回的问题