. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  课程设计1,急!N天了,请教那里有错误,调试老是出错  [待解决] 回复[ 3次 ]   点击[ 273次 ]  
403413384
[帖 主]   [ 发表时间: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
几天了,感觉程序写的很垃圾,没好的思路,调试还出错,郁闷。。。。。
abob
[第1楼]   [ 回复时间:2009-12-16 14:24 ]   [引用]   [回复]   [ top ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
如果楼主的感觉是这样,建议楼主重写这个程序。

程序原本的规则就是从简单到复杂。如果思路不清晰就从简单做起,逐渐晚上程序。

比如这个程序。

先显示一个年份,在显示一列年份(每次都是完成功能,并测试后再进入下一个步骤)

然后再显示一个收入,再显示一列收入。

依次类推完成程序。

等做完之后可以考虑下优化,比如都是21次循环,是不是可以合并循环。
403413384
[第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 加上去了 还是不行。。。。
yisheng1025
[第3楼]   [ 回复时间:2009-12-19 10:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-12-06 15:51
用的子程序太多,肯定没有头绪
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved