PDA

View Full Version : سوال: مشکل در کار با emu80x86



vistacali
دوشنبه 09 خرداد 1390, 18:53 عصر
سلام دوستان من میخواستم این تکه کد را در ای ام یو اجرا کنم ولی با خطا مواجه شدم منم بار اولم هست که از این استفاده میکنم کمک کنید ممنون میشم






include ioh
cr equ 0dh
lf equ 0ah
stack segment stack
dw 100h Dup(?)
stake ends
data segment
number1 db?
number2?
prompt1 db 'enter firs number:',0
prompt2 db cr,lf,'enter secont number:',0
string db 40dup(?)
label1 db cr,lf,'the sum is '
sum db 6dup(?)
db cr,lf,0
data ends
code segment
assume cs:code,ds:data
start: mov ax,segdata
mov ds,ax
output prompt1
inputs string ,40
atoi string
mov number1,ax
output prompt2
inputs string,40
atoi string
mov number2,ax
mov ax,number1
add ax,number2
itoa sum,ax
output lable1
ouit mov al,0
mov ah,4ch
int 21h
code ends
end start

vistacali
دوشنبه 09 خرداد 1390, 18:56 عصر
70565

دوستان اینم عکس خطا

unknown.unforgiven
دوشنبه 09 خرداد 1390, 19:20 عصر
ioh دیگه چیه؟ خطا میگه این فایل هدر رو پیدا نمیتونه بکنه. اگه خود فایل ioh رو داری باید آدرس کامل بدی به برنامه خودشم تو '. مثل : 'C:\inc files\ioh.inc'
اما اگه فایل رو نداشته باشی نمیتونی اون رو ضمیمه کنی به برنامه (مثل همین الآن). مگر اینکه خودت فایل رو داشته باشی. emu8086 فقط یه فایل هدر داره اونم emu8086.inc هستش

vistacali
دوشنبه 09 خرداد 1390, 19:47 عصر
70566

ممنون از راهنمایی قبلی حالا چرا از خط 19 ایراد میگیره اینو چکار کنم ؟

xman_1365_x
دوشنبه 09 خرداد 1390, 19:50 عصر
اولا كه اون IO.h هست نه IOH
ثانيا شما نمي تونيد از IO.h در امولاتور استفاده كنيد چون خيلي از دستورات رو نميشناسه!
براي اين كار از tasm و يا masm استفاده كنيد.
اگر نياز به فايل هدرش داشتين قبلا در سايت گذاشتم جستجو كنيد پيداش ميكنيد
موفق باشي

unknown.unforgiven
دوشنبه 09 خرداد 1390, 19:53 عصر
برنامه رو نگاه کردم، یکی دو تا خطا نداره! تو این خط اومدی به ax، یه چیزی به اسم segdata رو ریختی، سوال اینه که segdata چیه؟ کد رو نگاه کنی میبینی که هیچ جایی چیزی به اسم segdata تعریف نشده! برنامه رو خودت نوشتی یا از جایی ورداشتی؟ اصلاً برنامه میخواد چی کار بکنه؟ اگه بگی شاید بتونم راهنماییت کنم که بتونی بنویسیش

xman_1365_x
دوشنبه 09 خرداد 1390, 19:56 عصر
خط19 چون اسم سگمنت داده رو اشتباه دادين درستش ميشه
start: mov ax,data
اما بازم اجرا نخواهد شد چون در سورس شما از دستورات اون هدر استفاده شده!
مثلا:
output prompt1
inputs string ,40
atoi string
كاري كه در كامنت قبلي گفتم انجام بدين
موفق باشي

vistacali
دوشنبه 09 خرداد 1390, 19:57 عصر
برنامه ی جمع دو تا عدد هست خودم نوشتنم اولین اره دارم مینویسم با این زبان اخه چند تا سوال امتحانی استاد داده گفته حلش کنید این اولی بود که با این همه ایراد رو به رو شد ممنون میشم کمک کنید

unknown.unforgiven
دوشنبه 09 خرداد 1390, 20:08 عصر
میتونی از فایل هدر emu8086.inc هم استفاده بکنی (من خودم از io.h تا به حال استفاده نکردم به همین خاطر نمیدونم چه ماکرو هایی داره و نمیتونم با استفاده از io.h بهت کمک کنم). تو emu8086.inc یه ماکرویی هست که عدد میگیره و تو cx ذخیرش میکنه، اسم ماکرو DEFINE_SCAN_NUM هستش. کافیه دو بار با استفاده از این ماکرو عدد رو از ورودی بخونی بعد با هم جمعشون بکنی و بعدش هم با استفاده از ماکروی DEFINE_PRINT_NUM اون رو چاپ بکنی (عددی که تو ax هست رو چاپ میکنه). جفت ماکرو هایی که گفتم تو emu8086.inc هستن، اگه خواستی ببینی چه جوری میشه ازشون استفاده کرد emu8086.inc رو باز کن و توضیحات مربوط به هر ماکرو رو بخون