. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->INT指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  大家讨论一下这个程序发生除法溢出的时候,为什么不能在屏幕上显示"'you div error!"呢?  [待解决] 回复[ 1次 ]   点击[ 453次 ]  
hnuzyf
[帖 主]   [ 发表时间:2008-07-25 08:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-18 09:32
assume cs:code,ds:data
data segment
        db 'you div error!','0';这里没有按王爽老师所说的那要把它放在code segment中。
data ends
        
code segment
        start:mov ax,data
              mov ds,ax
              mov si,offset show_strend
              mov ax,0
              mov es,ax
              mov di,200h
              mov cx,offset show_strend - offset show_str
              cld
              rep movsb; ;将程序安装到0000:0200的段中
              call show_str;把'you div error!在显存中以便显示出来
              call set_enter_addr;修改(0000:0*4)=200,(0000:0*4+2)=0000例程的入口这是INT 0
          ;int 0h
          mov ax,4c00h
          int 21h              
show_str:
              mov ax,0b800h
              mov es,ax
              mov di,20*160
              mov ax,data
              mov ds,ax
              mov ax,ds:[si]
              cmp ax,'0'
              je ok
              mov es:[di],ax
              inc si
              inc di
              inc di
              loop show_str
show_strend:nop
          ok:ret
set_enter_addr:mov ax,0
               mov ds,ax
               mov ds:[0],word ptr 200h
               mov ds:[2],word ptr 0h
               ret
set_enter_addr_end:nop               
code ends        
end start
mouse
[第1楼]   [ 回复时间:2008-07-25 10:28 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
这个程序书上基本都给了源码,看到楼主上面有这么一句话“这里没有按王爽老师所说的那要把它放在code segment中。”,如果按照书上说的放到代码段里面。能不能正确显示?

然后在分析现在得情况为什么不能,可以用debug跟踪去分析,看看是地址错误还是没有找到数据,还是其他什么原因。

所谓苦尽甘来应该说的就是每次我们把程序调试出来得喜悦吧o(∩_∩)o...

一个东西在开始学的时候越难,最后掌握得往往也越深刻,这个程序的问题不是很大,楼主加油啊~
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved