پرسش و پاسخ در برنامه نویسی اسمبلی

JNBBI69

عضو جدید
ببخشید آقای صیاد من نمیتونم تو ویندوز 7 برنامه اسمبلی رو دیباگ کنم توی فروم هم سرچ کردم ولی چیزی دستگیرم نشد میشه یه کمکی کنید ؟مرسی:w47:
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
ببخشید آقای صیاد من نمیتونم تو ویندوز 7 برنامه اسمبلی رو دیباگ کنم توی فروم هم سرچ کردم ولی چیزی دستگیرم نشد میشه یه کمکی کنید ؟مرسی:w47:
توی تاپیک "آموزش" و پست های ابتدایی دنبال EMU8086 بگردید. تمامی Partها رو دانلود کنید و برنامه رو به همراه سریالش نصب کنید. به کمک این برنامه می تونید برنامه های اسمبلی رو شبیه سازی کنید!
 

دانشجوي كامپيوتر

دستیار مدیر تالار هنر
کاربر ممتاز
با سلام و خسته نباشید ...
می خواستم فرق ماکرو و روال رو در اسمبلی بدونم ...
با تشکر .
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
با سلام و خسته نباشید ...
می خواستم فرق ماکرو و روال رو در اسمبلی بدونم ...
با تشکر .

با سلام،
ماکرو قطعه کدیه که ابتدای برنامه یا یه فایل دیگه برای عملی خاص می نویسیم ولی در هنگام اسمبل کردن این کدها با فراخوانی هاشون تو برنامه جایگزین می شن، یعنی درواقع فقط برای راحتی کاربر هستن!
اما زیربرنامه ها دارای شروع و پایان هستن و در زمان اجرا فراخوانی می شن. PC به ابتدای روال می ره اجراش کامل می شه و به محل فراخوانی بازگشت می کنه!
 

khaledd

عضو جدید
سلام..چندتا سوال دارم جواب فوری فوری میخوام جوابش واسم ضروریه مرسی....

1.با استفاده از روتینهای bios به زبان اسمبلی برنامه ای بنویسید که:
الف:مکان نمای موس به یک کاراکتر خاص یا شکل خاص نمایش داده شود
ب:به طوری که رنگ اشاره گر و زمینه ان متفاوت باشد
ج:هنگام استقرار در نقطه ی جاری نمایشگر اشاره گر برنگ نقطه جاری تبدیل شود

2.با استفاده از روتین های bios برنامه ای بنویسیدبه طوریکه وضعیت چاپگر متصل به پورت موازی را گزارش دهد.هم چنین امکان یک فایل متنی و انتقال ان روی چاپگر امکان پذیر باشد

3.برنامه ای با استفاده از روتینهای bios بنویسید بطوری که با دسترسی مستقیم به حافظه امکان مدیریت 2پنجره بر روی صفحه نمایش ایجاد کند

4.عملکرد یک ویروس را تحلیل کرده و برنامه ای بنویسید که قابلیت اسکن کردن یک فایل را داشته باشد و پس از یافتن علایم ویروس فایل را پاکسازی کند..
یکی نیست جواب بده؟
 

GraphX

عضو جدید
سلام مىخواستم بدونم معادل دستور neg و inc با استفاده از add,sub و چيه ؟
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
سلام مىخواستم بدونم معادل دستور neg و inc با استفاده از add,sub و چيه ؟
با سلام،
دستور dec یکی کم می کنه و دستور inc یکی زیاد!! پس معادل شون می شه:
add ax,1
sub ax,1
به جای ax هر چیز دیگه ای می شه باشه!
اما به جای دستور neg که برای منفی کردنه می شه گفت:
mov ax,0
sub ax,bx
mov bx,ax
که bx اونیه که می خوایم منفی بشه، اما سه تا دستور شد، پس:
not bx
inc bx
همون طور که می دونید برای منفی کردن عدد، مکمل اون رو محاسبه می کنن (تبدیل صفرها به یک ها و برعکس) و یکی بهش اضافه می کنن!
 
آخرین ویرایش:

GraphX

عضو جدید
با سلام،
دستور neg یکی کم می کنه و دستور inc یکی زیاد!! پس معادل شون می شه:
add ax,1
sub ax,1
به جای ax هر چیز دیگه ای می شه باشه!


سلام
ممنون بابت پاسختون
تو جزوه ای که من دارم دستور neg رو نوشته واسه منفی کردن به کار برده میشه
 

GraphX

عضو جدید
با سلام،
دستور dec یکی کم می کنه و دستور inc یکی زیاد!! پس معادل شون می شه:
add ax,1
sub ax,1
به جای ax هر چیز دیگه ای می شه باشه!
اما به جای دستور neg که برای منفی کردنه می شه گفت:
mov ax,0
sub ax,bx
mov bx,ax
که bx اونیه که می خوایم منفی بشه، اما سه تا دستور شد، پس:
not bx
inc bx
همون طور که می دونید برای منفی کردن عدد، مکمل اون رو محاسبه می کنن (تبدیل صفرها به یک ها و برعکس) و یکی بهش اضافه می کنن!


ممنون از لطفتون

تو کد زیر خط 47 و 48 چطوری باید ادیت بشه که برنامه به درستی کار کنه ؟


کد:
; program to input values for x, y and z; and evaluate the expression - (x + y - 2z + 1)
; author:  R. Detmer
; date:  revised 8/97


.386
.MODEL FLAT


ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD


include io.h            ; header file for input/output


cr      equ     0dh     ; carriage return character
Lf      equ     0ah     ; line feed


.STACK  4096             ; reserve 4096-byte stack


.DATA                   ; reserve storage for data
Prompt1     BYTE   "This program will evaluate the expression",cr,Lf,Lf
            BYTE   "    - (x + y - 2z + 1)",cr,Lf,Lf
            BYTE   "for your choice of integer values.",cr,Lf,Lf
            BYTE   "Enter value for x:  ",0
Prompt2     BYTE   "Enter value for y:  ",0
Prompt3     BYTE   "Enter value for z:  ",0
Value       BYTE   16 DUP (?)
Answer      BYTE   cr,Lf,"The result is "
Result      BYTE   6 DUP (?)
            BYTE   cr,Lf,0


.CODE                           ; start of main program code
_start:
            output Prompt1          ; prompt for x
            input  Value,16         ; read ASCII characters
            atoi   Value            ; convert to integer
            mov    dx,ax            ; x


            output Prompt2          ; prompt for y
            input  Value,16         ; read ASCII characters
            atoi   Value            ; convert to integer
            add    dx,ax            ; x + y


            output Prompt3          ; prompt for z
            input  Value,16         ; read ASCII characters
            atoi   Value            ; convert to integer
            add    ax,ax            ; 2*z
            sub    dx,ax            ; x + y - 2*z
            inc    dx               ; x + y - 2*z + 1
            neg    dx               ; - (x + y - 2*z + 1)


            itoa   Result,dx        ; convert to ASCII characters
            output Answer           ; output label and result


            INVOKE ExitProcess, 0   ; exit with return code 0


PUBLIC _start                       ; make entry point public
END                                 ; end of source code
 
آخرین ویرایش:

sayyad84

متخصص زبان Assembly
کاربر ممتاز
ممنون از لطفتون

تو کد زیر خط 47 و 48 چطوری باید ادیت بشه که برنامه به درستی کار کنه ؟
خواهش می کنم!
دقیقاً می شه کدوم خطوط؟ چون من توی ادیتور کپی کردم این خطوط مشکلی نداشتن! فایل io.h رو دارید دیگه؟
 

GraphX

عضو جدید
خواهش می کنم!
دقیقاً می شه کدوم خطوط؟ چون من توی ادیتور کپی کردم این خطوط مشکلی نداشتن! فایل io.h رو دارید دیگه؟


این دو خط دوست عزیز
استاد گفتن که کد برنامه رو طوری تغییر بدیم که از دستور inc و neg استفاده نشده باشه
inc dx
neg dx
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
این دو خط دوست عزیز
استاد گفتن که کد برنامه رو طوری تغییر بدیم که از دستور inc و neg استفاده نشده باشه
inc dx
neg dx
خب با دستوراتی که نوشتم جایگزین کنید!! به جای inc dx باید بنویسید add dx,1 و به جای neg dx بنویسید not dx و add dx,1!
 

zahra1372

عضو جدید
سلام:)
چرا هر عدد 1 بایتی از 0 تا 255ه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
استادمون هم نمی دونست!
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
سلام:)
چرا هر عدد 1 بایتی از 0 تا 255ه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
استادمون هم نمی دونست!
با سلام،
استادتون احتمالاً سرکار گذاشته شما رو!!
هر بیت تنها دو مقدار 0 و 1 داره و هر بایت فقط 8 بیت داره پس کمترین مقدار ممکن زمانیه که همه ی بیت ها صفر باشن و بیشتر مقدار زمانی که همه یک باشن!
پس کمترین مقدار 0 می شه و بیشترین مقدار یکی کمتر از 2 به توان 8 (تعداد بیت ها) که می شه 256 منهای یک که برابر با 255 خواهد بود! اگه درک مقدار حداکثر براتون مشکله با دو بیت برای خودتون مثال بزنید. برای دو بیت، مقدار حداکثر 3 خواهد بود که برابر 2 به توان 2 منهای یک هستش!
 

zahra1372

عضو جدید
فهمیدم...
چون [SUB]2[/SUB](11111111) برابره با 255 در مبنای 10
و
[SUB]2[/SUB](00000000) برابره با 0 در مبنای 10

استادمون با اینکه خیلی شوخه اما خیلی جدی گفت: "نپرسید که نمیدونم"!!!!
مرســــی:smile:
 

zahra1372

عضو جدید
سلام
برنامه ی مجموع ارقام عدد رو با شیفت دادن هم میشه نوشت؟؟ ارتباطی بینشون هست؟
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
سلام
برنامه ی مجموع ارقام عدد رو با شیفت دادن هم میشه نوشت؟؟ ارتباطی بینشون هست؟

با سلام،
هر عددی به صورت بیتی توی ثبات ذخیره می شه نه رقم به رقم، پس نمی شه با شیفت دادن نمی شه این کار رو کرد. اگه یه ثبات رو شیفت بدید بسته به شیفت به چپ یا راست، در دو ضرب یا بر دو تقسیم می شه و ربطی به ارقامش نداره!
اگه شیفت بیتی نباشه و به صورت دهدهی شیفت بده یعنی هر بار یک رقم عدد رو بده، می شه این کار رو کرد!
 

amirali A2

عضو جدید
اشکان

اشکان

سلام
ازتون خواهشی دارم/تورو خدا کمکم کنید
بخدا مدتی هست که حال خوشی ندارم:cry:
من برای درس اسمبلی باید برامه ای بنویسم
برنامه من اینه:
برنامه ای نوشته که اسم خود را نمایش دهد و در ادامه یک آرایه 10تایی از اعداد 1تا9 را گرفته و مرتب کند و چاپ کند
data _ array DB 9,8,1,0,2,5,7,6,3,5,7,3
ازتون خواهش میکنم کمکم کنید بخدا 10نمره داره
:cry::cry::cry:
من تا جمعه انو میخوام:cry::cry::cry:

این ایمیل منه:
ashkan.hsn@gmail.com
 

perspoli

عضو جدید
سلام خسته نباشيد من يه برنامه به زبان اسمبلي ميخواستم كه نام منو بنويسه سمت چپ پايين بنويسه با پس زمينه سياه و متن سفيد با تشكر پاسخ رو به ايميلم بفرس باتشكر
ايميل:e.khorram77@yahoo.com
 

zahra1372

عضو جدید
سلام
میشه لطفاً کد یه ماکرویی که 4 تا نقطه بگیره یه خط رسم کنه رو برام بنویسین؟؟:(
 

shila1

عضو جدید
سلام تازه ثبت نام کردم یه سوال در مورد اسمبلی داشنم
 

mohammad.ta

عضو جدید
INIT: LD HL,RAM
LD C,4
INIT LD (HL),00H
INC HL
DEC C
JR NZ,INIT1
LD A,0EEH
LD (POINT),A
LD A,0
LD (POS),A
ORG 66H
DISPLAY: PUSH AF
PUSH HL
LD A,(POINT)
OUT (PORTB),A
RLC
LD (POINT),A
LD A,(POS)
LD HL,RAM
LD L,A
LD A,HL
OUT (PORTA),A
LD A,L
INC A
LD (POS),A
SUB A,4
JR NZ,DISPLAY1
LD (POS),A
DISPLAY1: POP HL
POP AF
RET
ORG 2000H
RAM: DS 4
میتونی این کدروواسم تصحیحش کنی واقعا ضروریه 3روزه لازمش دارم
 

mohammad.ta

عضو جدید
سلام این کدمن قسمت های پرانتزدارش خطامیده میشه برطرفش کنی؟
INIT: LD HL,RAM
LD C,4
INIT LD (HL),00H
INC HL
DEC C
JR NZ,INIT1
LD A,0EEH
LD (POINT),A
LD A,0
LD (POS),A
ORG 66H
DISPLAY: PUSH AF
PUSH HL
LD A,(POINT)
OUT (PORTB),A
RLC
LD (POINT),A
LD A,(POS)
LD HL,RAM
LD L,A
LD A,HL
OUT (PORTA),A
LD A,L
INC A
LD (POS),A
SUB A,4
JR NZ,DISPLAY1
LD (POS),A
DISPLAY1: POP HL
POP AF
RET
ORG 2000H
RAM: DS 4
 

tito11

عضو جدید
سلام دوستان
یه سوالی داشتم از اسمبلی . چجوری مشه یه شکل مثله این رو کشید؟خواهش می کنم کمکم کنید
Capture.JPG
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
سلام دوستان
یه سوالی داشتم از اسمبلی . چجوری مشه یه شکل مثله این رو کشید؟خواهش می کنم کمکم کنید
مشاهده پیوست 137324
با سلام،
راه های زیادی برای این کار هست! به عنوان مثال می تونید از سرویس مربوط به انتقال مکان نما و چاپ کاراکتر استفاده کنید. شما به دو شمارنده برای دو کاراکتر مختلف تون نیاز دارید که تعداد یکی زیاد و دیگری کم می شه. تعداد - در ابتدا 0 و * در ابتدا 4 هستش و در ستون های 0 و 6 به تعداد این شمارنده ها کاراکتر چاپ می شه! حالا تعداد تنظیم می شه و توی ستون های 1 و 5 چاپ صورت می گیره و الی آخر تا به 3 برسه! شروط رو باید طوری تنظیم کنید که در ستون میانی یه بار چاپ صورت بگیره، ستون هایی که باید چاپ بشن هر بار خودبه خود تنظیم بشه و ...
 

nazaninfatemeh

عضو جدید
جییییییییییییییییییییییییییغ
هی وای من این زبان اسمبلی 32 بیتی چرا انقده زشته ؟
استادمون خودشم نمیفهمه داره چی میگه
کمکم کنید ترو خدا نمیدونم چیکار کنم برنامشو نصب کردم ولی بلد نیستم اجرا کنم همش ارور میده بهم:cry:
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
جییییییییییییییییییییییییییغ
هی وای من این زبان اسمبلی 32 بیتی چرا انقده زشته ؟
استادمون خودشم نمیفهمه داره چی میگه
کمکم کنید ترو خدا نمیدونم چیکار کنم برنامشو نصب کردم ولی بلد نیستم اجرا کنم همش ارور میده بهم:cry:
با سلام،
برنامه ی چی؟ EMU8086 که توی هر ویندوزی نصب می شه و MASM هم که اصلاً نیاز به نصب نداره! قراره با چی کار کنید؟
 

Similar threads

بالا