鱼C论坛

 找回密码
 立即注册
查看: 1687|回复: 10

这是什么错误?

[复制链接]
发表于 2014-9-19 00:12:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,    ??
XXXXX.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-9-19 00:27:23 | 显示全部楼层
书第280页,下边

mov word ptr es:[9*4].offset int9  ;;这条语句在DEBUG 中,T命令后出现,上面提示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-19 11:13:18 | 显示全部楼层
替换,int 9 ,地址失败,求解{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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:[9*4]
                        pop ds:[0]
                        push es:[9*4+2]
                        pop ds:[2]
                        
                
                        mov word ptr es:[9*4],offset int9
                        mov word ptr es:[9*4+2],cx
       
            mov ax,0b800h
            mov es,ax
                        mov ah,'a'
                        
                s:        mov es:[160*12+40*2],ah
                        inc ah
                        
               
                        call stop
                        
                        cmp ah,'z'
                        jna s
                        
                        
                                
                        mov ax,0
                        mov es,ax
                        
                        push ds:[0]
                        pop es:[9*4]
                        push ds:[2]
                        pop es:[9*4+2]
                        
                        
                        
                        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:[0]
                        
                         
                         cmp al,1
                         jne ok
                         
                         mov ax,0b800h
                         mov es,ax
                         inc byte ptr es:[160*12+40*2+1]
                        
                        
                
                ok:        pop bx
                        pop es
                        pop ax
                        
                        iret
                        
                
                        
                        
                        
code ends
end start                        
                        




                        
                        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-19 12:33:11 | 显示全部楼层
上面的和书上差不多一样的;
为什么,可以通过编译,但无法执行;
在DEBUE中,单步执行第28行时出错???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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行出??

求解???

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-19 12:55:04 | 显示全部楼层
对了,110行的出栈,还包括了86行标志寄存器的出栈;
按我的理解,应该把110代码移到106行之前,这样压栈和出栈的顺序才正确。(可真的那么移了,110行的iret 就返回原程序去了,后面106-108三个出栈,将不会被执行,可见是错的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-19 21:05:15 | 显示全部楼层
走过,路过,不如停下歇歇脚,指点指点{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-19 23:07:20 | 显示全部楼层
各位高手,停停脚,帮我看看呀{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-20 21:39:20 | 显示全部楼层
:mad: 没人帮顶  :mad:  ,没人回贴:mad:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-25 20:14:00 | 显示全部楼层
这个没给悬赏,是因为,我当时,还没弄明白怎么弄悬赏
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 23:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表