PDA

View Full Version : سوال: اشکال این کد !!



hastel
جمعه 22 دی 1391, 21:54 عصر
سلام یه برنامه نوشتم که یه رشته بگیره تبدیل به عدد کنه ولی نمیدونم اشکال کار کجاست که میوفته توی لوپ و اصلا عدد را چاپ نمیکنه .... میشه بگید مشکلم چیه؟؟؟


;
SSEG SEGMENT STACK
DB 128 DUP(0)
SSEG ENDS
;
;
DSEG SEGMENT
STRR LABEL BYTE
MAX DB 8
LEN DB ?
BUFFER DB 8 DUP(' ')
MSG1 DB 'Please enter a 7 digits number: ', '$'
MSG2 DB 'ERROR! Overflow, this number is greater than 65535.', '$'
MSG3 DB 'Do you want to continue? (Y=Yes, N=No): ', '$'
STR1 DB 32 DUP(0)
A DW ?
B DW ?
FACTOR2 DW 10
DSEG ENDS
;
;
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START PROC FAR
MOV AX, DSEG
MOV DS, AX
;
;clear
REPEAT: MOV AH, 07h
MOV AL, 00h
MOV BH, 07h
MOV CX, 0000h
MOV DX, 184Fh
INT 10h
;
;
MOV AH, 2h
MOV BH, 00h
MOV DH, 0
MOV Dl, 0
INT 10h
;
;
MOV AH, 09h
LEA DX, MSG1
INT 21h
;
;
MOV AH, 0Ah
LEA DX, STRR
INT 21h
;
;
MOV AX, 0
MOV DX, 0
MOV CL, LEN
XOR CH, CH ;MOV CH, 0
LEA SI, BUFFER

P1: MOV BL, [SI]
XOR BH, BH ;MOV BH, 0
SUB BX, '0' ;'5' - '0' = 5
MUL FACTOR2
CMP DX, 0
JNE ERR1
ADD AX, BX
JB ERR1
INC SI
LOOP P1

MOV A, AX
JMP ASK
;
; ERORR
ERR1: MOV AH, 2h
MOV DL, 13
INT 21h
MOV AH, 2h
MOV DL, 10
INT 21h

MOV AH, 09h
LEA DX, MSG2
INT 21h
;
;
;Asking the user if he wants to continue or not
;
ASK: MOV AH, 2h
MOV DL, 13
INT 21h
MOV AH, 2h
MOV DL, 10
INT 21h

MOV AH, 09h
LEA DX, MSG3
INT 21h
WAIT1: MOV AH, 0h
INT 16h
CMP AL, 89
JE Y1
CMP AL, 121
JE Y1
CMP AL, 78
JE N1
CMP AL, 110
JE N1
JMP WAIT1
Y1: MOV AL, 'Y'
MOV AH, 0Eh
INT 10h
JMP REPEAT
N1: MOV AL, 'N'
MOV AH, 0Eh
INT 10h
;
;
MOV AH, 01h
INT 21h
MOV AX, 4C00h
INT 21h
START ENDP
CSEG ENDS
END START
END

ehemati
شنبه 23 دی 1391, 17:05 عصر
کدتون درسته مشکلی نداره !!

hastel
شنبه 23 دی 1391, 21:30 عصر
پس مشکلش چیه؟؟
دوستان میشه یه لطفی بکیند بگید؟