برنامتون مشکلی نداره. اون پیام هم اررور نیست. بعد از این اینتراپت ها چنین پیامی رو بهتون میده. داره میگه کنترل به سیستم عامل برگشت داده شد و این معادل همون return 0 تو سی برای main هست. یعنی برنامه به انتها رسیده.
پس برنامتون مشکلی نداره. ولی توصیه میکنم برنامتون رو مرتب تر بنویسید. شما پشته ( Stack ) و بخش های دیگه رو ناخوانا و البته همش رو وابسته به سیستم اسمبلر کردید در صورتی که باید مرتب تر نوشته بشه تا با انواع اسمبلر ها کار کنه. من مرتبش کردم به این صورت : ( جلو ASSUME نوشتید CD که درستش CS است : CODE SEGMENT )
ضمنا Procedure تون رو هم حذف کردم چون برای شاخه اصلی لزومی نداشت. ضمنا بهتره برای سگمنت هاتون، برای استک از استک و برای بقیه از PUBLIC استفاده کنید. البته اینجا چون من پروسیجر رو حذف کردم عملا استک کاربردی نداره ولی بگو باشه اشکال نداره.
DTSEG SEGMENT PARA PUBLIC 'DATA'
NUMBER1 DB 52H
NUMBER2 DB 29H
SUM DB ?
DTSEG ENDS
CDSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME: CS:CDSEG,DS:DTSEG,SS:STSEG
MAIN:
MOV AX,DTSEG
MOV DS,AX
MOV AL,NUMBER1
MOV BL,NUMBER2
ADD AL,BL
MOV SUM,AL
MOV AH,04CH
INT 21H
CDSEG ENDS
STSEG SEGMENT PARA STACK 'STACK'
DB 64 DUP(?)
STSEG ENDS
END MAIN