回 帖 发 新 帖 刷新版面

主题:[请教]程序调试通过但运行错误,请老师指点迷津

最近写了个简单程序,实现(A+B)*C的有符号数[+/-256之间]运算.可老是调试错误,不知道问题出在哪里,请各位老师指教..
 
代码如下:

DSEG SEGMENT
welcome db 'Welcome to use (A+B)*C program~!~',0dh,0ah,'$'
tishi1 db 'Please enter  number: A,B,C',0dh,0ah,'$'
ERROR1 DB 'number error,please enter again!!!   -256<A|B|C<+256',0dh,0ah,'$'
TEMP DB 0
BUF DW ?
DATA DB 3H DUP(?)
DSEG ENDS

SSEG SEGMENT STACK
DB 100 dup(?) 
SSEG ENDS

CSEG SEGMENT
ASSUME DS:DSEG,SS:SSEG,CS:CSEG
START:MOV AX,DSEG
      MOV DS,AX
     LEA DX,welcome
      MOV AH,09H
      INT 21H
      LEA DX,tishi1
      MOV AH,09H
      INT 21H
         
;SCAN ===================================================================
;输入部分老是不大对,虽然知道原理..
;1
;TEMP=1
;12
;TEMP=TEMP*10+2
;123
;TEMP=TEMP*10+3

R2 PROC NEAR
             MOV CX,4
       SHURU:MOV AH,1
             INT 21H

             CMP AL,0DH
             JZ NEXT
             CMP AL,2DH
             JZ SIGN
             JMP F1
    SIGN:MOV DL,AL
             MOV AH,2
             INT 21H
             JMP NEXT
        F2:CMP AL,30H
             JB ERROR
             CMP AL,39H
             JA ERROR

        F3:SUB AL,30H
             MOV DL,AL
             MOV AL,TEMP
             MOV BL,10
             MUL BL
             ADD TEMP,DL
             DEC CX
             JNZ SHURU
RET
R2 ENDP

NEXT:
        MOV AX,WORD PTR TEMP
        CALL R2
        MOV BX,WORD PTR TEMP               
        CALL R2
        MOV CX,WORD PTR TEMP
            
;print=====================================================================
       ADD AX,BX
       IMUL CX
       MOV BUF,AX
       MOV AX,DX

SHUCHU PROC NEAR
         MOV CX,4
      L1:MOV BL,10
         DIV BL
         PUSH AX
         MOV AH,0
         LOOP L1

         MOV CX,4
      L2:POP AX
         OR AH,30H
         MOV DL,AH
         MOV AH,2
         INT 21H
         LOOP L2
RET  
SHUCHU ENDP
        
         MOV AX,BUF     ;DS:AX→AX
         CALL SHUCHU
  

       
    EXIT:MOV AH,4CH
         INT 21H

CSEG ENDS
END START

回复列表 (共6个回复)

沙发

就没哥哥姐姐帮下啊...哭死了....都重新写了几次了,还是不知道问题出在什么地方,神啊.....

板凳


唐海全 说点话啊 就有人了

3 楼

请:
1。先哭上一会儿。
2。去练书法。
3。去练数学题。
4。再去向上帝祈祷。
7。再背汉语词典共25页,自己检查自己。
8。再仔细研究你的程序。

4 楼

对于这样的人最好先放摇滚乐,再放催眠曲。

5 楼

输入程序我自己又写了点..已经通过了...
DSEG SEGMENT
TISHI DB 'ERROR!!PLEASE ENTER NUMBERS AGAIN!',0AH,0DH,'$'
TEMP DB 0
KZ DB 3;外循环控制
HC DB 0AH,0DH,'$';回车换行
DATA DB 3 DUP(?)
DSEG ENDS

SSEG SEGMENT STACK
DB 100H DUP(?)
SSEG ENDS

CSEG SEGMENT
ASSUME DS:DSEG,SS:SSEG,CS:CSEG
START:MOV AX,DSEG
      MOV DS,AX

SCAN PROC NEAR
   F1:MOV CL,3
SCANF:MOV AH,01H
      INT 21H
    
      CMP AL,0DH
      JZ NEXT

       CMP AL,'-'
       JZ SIGN      
      
      CMP AL,30H
      JB ERROR

      CMP AL,39H
      JA ERROR

      AND AL,0FH             
      MOV DL,AL
      MOV AL,TEMP
      MOV BL,10
      MUL BL
      ADD TEMP,DL
      LOOP SCANF
      JMP NEXT
      SIGN:CALL SCAN
           NEG TEMP
           JMP F2
ERROR:LEA DX,TISHI
             MOV AH,9
             INT 21H
             JMP SCAN
         F2:RET
SCAN ENDP

NEXT:LEA DX,HC
      MOV AH,9
      INT 21H

      MOV DI,OFFSET DATA
      MOV AL,TEMP
      MOV [DI],AL
      INC DI
      DEC KZ
      JNZ F1 
 
 EXIT:MOV AH,4CH
      INT 21H
CSEG ENDS
END START

6 楼

这个程序已经有人问过了,看参阅:http://www.programfan.com/club/post-237144.html

我来回复

您尚未登录,请登录后再回复。点此登录或注册