为什么会相除溢出???
为什么用debug跟踪一用—g或者—p就出现divide overflow?????? 放下代码不要放图片呀呀呀{:10_245:} 发代码,不要发图片。 本帖最后由 cnkizy 于 2018-1-26 11:26 编辑图片看着头疼,你把代码贴出来我给你分析下。
首先我猜下 你的 div word ptr 这里 这两个字节单元的数据没对。是不是bp取错了。
你把代码放上来 我给你调试{:10_266:} 本帖最后由 cnkizy 于 2018-1-26 14:10 编辑
代码有问题
这是你的源代码我给你敲下了
assume cs:code,ds:data,ss:table
data segment
;21个年份
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个收入
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;21个人数
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,45257,17800
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
code segment
start:
mov ax, data
mov ds, ax
mov ax, table
mov ss, ax
mov bx, 0
mov bp, 0
mov si, 0
mov di, 84
mov ss:,di
mov cx, 21
s: mov ss:, cx
mov cx, 4
s0: mov sp,
mov , sp
inc bp
inc si
loop s0 ;你这个地方loop s0
mov sp, ' '
mov , sp
mov sp,
mov , sp
add di, 2
mov sp,
mov , sp
add di, 2
mov ss:,di
mov sp, ' '
mov , sp
mov di, ss:
mov sp,
mov di,ss:
mov sp, ' '
mov,sp
mov ax,
mov dx,
div word ptr
mov,ax
mov SP, ' '
mov,sp
add bp,0ch
mov cx,ss:
loop s0 ;你这个地方应该loop s
mov ax,4c00h
int 21h
code ends
end start
你看看你loop s0 两次,第一次在43行 第二次在71行 。{:10_249:}小伙要细心呀
还有就是给你几个建议。ss一般是用来放栈的,你这里最好用es来存放,双重循环那里可以用 push cx和pop cx来写。
双重循环参考
mov cx,2
again1:
push cx ;这里用栈暂时存放cx次数
mov cx,5
again2:
nop ; 这里加上你的循环指令
nop
nop
loop again2
pop cx ;这里就取出刚才存放的cx次数
loop again1
谢谢
cnkizy 发表于 2018-1-26 13:50
代码有问题
这是你的源代码我给你敲下了
谢谢了
页:
[1]