ورود

View Full Version : سوال: یه خطا در لینک کردن (No link segment)



JaVa
یک شنبه 10 اردیبهشت 1391, 21:51 عصر
سلام....

من یه برنامه ساده نوشتم که یه مختصات میده و یه پیام رو چاپ میکنه .توی emu8086 خوب کار میکنه ولی وقتی توی masm میخوام اجرا کنم این پیام رو میده.!

86473

کد :
stksg segment
dw 32 dup(?)
stksg ends
;کمک
datsg segment
msg db "This is a message.","$"
datsg ends

codsg segment
main proc far
assume ss:stksg,cs:codsg,ds:datsg

mov ax,datsg
mov ds,ax

;ÇäÊÞÇá ã˜Çä äãÇ
mov ah,02h
mov dh,0
mov dl,0
mov bh,0
int 10h

;Ç íÇã
mov ah,09h
mov dx,offset msg
int 21h

main endp
codsg ends
end main

JaVa
یک شنبه 10 اردیبهشت 1391, 22:25 عصر
وقفه خاتمه برنامه و انتقال کنترل به سیستم عامل رو ننوشته بودم. که این ها بودن.

mov ax,4c00h
int 21h

چرا Severs Error خطایی رو نگرفت ؟؟؟؟؟؟؟؟؟؟؟؟؟

MostafaMohammadi
دوشنبه 11 اردیبهشت 1391, 15:14 عصر
به نظر میرسه با وجود این پیغام خطا، فایل اجرایی برنامه ایجاد میشه و مشکلی خاصی نیست، ولی مشکل اینه که Microsoft Segmented-Executable Linker نمیتونه سگمنت Stack رو پیدا کنه. باید کلمه STACK رو در جایی که داشتی سگمنت Stack ات رو تعریف می کردی، می نوشتی.
یعنی این قسمت از کد ات رو:

stksg segment
dw 32 dup(?)
stksg ends

به این شکل تغییر بدی:

stksg segment STACK
dw 32 dup(?)
stksg ends


چرا Severs Error خطایی رو نگرفت ؟؟؟؟؟؟؟؟؟؟؟؟؟
اینکه ابتدا به ساکن چرا کامپایلر خطایی رو ازت نگرفته رو من هم متوجه نمی شم، ولی بر خلاف بقیه سگمنت ها، نوشتن کلمه STACK در جایی که سگمنت Stack رو تعریف می کنی اجباریه.