大家帮我看看这段段码哪里有问题,
是根据王爽实验7中自已编写的,调式时,结果都是对的,就是在调试时到了循环处,如果用p命令的话,就会出现 divide overflow 提示,弄了一两天,头都搞昏了,代码如下:
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 '
dd 21,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
codesg segment
start: mov ax,table
mov es,ax
mov ax,data
mov ds,ax
mov bx,0
mov si,0
mov di,0
mov cx,21h
s: mov ax,[si]
mov es:[bx],ax
mov ax,[si].2h
mov es:[bx].2h,ax
mov ax,54h[si]
mov es:[bx].5h,ax
mov dx,56h[si]
mov es:[bx].7h,dx
mov ax,0a8h[di]
mov es:0ah[bx],ax
mov ax,54h[si]
div word ptr ds:0a8h[di]
mov es:0dh[bx],ax
add si,4
add di,2
add bx,16
loop s
mov ax,4c00h
int 21h
codesg ends
end start
[解决办法]
cx里应该是21而不是21h吧?