|
发表于 2018-1-26 13:50:27
|
显示全部楼层
本楼为最佳答案
本帖最后由 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:[152h],di
- mov cx, 21
-
- s: mov ss:[150h], cx
- mov cx, 4
-
- s0: mov sp, [bx+si]
- mov [bp] , sp
- inc bp
- inc si
- loop s0 ;你这个地方loop s0
- mov sp, ' '
- mov [bp], sp
- mov sp, [bx+di]
- mov [bp+1], sp
- add di, 2
- mov sp, [bx+di]
- mov [bp+3], sp
- add di, 2
- mov ss:[154h],di
- mov sp, ' '
- mov [bp+5], sp
- mov di, ss:[152h]
- mov sp, [bx+di]
- mov di,ss:[154h]
- mov sp, ' '
- mov[bp+8],sp
- mov ax,[bp+1]
- mov dx,[bp+3]
- div word ptr[bp+6]
- mov[bp+9],ax
- mov SP, ' '
- mov[bp+0bh],sp
- add bp,0ch
- mov cx,ss:[150h]
- loop s0 ;你这个地方应该loop s
-
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码
你看看你loop s0 两次,第一次在43行 第二次在71行 。小伙要细心呀
还有就是给你几个建议。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
复制代码
|
|