鱼C论坛

 找回密码
 立即注册
查看: 3852|回复: 15

实验7 为啥溢出???

 关闭 [复制链接]
回帖奖励 2 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次(中奖概率 10%)
发表于 2011-8-19 13:29:35 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 583413088 于 2011-8-19 21:05 编辑
assume cs:codesg,ds:data,es:table
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'
; 以上是表示21年的21个字符 占84单元 (54h)

dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
; 以上表示21年公司总收入的21个dword 数据 占84单元(54h)

dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
; 以上是表示21年公司雇员人数的21个word数据 占(2ah)

; 数字数据共占126(7e h)
data ends 

table segment 
db 21 dup ('year summ ne ?? ')
table ends 
codesg segment 
start : mov ax, data
mov ds, ax
mov ax ,table 
mov es, ax

mov si, 0
mov bx, 0
mov di, 0
mov cx, 21

s: mov ax, [di]
mov es:[bx+0], ax
mov ax, [di+2]
mov es:[bx+2],ax



mov ax,[di+84]
mov es:[bx+5], ax
mov ax, [di+86]
mov es:[bx+7], ax



mov ax, [di+168]
mov es:[bx+10], ax

mov ax,[di+54h]
div word ptr ds:[di+0a8h]
mov es:[bx+0dh],ax

add bx, 10h
add di, 4

loop s


mov ax, 4c00h
int 21h
codesg ends 
end start
大家看看 为什么除法部分会溢出啊  

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-19 15:07:36 | 显示全部楼层
大家帮忙看看啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-19 15:29:39 | 显示全部楼层
1、第50行,做除法运算时,应该是dword型处以word型,被除数你只设置了低16位的ax,高16位dx没设置;
2、进入下一循环的条件:bx作为转移目标区的地址变量,bx=bx+10,这个没问题。源数据区的地址变量为di,每次循环di=di+4是有问题的;因为在年份数据和年收入数据里每个数据都占据4字节,di+=4可以跳至下一年;但年员工数和年均创收额均为word型,这两类数据应该为di+=2跳转到下一年。

评分

参与人数 1鱼币 +2 收起 理由
583413088 + 2 赞一个!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-19 17:11:05 | 显示全部楼层

那可不可以,麻烦这位高手  将原来的代码   改一改  让在下看看呢  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-19 17:41:46 | 显示全部楼层
我也只学到第十章,你这些问题如果自己细心些自己都可以看出来的;我不想帮你改,问题说得很清楚了,你应该自己去做着试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-19 17:46:24 | 显示全部楼层
tsembrace 发表于 2011-8-19 17:41
我也只学到第十章,你这些问题如果自己细心些自己都可以看出来的;我不想帮你改,问题说得很清楚了,你应该 ...

啊这样啊   那我试试看           我感觉我的那个除法代码和小甲鱼老师的 差不多阿  咋就错了呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-19 18:11:53 | 显示全部楼层

回帖奖励 +2 鱼币

加油支持LZ啊:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-19 21:03:56 | 显示全部楼层
经过我的不懈努力  终于  出炉了~~~~~~~~~~~~~~~~~~
assume cs:codesg,ds:data,es:table
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'
        ; 以上是表示21年的21个字符 占84单元 (54h)
        
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
        dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
        ; 以上表示21年公司总收入的21个dword 数据 占84单元(54h)
        
        dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
        dw 11542,14430,15257,17800
        ; 以上是表示21年公司雇员人数的21个word数据 占(2ah)
        
        ; 数字数据共占126(7e h)
data ends 

table segment 
        db 21 dup ('year summ ne ?? ')
table ends 
codesg segment 
 start : mov ax, data
         mov ds, ax
                 mov ax ,table 
                 mov es, ax
                 
                 mov si, 0
                 mov bx, 0
                 mov di, 0
                 mov cx, 21
                 
s:                 mov ax, [di]
                 mov es:[bx+0], ax
                 mov ax, [di+2]
                 mov es:[bx+2],ax
                 
                
                 
                 mov ax,[di+84]
                 mov es:[bx+5], ax
                 mov ax, [di+86]
                 mov es:[bx+7], ax
                 
                
                 
                 mov ax, [si+168]
                 mov es:[bx+10], ax
                 
                 mov ax,[di+54h]
                 mov dx, [di+56h]
                 
                 
                 div word ptr ds:[si+0a8h]
                 mov es:[bx+0dh],ax
                 
                 add bx, 10h
                 add di, 4
                 add si, 2
                 
                 loop s
                  
                 
                 mov ax, 4c00h
                 int 21h
codesg ends 
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-20 02:30:02 | 显示全部楼层
{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}付出总会有回报的!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-20 13:09:03 | 显示全部楼层
583413088 发表于 2011-8-19 21:03
经过我的不懈努力  终于  出炉了~~~~~~~~~~~~~~~~~~

你试试加用栈的机制再写一遍!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-20 13:18:53 | 显示全部楼层
啊。感谢楼主。知道哪错了!~:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-20 17:09:14 | 显示全部楼层
学基础 发表于 2011-8-20 13:09
你试试加用栈的机制再写一遍!

我想在将汇编学完后  在研究呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-10 09:36:11 | 显示全部楼层
俺是菜鸟,论坛回复后的第一贴支持楼猪!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-10 16:37:02 | 显示全部楼层
只支持,我不懂!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-12 19:11:48 | 显示全部楼层
顶一个!!!!:lol:lol:lol:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-12 20:08:13 | 显示全部楼层
学习了!!!!!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 04:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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