|
主题 : : 实验7的问题,为什么说divide by 0 [已解决] |
回复[ 4次 ]
点击[ 352次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2012-12-02 16:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-12-01 11:13 |
DATAS SEGMENT
DB '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982'
DB '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990'
DB '1991', '1992', '1993', '1994', '1995'
DD 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
DD 345980,590827,803530,118300,184300,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
DATAS ENDS
TABLE SEGMENT
DB 21 DUP ('year summ ne ?? ')
TABLE ENDS
STACKS SEGMENT
DB 16 DUP (0)
STACKS ENDS
ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:TABLE
CODES SEGMENT
START: MOV AX,DATAS
MOV DS,AX
MOV AX,TABLE
MOV ES,AX
MOV AX,STACKS
MOV SS,AX
SUB AX,AX
MOV SP,16
MOV CX,21H
PUSH CX
MOV BX,0
MOV BP,0
MOV DI,0
S: MOV CX,4
MOV SI,0
S0:
MOV AL,[SI] ;年份
MOV ES:[BX][SI],AL
INC SI
LOOP S0
MOV BYTE PTR ES:[BX][SI],20H ;空格
MOV AX,84[DI] ;收入
MOV ES:[BX].5,AX
ADD DI,2
MOV DX,84[DI]
MOV ES:[BX].7,DX
ADD DI,2 ;为下次做准备
MOV BYTE PTR ES:[BX].9,20H ;空格
MOV BX,168[BP] ;雇员数
MOV ES:[BX].0AH,BX
ADD BP,2
MOV BYTE PTR ES:[BX].0BH,20H ;空格
DIV WORD PTR ES:[BX].10 ;平均收入
MOV ES:[BX].0DH,AX
MOV BYTE PTR ES:[BX][SI],20H ;空格
ADD BX,10H
POP CX
LOOP S
CODES ENDS
END START | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-12-03 00:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
|
|
|
|
|
[第2楼]
[ 回复时间:2012-12-03 21:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-12-01 11:13 |
现在知道了。有很多问题。
①没“程序返回”
②年份结果中SI变了,送的位置变了。
③雇员数没有把段地址设为ES
④MOV CX,21H;应该是21 | | |
|
|
|
|
[第3楼]
[ 回复时间:2012-12-07 22:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-12-01 11:13 |
下面的应该能解决。
DATAS SEGMENT
DB '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982'
DB '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990'
DB '1991', '1992', '1993', '1994', '1995'
DD 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
DD 345980,590827,803530,118300,184300,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
DATAS ENDS
TABLE SEGMENT
DB 21 DUP ('year summ ne ?? ')
TABLE ENDS
STACKS SEGMENT
DB 16 DUP (0)
STACKS ENDS
ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:TABLE
CODES SEGMENT
START: MOV AX,DATAS
MOV DS,AX
MOV AX,TABLE
MOV ES,AX
MOV AX,STACKS
MOV SS,AX
MOV SP,16
MOV CX,21
MOV BX,0
MOV SI,0
MOV BP,0
MOV DI,0
S: PUSH CX
MOV AX,[SI] ;年份
MOV ES:[BX],AX
ADD SI,2
MOV AX,[SI]
MOV ES:[BX+2],AX
ADD SI,2
MOV AX,84[DI] ;收入
MOV ES:[BX].5,AX
ADD DI,2
MOV DX,84[DI]
MOV ES:[BX].7,DX
ADD DI,2 ;为下次做准备
MOV CX,DS:168[BP] ;雇员数
MOV ES:[BX].0AH,CX
ADD BP,2
DIV WORD PTR ES:[BX].10 ;平均收入
MOV ES:[BX].0DH,AX
ADD BX,10H
POP CX
LOOP S
MOV AX,4C00H
INT 21H
CODES ENDS
END START | | |
|
|
|
|
[第4楼]
[ 回复时间:2012-12-07 22:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-12-01 11:13 |
此贴由 贴主 于 [ 2012-12-07 22:34 ] 结贴。 结贴原因:问题已解决 | | |
|