ورود

View Full Version : مبتدی: رفع خطا



mortezamsp
سه شنبه 06 بهمن 1388, 19:03 عصر
با سلام.
اصلا نمیدونم چرا این برنامه وقتی به jne میرسه میره از اول شروع میکنه !!!! اصلا منطقی نیست .
ضمنا من از ویندوز 7 و سیستم 64 بیتی و emu8086 استفاده میکنم :


; multi-segment executable file template.

putpixel macro X ,Y
mov ax,100
sub ax,Y
;print
mov cx,x
mov dx,ax
mov ah,0ch
mov al,9
int 10h

mov ah,0
mov al,13h
int 10h

;pop ax

endm
;---------------------------------------------------------
initgraph macro
mov al,13h
mov ah,0
int 10h
endm

;================================================= ===============
data segment
; add your data here!
pkey db "press any key...$"
xP dw 1,2,3,4,5,6
yP dw 1,2,3,4,5,6
ends
;================================================= ===============
stack segment
dw 128 dup(0)
ends
;================================================= ===============
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
;================================================= ===============
; add your code here


prepareing :
initgraph
lea si,xP
lea di,yP
mov bx,0
mov bl,6
pp :
mov cx,[si]
mov dx,100
sub dx,[di]
;put pixel
mov ah,0ch
mov al,9
int 10h
;end loop
inc si
inc di
dec bx
cmp bl,0
jne pp



;================================================= ===============
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.


loop هم همینطوری میشه .

$ M 3 H R D A D $
سه شنبه 06 بهمن 1388, 19:25 عصر
عزیز فهمیدن برنامت ممکنه سخت نباشه اما اگه در موردش توضیح بدی و ار شیوه کد نوشتن و منطقت بگی راحت تر میشه کمک کرد

mortezamsp
سه شنبه 06 بهمن 1388, 19:50 عصر
شیوه و منطق ؟؟ :گریه:

خب این قرار یه مشت نقطه شامل x وy رو چاپ کنه . قرار محور x ها 100 تا بیاد پایین تا بشه محور مختصات . منطق نمیخواد که ! یه حلقه هست که شش تا نقطه رو میریزه تو si ,di و بعد چاپشون میکنه . فقط نمیدونم چرا با اولین jump میره از اول شروع میکنه .....:گیج:

$ M 3 H R D A D $
سه شنبه 06 بهمن 1388, 20:12 عصر
منم نمیدونم:تشویق:

tdkhakpur
سه شنبه 06 بهمن 1388, 20:25 عصر
شما یه کاری انجام بده و اسم label را از pp به pp1 تغیر بده ضمنا سگمنتهایتان ناقص ثبت شده.

$ M 3 H R D A D $
سه شنبه 06 بهمن 1388, 20:26 عصر
عزیز فقط همینو بگم که تو مقدار bl و چک میکنی که اگه صفر نبود بره بپره

bl که ازش کم نمیشه؟

tdkhakpur
سه شنبه 06 بهمن 1388, 20:51 عصر
عزیز فقط همینو بگم که تو مقدار bl و چک میکنی که اگه صفر نبود بره بپره
bl که ازش کم نمیشه؟
چرا کم نمیشه کد ایشان به این صورته


dec bx
cmp bl, 0

در ضمن برنامه ایراد ندارد فقط برای اینگونه کار ها از کامپایلر خط فرمان مانند masm6 استفاده کنید نه emu!

$ M 3 H R D A D $
سه شنبه 06 بهمن 1388, 21:09 عصر
پیری و هزار دردسر خطای چشم بود
فکر کردم از bh کم کرده:ناراحت:

$ M 3 H R D A D $
سه شنبه 06 بهمن 1388, 21:18 عصر
دست به دست هم دهیم برنامه نویسی خودمان را کنیم آباد...:تشویق:

اینم masm6
http://m2soft.persiangig.com/MASM%206.rar

mortezamsp
سه شنبه 06 بهمن 1388, 21:42 عصر
اجرا نمیشود !

برنامه هم به هیچ وجه درست اجرا نمیشود !

آیا ممکن است اشکال از emu باشد ؟ با ویندوز64بیت مشکل دارد ؟

$ M 3 H R D A D $
سه شنبه 06 بهمن 1388, 22:08 عصر
با این فایل اجرایی داد اجراش کردم
فول اسکرین شد اما با اینکه اینتراپت 16 داشت خودش برگشت

http://radmehr.obl.ir/new%20assembler.zip