|
主题 : : 课程设计1,急!N天了,请教那里有错误,调试老是出错 [待解决] |
回复[ 3次 ]
点击[ 273次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-12-15 00:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-09-20 22:11 |
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 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
dw 32 dup (0)
table ends
codesg segment
start:mov ax,data
mov ds,ax
mov bx,0
mov si,0
mov di,0
mov ax,table
mov es,ax
mov ss,ax
mov sp,60
mov bp,0
mov cx,21
s:call s1
add bx,4
add si,2
add bp,160
loop s
s1:push cx
mov ax,[bx]
mov dx,[bx+2]
mov di,4
s2:mov cx,10
call divdw
add cx,30h
mov es:[di],cx
mov cx,dx
jcxz s3
s3:mov cx,ax
jcxz s4
add di,2
jmp s2
s4:call x
call s5
call s8
call s11
ret
s5:mov ax,[bx+84]
mov dx,[bx+86]
mov di,4
s6:mov cx,10
call divdw
add cx,30h
mov es:[di],cx
mov cx,dx
jcxz s7
s7:mov cx,ax
jcxz x3
add di,2
jmp s6
x:push ds ;显示年份
push si
mov ax,0b800h
mov ds,ax
mov si,0
x1:mov cl,es:[di]
mov ch,0
jcxz x2
mov ch,7
mov [si+bp],cx
sub di,2
add si,2
jmp x1
x2:pop si
pop ds
ret
x3:push ds ;显示总收入
push si
mov ax,0b800h
mov ds,ax
mov si,0
x4:mov cl,es:[di]
mov ch,0
jcxz x5
mov ch,7
mov [si+25+bp],cx
sub di,2
add si,2
jmp x4
x5:pop si
pop ds
ret
s8:mov ax,[si+168]
mov dx,0
mov di,4
s9:mov cx,10
call divdw
add cx,30h
mov es:[di],cx
mov cx,dx
jcxz s10
s10:mov cx,ax
jcxz x6
add di,2
jmp s9
x6:push ds ;显示人数
push si
mov ax,0b800h
mov ds,ax
mov si,0
x7:mov cl,es:[di]
mov ch,0
jcxz x8
mov ch,7
mov [si+50+bp],cx
sub di,2
add si,2
jmp x7
x8:pop si
pop ds
ret
s11:mov ax,[bx+84]
mov dx,[bx+86]
mov di,4
s12:mov cx,[si+168]
call divdw
add cx,30h
mov es:[di],cx
mov cx,dx
jcxz s13
s13:mov cx,ax
jcxz x9
add di,2
jmp s12
x9:push ds ;显示人均收入
push si
mov ax,0b800h
mov ds,ax
mov si,0
x10:mov cl,es:[di]
mov ch,0
jcxz x11
mov ch,7
mov [si+65+bp],cx
sub di,2
add si,2
jmp x10
x11:pop si
pop ds
ret
divdw:push bx
mov bx,ax
mov ax,dx
mov dx,0
div cx
push ax
mov ax,bx
div cx
mov cx,dx
pop dx
pop bx
ret
codesg ends
end start
几天了,感觉程序写的很垃圾,没好的思路,调试还出错,郁闷。。。。。 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-12-16 14:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07 |
如果楼主的感觉是这样,建议楼主重写这个程序。
程序原本的规则就是从简单到复杂。如果思路不清晰就从简单做起,逐渐晚上程序。
比如这个程序。
先显示一个年份,在显示一列年份(每次都是完成功能,并测试后再进入下一个步骤)
然后再显示一个收入,再显示一列收入。
依次类推完成程序。
等做完之后可以考虑下优化,比如都是21次循环,是不是可以合并循环。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-12-18 21:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-09-20 22:11 |
上面的程序是按照一行一行的显示的,只是不知道怎么优化,还有那里有错误?
start:mov ax,data
mov ds,ax
mov bx,0
mov si,0
mov di,0
mov ax,table
mov es,ax
mov ss,ax
mov sp,60
mov bp,0
mov cx,21
s:call s1
add bx,4
add si,2
add bp,160
loop s
这里少了个 POP CX 加上去了 还是不行。。。。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-12-19 10:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-12-06 15:51 |
|
|