传说。 发表于 2014-5-28 13:03:34

课程设计1 找错误。

本帖最后由 传说。 于 2014-5-28 22:27 编辑

assume cs:code,ss:stack,ds:data
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, 197514

    dd 345980,590827,803530,1183000,1843000,2795000,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

    dw 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239

    dw 260,304,333

      
data ends

stack segment
      db 80 dup (0)
stack ends



code segment

      start:      mov ax,data
                        mov ds,ax
                        mov ax,stack
                        mov ss,ax
                        
                        mov sp,0
                        mov si,0      ;数据段偏移地址
                        mov di,0      ;显存段偏移地址
                        mov bl,2      ;颜色属性
                        mov ax,0b800h
                        mov es,ax
                        mov cx,21d
                s:      push cx
                        mov cx,4
                s0:      mov al,
                        mov es:,al
                        mov es:,bl
                        add di,2
                        inc si
                        loop s0
                        add di,98h
                        pop cx
                        loop s
                        mov cx,21
                        mov bx,0
                        mov di,0
                        mov sp,50h
                s1:      mov ds:,cx
               
                        mov ds:,di
                        mov dx,                        ;高16位入ax
                        mov ax,                ;低16位入dx
                ff:      call divdw      
                ll:      inc bx         
                        mov cx,di
                        
                        jcxz mm
                        
                ok1:push ax
                        push bx      
                        mov ax,di
                        mov dx,ax
                        pop bx
                        pop ax
                        
                        jmp short ff
                mm:      mov cx,ax
                        jcxz q
                        jmp short ok1
                q:      mov cx,bx
                        mov di,ds:
                        
                ok:      
                        
               
                        pop ax
                        mov bl,2
                        add al,30h
                        mov es:20,al
                        mov es:20,bl
                        add di,2
                        inc si
               
                        loop ok
                        
                        add si,2
                        
                        mov cx,ds:
                        add ds:,0a0h
                        loop s1
                        
                        
                        mov ax,4c00h
                        int 21h

      divdw:         
                        push cx
                        push bx
                        push ax                        ;保存低16位
                        mov ax,dx
                        mov dx,0                        ;dx归零
                        mov bx,10d                        ;bx做除数
                        div bx                        ; ax/bxax为商   dx位余数
                        mov di,ax                        ;商入di
                        pop ax                              ;低16位出栈
                        mov cx,ax
                        jcxz k
                        div bx                              ;(低16位+商)/bx
                K:      pop bx                        
                        pop cx
                        push dx
                                                                                             
                        
                        jmp short ll
                        
                        
code ends
end start                        



谁能帮我这程序更改好?双字型数据出不来。

vkevke_3437 发表于 2014-5-28 13:03:35

传说。 发表于 2014-5-29 14:54 static/image/common/back.gif
强行顶!按时打扫打扫打扫的

assume cs:code,ss:stack,ds:data
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,2795000,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

    dw 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239

    dw 260,304,333
       
data ends

stack segment
      db 80 dup (0)
stack ends



code segment

      start:      mov ax,data
                        mov ds,ax
                        mov ax,stack
                        mov ss,ax
                        
                        mov sp,0
                        mov si,0      ;数据段偏移地址
                        mov di,0      ;显存段偏移地址
                        mov bl,2      ;颜色属性
                        mov ax,0b800h
                        mov es,ax
        ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        ;输出年份
                        mov cx,21d
                s:      push cx
                        mov cx,4
                s0:      mov al,
                        mov es:,al
                        mov es:,bl
                        add di,2
                        inc si
                        loop s0
                        add di,098h
                        pop cx
                        loop s
        ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        ;输出收入
                        mov cx,21
                        mov di,0
                        mov sp,50h
                                               
                s1:   mov bx,0
                                        mov ds:,cx
                                                mov ds:,di
                                               
                ff:   mov dx,                        ;高16位入dx
                        mov ax,                ;低16位入ax
                again:   call divdw
                                                        push dx
                                                        inc bx         
                        mov cx,di
                        
                        jcxz mm
                        
                ok1:push ax
                        push bx      
                        mov ax,di
                        mov dx,ax
                        pop bx
                        pop ax
                        
                        jmp short again
                mm:      mov cx,ax
                        jcxz q
                        jmp short ok1
                q:      mov cx,bx
                        mov di,ds:
                        
                ok:      
                        
               
                        pop dx
                        mov bl,2
                        add dl,30h
                        mov es:20,dl
                        mov es:20,bl
                        add di,2

                        loop ok
                        add si,4
                                               
                                                mov di,ds:
                        mov cx,ds:
                        add di,0a0h
                        loop s1
                        
                        
                        mov ax,4c00h
                        int 21h
                ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
                ;divdw 解决除法溢出
                ;参数 dx=高16位,ax=低16位
                ;返回 di=结果的高16位,ax=结果的低16位,dx=余数
      divdw:         
                        push cx
                        push bx
                        push ax                        ;保存低16位
                        mov ax,dx
                        mov dx,0                        ;dx归零
                        mov bx,10d                        ;bx做除数
                        div bx                        ; ax/bxax为商   dx位余数
                        mov di,ax                        ;商入di
                        pop ax                              ;低16位出栈
                        div bx                              ;(低16位+商)/bx
                K:      pop bx                        
                        pop cx
                        ret                                             
                     
                        
                        
code ends
end start

15岁的小朋友 发表于 2014-5-28 13:06:14

代码不全……

传说。 发表于 2014-5-28 13:09:35

15岁的小朋友 发表于 2014-5-28 13:06 static/image/common/back.gif
代码不全……

我只要求显示第二排。第一排我写出来了。

传说。 发表于 2014-5-28 13:10:39

显示第二排的代码请帮我看看具体应该怎么改

15岁的小朋友 发表于 2014-5-28 13:15:03

传说。 发表于 2014-5-28 13:09
我只要求显示第二排。第一排我写出来了。

是要显示第二列吧?

传说。 发表于 2014-5-28 15:13:15

15岁的小朋友 发表于 2014-5-28 13:15 static/image/common/back.gif
是要显示第二列吧?

是的。 帮我看看吧

传说。 发表于 2014-5-28 16:11:43

来人啊!!!!!!!!!!!

传说。 发表于 2014-5-28 19:14:10

顶。。。!:mad::mad:

传说。 发表于 2014-5-28 22:28:18

也是无人鸟我啊?

song942986943 发表于 2014-5-28 23:27:45

看了 眼晕只能默默帮你顶一下。。

传说。 发表于 2014-5-29 14:54:07

强行顶!按时打扫打扫打扫的

传说。 发表于 2014-5-29 18:42:29

vkevke_3437 发表于 2014-5-29 17:28 static/image/common/back.gif
assume cs:code,ss:stack,ds:data
data segment
   db '1975','1976','1977','1978','1979','1980','19 ...

哥啊!我哪里写错了!

传说。 发表于 2014-5-29 18:44:17

vkevke_3437 发表于 2014-5-28 13:03 static/image/common/back.gif
assume cs:code,ss:stack,ds:data
data segment
   db '1975','1976','1977','1978','1979','1980','19 ...

能告诉我你都改了哪里么? 

传说。 发表于 2014-5-29 18:46:25

vkevke_3437 发表于 2014-5-28 13:03 static/image/common/back.gif
assume cs:code,ss:stack,ds:data
data segment
   db '1975','1976','1977','1978','1979','1980','19 ...

还有我这些错误表明我哪里理解的不透彻?还有我那些细节没做好。 = =

传说。 发表于 2014-5-29 18:59:20

vkevke_3437 发表于 2014-5-28 13:03 static/image/common/back.gif
assume cs:code,ss:stack,ds:data
data segment
   db '1975','1976','1977','1978','1979','1980','19 ...

我想想错误还是我自己去找吧。 主要你给我点评下我的源代码。 麻烦了

vkevke_3437 发表于 2014-5-29 22:15:27

传说。 发表于 2014-5-29 18:59 static/image/common/back.gif
我想想错误还是我自己去找吧。 主要你给我点评下我的源代码。 麻烦了

不好意思 我不经常上网的 现在刚回来 改动的不是很多 一时忘了标记修改的地方了

vkevke_3437 发表于 2014-5-29 23:08:39

传说。 发表于 2014-5-29 18:44 static/image/common/back.gif
能告诉我你都改了哪里么? 

assume cs:code,ss:stack,ds:data
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,2795000,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

   dw 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239

   dw 260,304,333
         
data ends

stack segment
         db 80 dup (0)
stack ends



code segment

         start:      mov ax,data
                         mov ds,ax
                         mov ax,stack
                         mov ss,ax
                        
                         mov sp,0
                         mov si,0      ;数据段偏移地址
                        mov di,0      ;显存段偏移地址
                        mov bl,2      ;颜色属性
                        mov ax,0b800h
                         mov es,ax
         ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
         ;输出年份
                         mov cx,21d
               s:      push cx
                         mov cx,4
               s0:   mov al,
                         mov es:,al
                         mov es:,bl
                         add di,2
                         inc si
                         loop s0
                         add di,098h
                         pop cx
                         loop s
         ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
         ;输出收入
                         mov cx,21
                         mov di,0
                         mov sp,50h
                                                
               s1:                                       mov bx,0 ;改动过的    使下一个转换计数重置为零
                         mov ds:,cx
                         mov ds:,di
                                                
               ff:                                       mov dx,            ;高16位入dx 改动过的
                                                         mov ax,                ;低16位入ax 改动过的
               again:call divdw
                                                            push dx      ;余数入栈 改动过的
                         inc bx         
                         mov cx,di
                        
                         jcxz mm
                        
               ok1:push ax
                         push bx      
                         mov ax,di
                         mov dx,ax
                         pop bx
                         pop ax
                        
                         jmp short again
               mm:      mov cx,ax
                         jcxz q
                         jmp short ok1
               q:      mov cx,bx
                         mov di,ds:
                        
               ok:      
                        
               
                         pop dx
                         mov bl,2
                         add dl,30h
                         mov es:20,dl
                         mov es:20,bl
                         add di,2

                         loop ok
                                                                     add si,4   ;改动过的 dd占4字节
                                                
                                                                     mov di,ds:;改动过的
                         mov cx,ds:
                                                                     add di,0a0h      ;改动过的 因为下次循环mov ds:,di
                         loop s1
                        
                        
                         mov ax,4c00h
                         int 21h
               ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
               ;divdw 解决除法溢出
                ;参数 dx=高16位,ax=低16位
                ;返回 di=结果的高16位,ax=结果的低16位,dx=余数
      divdw:         
                         push cx
                         push bx
                         push ax               ;保存低16位
                        mov ax,dx
                         mov dx,0            ;dx归零
                        mov bx,10d             ;bx做除数
                        div bx               ; ax/bxax为商   dx位余数
                        mov di,ax            ;商入di
                         pop ax                ;低16位出栈
                        div bx               ;(低16位+商)/bx
               K:      pop bx                        
                         pop cx
                                                                      ret      ;改动过的 返回call子程序      如果要用jmp 那上面就只能用 jmp divdw不能用call                              
                        
                        
                        
code ends
end start

传说。 发表于 2014-5-30 21:21:50

vkevke_3437 发表于 2014-5-29 23:08 static/image/common/back.gif
assume cs:code,ss:stack,ds:data
data segment
    db '1975','1976','1977','1978','1979','1980',' ...

感激。。。。。。。。。。。。
页: [1]
查看完整版本: 课程设计1 找错误。