|
主题 : : 实验7. 我有点想砸电脑的冲动! [已解决] |
回复[ 5次 ]
点击[ 337次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-07-26 17:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:5
注册日期:2009-05-25 11:39 |
程序是写了又改,改了又写,改改写写,写写改改。最后搞了个溢出出来。请大家看看到底要怎么改:
start:mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov bx,0
mov di,0
mov cx,21
s0:mov bp,cx _______________;把cx放入bp,因为等下要循环。
mov si,0
mov cx,2
s:mov ax,[di]
mov es:[bx][si],ax
mov ax,54h[di]
mov es:5h[bx][si],ax
add si,2
add di,2
loop s _________________;以上7句是把年份和收入放入,循环2次刚好。
mov ax,0a8h[bx]
mov es:0ah[bx],ax ________________;人数放入。
mov dx,es:7h[bx]
mov ax,es:5h[bx]
div word ptr es:0ah[bx]
mov es:0dh[bx],ax ________________;把人均收入放入。
;以上3个放入就把一行数据放好了,接下来就是循环了。
add bx,16
mov cx,bp ___________;把cx设为21,因为有21行,要循环21次。
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
结果:前面几次循环后是可以的,但是循环到后面,debug却提示数据溢出,我个人认为没什么错误啊。搞来搞去,实在搞不出了,只好来论坛请教大家了。。 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-07-26 19:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26 |
肯定是循环出问题了,我前几次做的时候也出现这种情况,后面修改好的。
用debug跟踪一下,看看从哪里开始出问题的,然后修改。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-07-26 19:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26 |
看了一部分,还没看完,贴主没有把所有程序贴上,我手上正好没有书,根据记忆看了下,发现
mov ax,0a8h[bx]
mov es:0ah[bx],ax ________________;人数放入。
这里好像[bx]指向有问题,后面有条指令add bx,16,循坏后数据段中的偏移地址更改,指向会出现错误 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-07-27 11:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:5
注册日期:2009-05-25 11:39 |
看了一部分,还没看完,贴主没有把所有程序贴上,我手上正好没有书,根据记忆看了下,发现
mov ax,0a8h[bx]
mov es:0ah[bx],ax ________________;人数放入。
这里好像[bx]指向有问题,后面有条指令add bx,16,循坏后数据段中的偏移地址更改,指向会出现错误
——————————————————————————————————————————————————————————————————————————————————————————————————————
不可能是[bx]出问题啊,add bx,16是为了循环后es:table换行所准备的,而且前面bx=0,我不知道指向怎么会出问题呢? | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-07-27 14:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:5
注册日期:2009-05-25 11:39 |
重新又分析了下:
mov ax,0a8h[bx]
mov es:0ah[bx],ax ________________;人数放入。
第一个[bx]指向的确出了问题,现在想了几个解决方案
1、换个寄存器(不过好像能用的寄存器都用没了)
2、放入栈堆或内存地址
非常感谢 tinyparticle 的热心帮助
谢谢 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-07-28 10:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:5
注册日期:2009-05-25 11:39 |
此贴由 贴主 于 [ 2009-07-28 10:06 ] 结贴。 结贴原因:问题已解决 | | |