|
主题 : : 求高手指教(课程设计1) 总是显示除法溢出 [已解决] |
回复[ 2次 ]
点击[ 466次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-12-23 20:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-10-30 10:47 |
ASSUME CS:CODE
DATA SEGMENT
DB
'1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987
','1988','1989','1990','1991','1992','1993','1994','1995',0
DD
16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827,803530,11830
00,1843000,2759000,3753000,4649000,5937000,0
DW
3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11542,14430,15257,17800
,0
DW 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239,260,304,333,0
DATA ENDS
CODE SEGMENT
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
MOV AX,0b800h
MOV ES,AX
MOV DH,1
MOV DL,3
MOV CL,2
MOV SI,0
CALL SHOW
CALL DTOC1
MOV DH,1
MOV DL,23
MOV CL,2
CALL SHOW
CALL DTOC2
MOV DH,1
MOV DL,43
MOV CL,2
CALL SHOW
CALL DTOC2
MOV DH,1
MOV DL,63
MOV CL,2
CALL SHOW
MOV AX,4C00H
INT 21H
SHOW: push ax
push bx
push cx
S:MOV AL,160
MUL DH
MOV BX,AX
MOV AL,2
MUL DL
ADD BX,AX
MOV AL,CL
MOV CH,0
MOV CL,[SI]
JCXZ RETURN
MOV CH,AL
MOV ES:[BX],CX
INC SI
ADD BX,2
JMP S
RETURN:pop cx
pop bx
pop ax
ret
DTOC1: PUSH SI
push ax
push bx
push cx
PUSH DI
MOV CX,0ah
S1:MOV AX,[SI]
MOV DX,[SI+2]
MOV BX,AX
MOV AX,DX
MOV DX,0
DIV CX
MOV DI,AX
MOV AX,BX
DIV CX
MOV [BP],DL
MOV CX,DX
MOV DX,DI
JCXZ RETURN1
ADD SI,4
INC BP
JMP S1
RETURN1:POP DI
POP AX
POP BX
POP CX
POP SI
RET
DTOC2: push ax
push bx
push cx
PUSH DI
PUSH SI
MOV CL,0ah
S2:MOV AX,[SI]
DIV CL
MOV [BP],AH
MOV CX,[SI]
JCXZ RETURN2
ADD SI,2
INC BP
JMP S2
RETURN2:POP SI
POP DI
POP AX
POP BX
POP CX
RET
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-12-23 21:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-10-30 10:47 |
改了下
这次没有溢出了
但是没有输出了
大家看看哪里不对吧
ASSUME CS:CODE
DATA SEGMENT
DB
'1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987
','1988','1989','1990','1991','1992','1993','1994','1995',0
DD
16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827,803530,11830
00,1843000,2759000,3753000,4649000,5937000,0
DW
3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11542,14430,15257,17800
,0
DW 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239,260,304,333,0
DATA ENDS
CODE SEGMENT
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
MOV AX,0b800h
MOV ES,AX
MOV DH,1
MOV DL,3
MOV CL,2
MOV SI,0
CALL SHOW
CALL DTOC1
MOV DH,1
MOV DL,23
MOV CL,2
CALL SHOW
CALL DTOC2
MOV DH,1
MOV DL,43
MOV CL,2
CALL SHOW
CALL DTOC2
MOV DH,1
MOV DL,63
MOV CL,2
CALL SHOW
MOV AX,4C00H
INT 21H
SHOW: push ax
push bx
push cx
S:MOV AL,160
MUL DH
MOV BX,AX
MOV AL,2
MUL DL
ADD BX,AX
MOV AL,CL
MOV CH,0
MOV CL,[SI]
JCXZ RETURN
MOV CH,AL
MOV ES:[BX],CX
INC SI
ADD BX,2
JMP S
RETURN:pop cx
pop bx
pop ax
ret
DTOC1: PUSH SI
push ax
push bx
push cx
PUSH DI
MOV CX,0ah
S1:MOV AX,[SI]
MOV DX,[SI+2]
MOV BX,AX
MOV AX,DX
MOV DX,0
DIV CX
MOV DI,AX
MOV AX,BX
DIV CX
add dl,30h
MOV [BP],DL
MOV CX,DX
MOV DX,DI
JCXZ RETURN1
ADD SI,4
INC BP
JMP S1
RETURN1:POP DI
POP AX
POP BX
POP CX
POP SI
RET
DTOC2: push ax
push bx
push cx
PUSH DI
PUSH SI
MOV CL,0ah
S2:MOV AX,[SI]
DIV CL
add ah,30h
MOV [BP],AH
MOV CX,[SI]
JCXZ RETURN2
ADD SI,2
INC BP
JMP S2
RETURN2:POP SI
POP DI
POP AX
POP BX
POP CX
RET
code ends
end start | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-12-24 10:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-10-30 10:47 |
此贴由 贴主 于 [ 2009-12-24 10:53 ] 结贴。 结贴原因:问题已解决 | | |
|