DSEG SEGMENT
BUF1 DB 9H
ACTLEN1 DB ?
CHARS1 DB 9H DUP(?)
BUF2 DB 9H
ACTLEN2 DB ?
CHARS2 DB 9H DUP(?)
STRING DB 'warning!Sum overflows$'
SUM DB 9 DUP(?)
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
MOV AX,DSEG
MOV DS,AX
START:
MOV AH,0AH
MOV DX,OFFSET BUF1
INT 21H
MOV SI,OFFSET CHARS1
CALL StrToInt
MOV SI,AX
MOV AH,02H
MOV DX,20H
INT 21H
MOV AH,0AH
MOV DX,OFFSET BUF2
INT 21H
MOV SI,OFFSET CHARS2
CALL StrToInt
ADD AX,SI
COMP:
CMP AX,128
JG SHOW
CMP AX,-128
JL SHOW
MOV AH,02H
MOV DX,20H
INT 21H
JMP END
SHOW:
MOV AH,9H
MOV DX,OFFSET STRING
INT 21H
JMP COMP
StrToInt:
xor ax, ax
xor cx, cx
StrToIntLoop:
mov BX,[SI]
INC SI
CMP BX,'-'
JE NEGATIVE
cmp BX,'$'
je StrToIntDone
sub BX,'0'
MOV CX,10
imul CX
add AX,BX
jmp StrToIntLoop
NEGATIVE:
cmp BX, '$'
je StrToIntDone
sub BX,'0'
MOV CX,10
imul CX
add AX,BX
MOV CX,-1
IMUL CX
jmp StrToIntLoop
StrToIntDone:
ret
END:
HlT