علت ارور برنامه اسمبلی در emu8086

sahar78

New Member
سلام
وقتی این برنامه رو در نرم افزار emu8086 وارد میکنم
ارور میده بعضی از خطوطش مثلا خط 5
و کلا به مرحله ی کامپایل نمی رسه (چون میخوام ازش فایل هگز استخراج کنم )
ممنون میشم راهنماییم کنید برنامه کجاهاش ایراد داره:rose:








RS EQU P2.7
RW EQU P2.6
E EQU P2.5
ORG 000H
MOV DPTR,'#'LUT
SETB P3.5
CLR P2.0
MOV TMOD,'#'00100001B
MOV TL1,'#'00D
ACALL DINT
ACALL TEXT1
MAIN: MOV R1,'#'8D
SETB P3.5
CLR P3.5
ACALL DELAY1
SETB P3.5
HERE:JB P3.5,HERE
HERE1:JNB P3.5,HERE1
HERE2:JB P3.5,HERE2
LOOP:JNB P3.5,LOOP
RL A
MOV R0,A
SETB TR1
HERE4:JB P3.5,HERE4
CLR TR1
MOV A,TL1
SUBB A,'#'50D
MOV A,R0
JB PSW.7, NEXT
SETB ACC.0
SJMP ESC
NEXT:CLR ACC.0
ESC: MOV TL1,'#'00D
CLR PSW.7
DJNZ R1,LOOP
ACALL DINT
ACALL TEXT1
ACALL LINE2
ACALL TEXT2
ACALL HMDTY
ACALL CHECK
ACALL DELAY2
LJMP MAIN




DELAY1: MOV TH0,'#'0B9H
MOV TL0,'#'0B0H
SETB TR0
HERE5: JNB TF0,HERE5
CLR TR0
CLR TF0
RET


DELAY2:MOV R1,'#'112D
BACK:ACALL DELAY1
DJNZ R1,BACK
RET

CHECK:MOV A,R0
MOV B,'#'65D
SUBB A,B
JB PSW.7,NEXT1
ACALL TEXT3
SETB P2.0
SJMP ESC1
NEXT1:ACALL TEXT4
CLR P2.0
ESC1:CLR PSW.7
RET

CMD: MOV P0,A
CLR RS
CLR RW
SETB E
CLR E
ACALL DELAY
RET


DISPLAY:MOV P0,A
SETB RS
CLR RW
SETB E
CLR E
ACALL DELAY
RET

HMDTY:MOV A,R0
MOV B,'#'10D
DIV AB
MOV R2,B
MOV B,'#'10D
DIV AB
ACALL ASCII
ACALL DISPLAY
MOV A,B
ACALL ASCII
ACALL DISPLAY
MOV A,R2
ACALL ASCII
ACALL DISPLAY
MOV A,'#'"%"
ACALL DISPLAY
RET


TEXT1: MOV A,'#'"H"
ACALL DISPLAY
MOV A,'#'"y"
ACALL DISPLAY
MOV A,'#'"g"
ACALL DISPLAY
MOV A,'#'"r"
ACALL DISPLAY
MOV A,'#'"o"
ACALL DISPLAY
MOV A,'#'"m"
ACALL DISPLAY
MOV A,'#'"e"
ACALL DISPLAY
MOV A,'#'"t"
ACALL DISPLAY
MOV A,'#'"e"
ACALL DISPLAY
MOV A,'#'"r"
ACALL DISPLAY
RET

TEXT2: MOV A,'#'"R"
ACALL DISPLAY
MOV A,'#'"H"
ACALL DISPLAY
MOV A,'#'" "
ACALL DISPLAY
MOV A,'#'"="
ACALL DISPLAY
MOV A,'#'" "
ACALL DISPLAY
RET
TEXT3: MOV A,'#'" "
ACALL DISPLAY
MOV A,'#'" "
ACALL DISPLAY
MOV A,'#'"O"
ACALL DISPLAY
MOV A,'#'"N"
ACALL DISPLAY
RET

TEXT4:MOV A,'#'" "
ACALL DISPLAY
MOV A,'#'"O"
ACALL DISPLAY
MOV A,'#'"F"
ACALL DISPLAY
MOV A,'#'"F"
ACALL DISPLAY
RET

DINT:MOV A,'#'0CH
ACALL CMD
MOV A,'#'01H
ACALL CMD
MOV A,'#'06H
ACALL CMD
MOV A,'#'83H
ACALL CMD
MOV A,'#'3CH
ACALL CMD
RET

LINE2:MOV A,'#'0C0H
ACALL CMD
RET


DELAY: CLR E
CLR RS
SETB RW
MOV P0,'#'0FFH
SETB E
MOV A,P0
JB ACC.7,DELAY
CLR E
CLR RW
RET


ASCII: MOVC A,@A+DPTR
RET

LUT: DB 48D
DB 49D
DB 50D
DB 51D
DB 52D
DB 53D
DB 54D
DB 55D
DB 56D
DB 57D
END​
 

the_king

مدیرکل انجمن
سلام
وقتی این برنامه رو در نرم افزار emu8086 وارد میکنم
ارور میده بعضی از خطوطش مثلا خط 5
و کلا به مرحله ی کامپایل نمی رسه (چون میخوام ازش فایل هگز استخراج کنم )
ممنون میشم راهنماییم کنید برنامه کجاهاش ایراد داره:rose:








RS EQU P2.7
RW EQU P2.6
E EQU P2.5
ORG 000H
MOV DPTR,'#'LUT
SETB P3.5
CLR P2.0
MOV TMOD,'#'00100001B
MOV TL1,'#'00D
ACALL DINT
ACALL TEXT1
MAIN: MOV R1,'#'8D
SETB P3.5
CLR P3.5
ACALL DELAY1
SETB P3.5
HERE:JB P3.5,HERE
HERE1:JNB P3.5,HERE1
HERE2:JB P3.5,HERE2
LOOP:JNB P3.5,LOOP
RL A
MOV R0,A
SETB TR1
HERE4:JB P3.5,HERE4
CLR TR1
MOV A,TL1
SUBB A,'#'50D
MOV A,R0
JB PSW.7, NEXT
SETB ACC.0
SJMP ESC
NEXT:CLR ACC.0
ESC: MOV TL1,'#'00D
CLR PSW.7
DJNZ R1,LOOP
ACALL DINT
ACALL TEXT1
ACALL LINE2
ACALL TEXT2
ACALL HMDTY
ACALL CHECK
ACALL DELAY2
LJMP MAIN




DELAY1: MOV TH0,'#'0B9H
MOV TL0,'#'0B0H
SETB TR0
HERE5: JNB TF0,HERE5
CLR TR0
CLR TF0
RET


DELAY2:MOV R1,'#'112D
BACK:ACALL DELAY1
DJNZ R1,BACK
RET

CHECK:MOV A,R0
MOV B,'#'65D
SUBB A,B
JB PSW.7,NEXT1
ACALL TEXT3
SETB P2.0
SJMP ESC1
NEXT1:ACALL TEXT4
CLR P2.0
ESC1:CLR PSW.7
RET

CMD: MOV P0,A
CLR RS
CLR RW
SETB E
CLR E
ACALL DELAY
RET


DISPLAY:MOV P0,A
SETB RS
CLR RW
SETB E
CLR E
ACALL DELAY
RET

HMDTY:MOV A,R0
MOV B,'#'10D
DIV AB
MOV R2,B
MOV B,'#'10D
DIV AB
ACALL ASCII
ACALL DISPLAY
MOV A,B
ACALL ASCII
ACALL DISPLAY
MOV A,R2
ACALL ASCII
ACALL DISPLAY
MOV A,'#'"%"
ACALL DISPLAY
RET


TEXT1: MOV A,'#'"H"
ACALL DISPLAY
MOV A,'#'"y"
ACALL DISPLAY
MOV A,'#'"g"
ACALL DISPLAY
MOV A,'#'"r"
ACALL DISPLAY
MOV A,'#'"o"
ACALL DISPLAY
MOV A,'#'"m"
ACALL DISPLAY
MOV A,'#'"e"
ACALL DISPLAY
MOV A,'#'"t"
ACALL DISPLAY
MOV A,'#'"e"
ACALL DISPLAY
MOV A,'#'"r"
ACALL DISPLAY
RET

TEXT2: MOV A,'#'"R"
ACALL DISPLAY
MOV A,'#'"H"
ACALL DISPLAY
MOV A,'#'" "
ACALL DISPLAY
MOV A,'#'"="
ACALL DISPLAY
MOV A,'#'" "
ACALL DISPLAY
RET
TEXT3: MOV A,'#'" "
ACALL DISPLAY
MOV A,'#'" "
ACALL DISPLAY
MOV A,'#'"O"
ACALL DISPLAY
MOV A,'#'"N"
ACALL DISPLAY
RET

TEXT4:MOV A,'#'" "
ACALL DISPLAY
MOV A,'#'"O"
ACALL DISPLAY
MOV A,'#'"F"
ACALL DISPLAY
MOV A,'#'"F"
ACALL DISPLAY
RET

DINT:MOV A,'#'0CH
ACALL CMD
MOV A,'#'01H
ACALL CMD
MOV A,'#'06H
ACALL CMD
MOV A,'#'83H
ACALL CMD
MOV A,'#'3CH
ACALL CMD
RET

LINE2:MOV A,'#'0C0H
ACALL CMD
RET


DELAY: CLR E
CLR RS
SETB RW
MOV P0,'#'0FFH
SETB E
MOV A,P0
JB ACC.7,DELAY
CLR E
CLR RW
RET


ASCII: MOVC A,@A+DPTR
RET

LUT: DB 48D
DB 49D
DB 50D
DB 51D
DB 52D
DB 53D
DB 54D
DB 55D
DB 56D
DB 57D
END​
هر پردازنده ای مجموعه دستورات خودش رو داره و کدی که برای یک پردازنده نوشته میشه مناسب پردازنده ای که اون دستورات رو نداره نیست.
برای همین اسمبلر ها و شبیه ساز های پردازنده های متفاوت با هم فرق دارند، کدشون، دستورات شون، قابلیت هاشون متفاوت هستند.
مثلا در پردازنده 8051 این مجموعه دستورات هست :
و در پردازنده 8086 این مجموعه دستورات :
و طبعا شبیه ساز 8086 دستوراتی که مختص پردازنده 8051 بوده و در 8086 وجود نداره رو نمیتونه ترجمه کنه و خطا میده که این دستور رو نمی شناسم.
برای همین اینکه نتوانید کد مناسب پردازنده 8051 رو در شبیه ساز 8086 اجرا کنید عادی است. باید شبیه سازی رو انتخاب کنید که مناسب اون کد و پردازنده است.
 

sahar78

New Member
هر پردازنده ای مجموعه دستورات خودش رو داره و کدی که برای یک پردازنده نوشته میشه مناسب پردازنده ای که اون دستورات رو نداره نیست.
برای همین اسمبلر ها و شبیه ساز های پردازنده های متفاوت با هم فرق دارند، کدشون، دستورات شون، قابلیت هاشون متفاوت هستند.
مثلا در پردازنده 8051 این مجموعه دستورات هست :
و در پردازنده 8086 این مجموعه دستورات :
و طبعا شبیه ساز 8086 دستوراتی که مختص پردازنده 8051 بوده و در 8086 وجود نداره رو نمیتونه ترجمه کنه و خطا میده که این دستور رو نمی شناسم.
برای همین اینکه نتوانید کد مناسب پردازنده 8051 رو در شبیه ساز 8086 اجرا کنید عادی است. باید شبیه سازی رو انتخاب کنید که مناسب اون کد و پردازنده است.
مرسی از راهنمایی اتون
شما اسمبلر برای 8051 میشناسید ؟
 

جدیدترین ارسال ها

بالا