鱼C论坛

 找回密码
 立即注册
查看: 2334|回复: 1

关于实验13-1 debug 调试问题

[复制链接]
发表于 2012-2-29 18:14:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 莫名其妙 于 2012-3-2 08:45 编辑

assume cs:code
  
data segment
db "welcome to masm !",0
data ends

code segment
    start:   mov ax,cs
   mov ds,ax
   mov si, offset c7
   mov ax,0
   mov es,ax
   mov di,200h
   mov cx,offset c7end - offset c7
   cld
   rep movsb
   ;安装

   mov word ptr es:[7ch*4],200h
   mov word ptr es:[7ch*4+2],0h
;设置向量表

   mov dh,10
   mov dl,10
   mov cl,2
   mov ax,data
   mov ds,ax
   mov si,0
   int 7ch
;执行中断 pushf push cs push ip

   mov ax,4c00h
   int 21h
  
  
c7:  push ax
   push bx
   push di
   mov bx,0b800h
   mov es,bx


   mov al,160d
   mul dh
   mov di,ax
   mov al,2   
   mul dl   
   add di,ax    ;设定显示位置
   
  s: mov cl,[si]
   mov ch,0
   jcxz ok ;判断是否为0   跳转
   mov es:[di],cl
   mov bl,2
   mov es:[di+1],bl
   inc si
   add di,2
   jmp short s ;显示输出
ok:   pop di
   pop bx
   pop ax
   iret
c7end: nop  
   
   code ends
  end start

我在debug 调试的时候 发现mov bx,0b800h----jmp short s   这一段 本来应该修改显示区域的内存单元数据的 可是改写完的那一段却没有发生改变 还是原来的数据!~



这个程序 每次运行都不会显示出 绿色的字符
但是只要 debug一遍 在退出 然后在直接执行 .exe就能正确显示



E:\>cd 1
E:\1>ml 1.asm
E:\1>1.exe
E:\1>1.exe
E:\1>1.exe   这里多次执行也没有显示出字符串
E:\1>debug 1.exe    进入debug 后直接q退出
-q      
            welcome to masm !

E:\1>1.exe   再次执行就显示出字符串了!~
E:\1>


求解!~








想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-1 11:10:44 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 梦想飞扬 于 2012-3-1 11:24 编辑

data segment
db "welcome to masm !",0
data ends

数据段的定义会被操作系统释放,要放在cs段代码中定义
参考247页书中的说明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 20:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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