. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验七,不知道为什么在DEBUG下调试老是提示Divide overflow  [待解决] 回复[ 4次 ]   点击[ 380次 ]  
tianyu_lianxin
[帖 主]   [ 发表时间:2009-02-11 08:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-12-12 12:10
不知道为什么在DEBUG下调试老是提示Divide overflow,查看内存时只有一部分添到指定内存中,将作除法的部分注释掉可以正常运行,下面是我写的程序,每个功能都作了标记:
assume cs:codesg,ds:data,es:table,ss:stack
data segment
db '1975','1976','1977','1978',        '1979',        '1980',        '1981',        '1982',        '1983'
db '1984','1985','1986','1987',        '1988',        '1989',        '1990',        '1991',        '1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
data ends
table segment
db 21 dup('year summ ne ?? ')
table ends
stack segment
db 2 dup(0)
stack ends
codesg segment
start:mov ax,data
        mov ds,ax
        mov ax,table
        mov es,ax
        mov ax,stack
        mov ss,ax
        mov sp,0
        mov bx,0
        mov bp,0
        mov si,0
        mov cx,21
        s0:push cx
           mov cx,2
           mov di,0
         s:mov ax,[bx+si]
           mov es:[bp+si],ax
           add si,2
           loop s
           inc si
           mov cx,2
         s1:mov ax,[bx+di+54h]
           mov es:[bp+si],ax
           add di,2
           add si,2
           loop s1
           inc si
        s2:mov ax,[bx+0a8h]
           mov es:[bp+si],ax
           inc si
;        s3:mov ax,0
;           mov dx,0
;           mov ax,[bx+54h]
;           mov dx,[bx+56h]
;           div word ptr [bx+0a8h]
;           mov es:[bp+si],ax
        mov si,0
        pop cx
        add bx,4
        add bp,16
        loop s0
        mov ax,4c00h
        int 21h           
codesg ends
end start
zcouyangpeng
[第1楼]   [ 回复时间:2009-02-11 22:11 ]   [引用]   [回复]   [ top ] 
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36
有点复杂 我仔细看看
zcouyangpeng
[第2楼]   [ 回复时间:2009-02-11 22:21 ]   [引用]   [回复]   [ top ] 
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36
越看越迷糊 如果你用一个循环搞定 我大概看的懂

这循环越多,我脑筋也跟着旋成一跟麻花
zcouyangpeng
[第3楼]   [ 回复时间:2009-02-11 22:26 ]   [引用]   [回复]   [ top ] 
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36
mov sp,0 
因该为 mov sp,16

没有16b的段都为16b
luccs
[第4楼]   [ 回复时间:2009-02-19 10:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-02-19 10:20
有必要用这么多循环吗?一个应该够了吧。还有哦这里需要再定义一个stack吗?不是有table吗?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved