haiouda 发表于 2014-9-19 00:12:15

这是什么错误?

如题,    ??

haiouda 发表于 2014-9-19 00:27:23

书第280页,下边

mov word ptr es:.offset int9;;这条语句在DEBUG 中,T命令后出现,上面提示

haiouda 发表于 2014-9-19 11:13:18

替换,int 9 ,地址失败,求解{:1_1:}

haiouda 发表于 2014-9-19 12:31:00

assume cs:code,ds:date,ss:stack

date segment
dw 0,0
date ends

stack segment
dw 128 dup(0)
stack ends

code segment
   start:   
            mov ax,date
                  mov ds,ax
                  mov ax,stack
                  mov ss,ax
                  mov sp,128
                       
                        mov ax,0
                        mov es,ax
                       
                        push es:
                        pop ds:
                        push es:
                        pop ds:
                       
               
                        mov word ptr es:,offset int9
                        mov word ptr es:,cx
      
            mov ax,0b800h
            mov es,ax
                        mov ah,'a'
                       
                s:        mov es:,ah
                        inc ah
                       
             
                        call stop
                       
                        cmp ah,'z'
                        jna s
                       
                       
                               
                        mov ax,0
                        mov es,ax
                       
                        push ds:
                        pop es:
                        push ds:
                        pop es:
                       
                       
                       
                        mov ax,4c00h
                        int 21h
                       
                       
        stop:   push ax
                push bx
                       
                        mov bx,2000h
                        mov ax,0
                       
                s1:        sub ax,1
                        sbb bx,0
                        cmp ax,0
                       
                        jne s1
                        cmp bx,0
                        jne s1
                       
                        pop bx
                        pop ax
                       
            ret
                       
                       
        int9:       
                push ax
                  push es
                  push bx
                        in al,60h
                       
                pushf
                       
                        pushf
                        pop bx
                        and bh,11111100b
                        push bx
                        popf
                       
                        call dword ptr ds:
                       
                       
                       cmp al,1
                       jne ok
                       
                       mov ax,0b800h
                       mov es,ax
                       inc byte ptr es:
                       
                       
               
                ok:        pop bx
                        pop es
                        pop ax
                       
                        iret
                       
               
                       
                       
                       
code ends
end start                       
                       




                       
                       

haiouda 发表于 2014-9-19 12:33:11

上面的和书上差不多一样的;
为什么,可以通过编译,但无法执行;
在DEBUE中,单步执行第28行时出错???

haiouda 发表于 2014-9-19 12:45:51

疑问:
第81到83行也进行了三次压栈………第94行代码,其中包函了IP和Cx的压栈……106行到108行对应81到83行出栈……110行 iret 其中包函CX和IP和出栈。
问题 ,压栈和出栈应该相对应,这样压进去的和取出来的,才能相对应即:81-83压然后106至108出栈,而在83到106中有压栈 第94行进行了二次压栈,到106行之前没有出栈,而到110行才有出栈???

由上面看到,二组压栈和出栈,相互交差????
上面程序80行到110行,能得到想到的结果,那么,存在二个不同的栈??分别记录81-83压106-108出,和94行压--110行出??

求解???

haiouda 发表于 2014-9-19 12:55:04

对了,110行的出栈,还包括了86行标志寄存器的出栈;
按我的理解,应该把110代码移到106行之前,这样压栈和出栈的顺序才正确。(可真的那么移了,110行的iret 就返回原程序去了,后面106-108三个出栈,将不会被执行,可见是错的)

haiouda 发表于 2014-9-19 21:05:15

走过,路过,不如停下歇歇脚,指点指点{:1_1:}

haiouda 发表于 2014-9-19 23:07:20

各位高手,停停脚,帮我看看呀{:1_1:}

haiouda 发表于 2014-9-20 21:39:20

:mad: 没人帮顶:mad:,没人回贴:mad:

haiouda 发表于 2014-9-25 20:14:00

这个没给悬赏,是因为,我当时,还没弄明白怎么弄悬赏
页: [1]
查看完整版本: 这是什么错误?