鱼C论坛

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

这是什么错误?

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

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

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

x
如题,    ??
XXXXX.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

mov word ptr es:[9*4].offset int9  ;;这条语句在DEBUG 中,T命令后出现,上面提示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-19 11:13:18 | 显示全部楼层
替换,int 9 ,地址失败,求解{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-19 12:31:00 | 显示全部楼层
  1. assume cs:code,ds:date,ss:stack

  2. date segment
  3. dw 0,0
  4. date ends

  5. stack segment
  6. dw 128 dup(0)
  7. stack ends

  8. code segment
  9.    start:   
  10.             mov ax,date
  11.                     mov ds,ax
  12.                     mov ax,stack
  13.                     mov ss,ax
  14.                     mov sp,128
  15.                        
  16.                         mov ax,0
  17.                         mov es,ax
  18.                        
  19.                         push es:[9*4]
  20.                         pop ds:[0]
  21.                         push es:[9*4+2]
  22.                         pop ds:[2]
  23.                        
  24.                
  25.                         mov word ptr es:[9*4],offset int9
  26.                         mov word ptr es:[9*4+2],cx
  27.       
  28.             mov ax,0b800h
  29.             mov es,ax
  30.                         mov ah,'a'
  31.                        
  32.                 s:        mov es:[160*12+40*2],ah
  33.                         inc ah
  34.                        
  35.                
  36.                         call stop
  37.                        
  38.                         cmp ah,'z'
  39.                         jna s
  40.                        
  41.                        
  42.                                
  43.                         mov ax,0
  44.                         mov es,ax
  45.                        
  46.                         push ds:[0]
  47.                         pop es:[9*4]
  48.                         push ds:[2]
  49.                         pop es:[9*4+2]
  50.                        
  51.                        
  52.                        
  53.                         mov ax,4c00h
  54.                         int 21h
  55.                        
  56.                        
  57.         stop:   push ax
  58.                 push bx
  59.                        
  60.                         mov bx,2000h
  61.                         mov ax,0
  62.                        
  63.                 s1:        sub ax,1
  64.                         sbb bx,0
  65.                         cmp ax,0
  66.                        
  67.                         jne s1
  68.                         cmp bx,0
  69.                         jne s1
  70.                        
  71.                         pop bx
  72.                         pop ax
  73.                        
  74.             ret
  75.                        
  76.                        
  77.         int9:       
  78.                 push ax
  79.                     push es
  80.                     push bx
  81.                         in al,60h
  82.                        
  83.                 pushf
  84.                        
  85.                         pushf
  86.                         pop bx
  87.                         and bh,11111100b
  88.                         push bx
  89.                         popf
  90.                        
  91.                         call dword ptr ds:[0]
  92.                        
  93.                          
  94.                          cmp al,1
  95.                          jne ok
  96.                          
  97.                          mov ax,0b800h
  98.                          mov es,ax
  99.                          inc byte ptr es:[160*12+40*2+1]
  100.                        
  101.                        
  102.                
  103.                 ok:        pop bx
  104.                         pop es
  105.                         pop ax
  106.                        
  107.                         iret
  108.                        
  109.                
  110.                        
  111.                        
  112.                        
  113. code ends
  114. end start                       
  115.                        




  116.                        
  117.                        
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-19 12:33:11 | 显示全部楼层
上面的和书上差不多一样的;
为什么,可以通过编译,但无法执行;
在DEBUE中,单步执行第28行时出错???
小甲鱼最新课程 -> https://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行出??

求解???

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-9-19 21:05:15 | 显示全部楼层
走过,路过,不如停下歇歇脚,指点指点{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-19 23:07:20 | 显示全部楼层
各位高手,停停脚,帮我看看呀{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-20 21:39:20 | 显示全部楼层
:mad: 没人帮顶  :mad:  ,没人回贴:mad:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-25 20:14:00 | 显示全部楼层
这个没给悬赏,是因为,我当时,还没弄明白怎么弄悬赏
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 09:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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