. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  求高手指教(课程设计1) 总是显示除法溢出  [已解决] 回复[ 2次 ]   点击[ 466次 ]  
nono
[帖 主]   [ 发表时间: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
nono
[第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
nono
[第2楼]   [ 回复时间:2009-12-24 10:53 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-10-30 10:47
此贴由 贴主 于 [ 2009-12-24 10:53 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved