الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مسأله صعب علي حلها

مغلق
بدأه ..CanDy.. في 9 يناير 2007 · 18 رد · 2,736 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

:rolleyes:

احيي اعضاء المنتدى الأفاضل كلهم

على جهودهم الجباره عساكم دوم عالقوه

ندخل بالموضوع مباشره

انا طالبه توي ادرس لغة التجميع

ونشتغل على برنامج emulator 8086

واعطتنا الأستاذه واجب حاولت فيه بس مهو راضي يطلع معاي :(

فكرة البرنامج..

يطلب من المستخدم إدخال رقمين بالنظام الثنائي يتكون من 8 بت

بعدين يجمع الرقمين

ويطبع النتيجه بالنظام الثنائي

بعدين يختبر هل العدد زوجي او فردي

وبس

الجزء اللي انا ماعرفت له عملية الجمع

كيف اجمع الرقمين بالباينري......!

واطبع النتيجه

انا فكرت اني احول الرقمين للنظام العشري واجمعها بعدين ارجع احولها للنظام الثنائي

بس ماعرفت اكتب كود للتحويل :s

ياليت اللي يعرف يساعدني

واتمنى ألقى عندكم المساعده :)

اختكم

كاندي

#2

السلام عليكم اخواني.

بالنسبة لعملية الجمع ارى بان تحولوا العدد العشري الي النظام السدا سي عشر hex , ثم تضعون العدد hex الاول في ال ax ,ثم العدد ال hex الثاني في ال bx وتنفذون عملية add , لتظهر لكم النتيجة على ال ax . مثلا :

dec: 15 +20 =35

hex: 0F +14 =23

mov ax,0F

mov bx ,14

add ax ,bx

فعندما تنفدون هذه الاسطر خطوة خطوة , القوا نظرة الى ال registre ax و registre bx والى التغيير الذي يطرا عليهم.

والله ولي التوفيق.

#4
bitofsoul كتب:
السلام عليكم اخواني.

بالنسبة لعملية الجمع ارى بان تحولوا العدد العشري الي النظام السدا سي عشر hex , ثم تضعون العدد hex الاول في ال ax ,ثم العدد ال hex الثاني في ال bx وتنفذون عملية add , لتظهر لكم النتيجة على ال ax . مثلا :

dec: 15 +20 =35

hex: 0F +14 =23

mov ax,0F

mov bx ,14

add ax ,bx

فعندما تنفدون هذه الاسطر خطوة خطوة , القوا نظرة الى ال registre ax و registre bx والى التغيير الذي يطرا عليهم.

والله ولي التوفيق.

مشكور اخي على هالكود اكيد ابستفيد منه

بس انا اللي ابيه وشلون احول من باينري لــ ديسيمال او هيكسا عشان اجمع

وبعدين ارجع احول للباينري الناتج عشان اطبعه

على العموم مشكور على الرد :rolleyes:

#5

ايش الكود اللي توصلتيله عشان نفهم كيف البرنامج

ENG-GAZA.GIF
#6
Eng_Gaza كتب:

هلا اخو ي

سوري ماشفت الموضوع

بس الكود اللي يدخل رقم باينري مافهمته زين لان pop & push ماتعمقنا فيها مره

ولا قيد جربت عليها برامج لان الوقت ضيق معاي :(

انا في برنامجي طلبت من المستخدم ادخال ارقام باينري يعني راح يدخل 0 & 1 فقط

البرنامج يتعامل معاها على انها هيكسا مو باينري

انا ابغى اجمعها بعدين احول الناتج للباينري

#7

هل اليوزر سوف يدخل الأرقام hexa ؟

مثلا

1A

+

20

=

00111010 والطباعة فقط بالـ bainary ؟

ENG-GAZA.GIF
#8

لا اليوزر أطلب منه يدخل 0 & 1

يعني بهذا الشكل

TYPE A BINARY NUMBER,UP TO 8 DIGITS: 11001010

TYPE A BINARY NUMBER,UP TO 8 DIGITS: 10011100

THE BINARY SUM IS: 101100110

انا كتبت هالكود لادخال الرقمين


MSG1 DB 0AH,0DH,"TYPE A BINARY NUMBER, UP TO 8 DIGITS :$"
MSG2 DB 0AH,0DH,"THE BINARY SUM IS :$"
MSG3 DB 0AH,0DH,"YOU ARE TAYPING ELLEGAL CHARACHTER TRY AGAIN $"
.CODE
MAIN PROC
ENSERT_1:
MOV AH,9
LEA DX,MSG1
INT 21H

MOV AH,1
MOV CL,8H

ENSERT1:
INT 21H
MOV BH,AL

SHL BH,CL
CMP AL,0DH
JE ENSERT_2
JMP ENSERT1

ENSERT_2:
MOV AH,9
LEA DX,MSG1
INT 21H
MOV CL,8H
MOV AH,1

ENSERT2:
INT 21H
MOV BL,AL

SHL BL,CL
CMP AL,0DH
JE ADD_
JMP ENSERT2
.DATA

اتمنى تكون وصلت للمطلوب :unsure:

#9

ماعندي خلفية عن برنامج الـ emu8086

عند تنفيذ التالي

MOV AH,1

INT 21H

ويتم إدخال صفر هل الريجيستر AL = 0 OR 30h ?

ثانيا :

MOV CL,8H

أول عملية SHL لازم تكون بمقدار سبعه ومن ثم 6 ثم 5 وهكذا إلى أن نصل الى الخانة الأخيرة وتكون بدون إزاحة

ENG-GAZA.GIF
#10
Eng_Gaza كتب:
ماعندي خلفية عن برنامج الـ emu8086

عند تنفيذ التالي

MOV AH,1

INT 21H

ويتم إدخال صفر هل الريجيستر AL = 0 OR 30h ?

ثانيا :

MOV CL,8H

أول عملية SHL لازم تكون بمقدار سبعه ومن ثم 6 ثم 5 وهكذا إلى أن نصل الى الخانة الأخيرة وتكون بدون إزاحة

اذا ادخلت 0

تكون قيمة الـ AL = 30h

يعني اخلي قيمة الــ CL=7.....!

#11

عند تطبيق الكود اللي استخدمت فيه ARRAY لعملية الجمع والادخال

يطلع الرن بهذا الشكل بعد اضافة كود العرض

c9aae6f4dc.jpg

#12

بالـ array صعب شوي لكن مو مستحيل

لأنه 1 + 1 = 0 وباليد 1

راح تطبعي الصفر لكن يجب ان تفحصي انه في carry وبالتالي تجمعيه للقيمة اللي تليها

بالاضافة انه راح تبدي جمع من آخر قيمة بالأراي

سأحاول في البرنامج

ENG-GAZA.GIF
#13

مشكور Eng_Gaza

:)

تعبتك معاي

بس ان شاء الله يطلع معاك

وانا بعد بحاول مره ثانيه وان شاء الله اتوصل لشي

:)

#14

(h)

بعد 3 ساعات على موعد مع إمتحان في مادة Assembly

دعواتكم بالتوفيق

هذا البرنامج على عجل

		Dosseg
		.model small
		.DATA
MSG1	DB 0AH,0DH,"TYPE A BINARY NUMBER, UP TO 8 DIGITS : $"
MSG2	DB 0AH,0DH,"				   THE BINARY SUM IS :$"
MSG3	DB 0AH,0DH,"YOU ARE TAYPING ELLEGAL CHARACHTER TRY AGAIN $"
		.CODE
		mov ax,@data
		mov ds,ax

ENSERT_1:
		MOV AH,9
		LEA DX,MSG1
		INT 21H

		MOV AH,1
		MOV CL,7H
		mov bx,0
ENSERT1:

		INT 21H
		cmp al,0dh
		je ENSERT_2
		and al,0fh
		SHL al,CL
		add bh,al
		dec cx
		JMP ENSERT1
ENSERT_2:
		mov bl,al	  ; First Digite

		MOV AH,9
		LEA DX,MSG1
		INT 21H

		MOV CL,7H
		MOV AH,1
		MOV Bl,00
ENSERT2:
		INT 21H
		cmp al,0dh
		je ADD_
		and al,0fh
		shl al,cl
		dec cl
		add BL,AL
		JMP ENSERT2
ADD_:
		lea dx,msg2
		mov ah,9
		int 21h

		add bl,bh
		jnc ncarry
		mov dl,31h
		mov ah,2
		int 21h

ncarry:
		mov cl,7h
		mov ch,0
l1:


		mov dl,bl

		shr dl,cl
		and dl,00000001b
		add dl,30h
		mov ah,2
		int 21h
		dec cl
		inc ch
		cmp ch,8
		je EXIT_
		jmp l1
EXIT_:
		mov ah,4ch
		int 21h
		END

في طرق افضل للبرنامج

تحياتي

تم تعديل هذه المشاركة بواسطة Eng_Gaza في 11 يناير 2007 في 06:21

ENG-GAZA.GIF
#15

ينصر دينك يامهندس

الله يجعلك من اهل الجنه

ربي يوفقك في امتحانك ويسهل عليك وتحل وانت متأكد يااااارب

وتجيب الفل مارك

الله يريحك زي ماريحتني :rolleyes:

يعطيك ألف عافيه ماقصرت

بس هذا الجزء

mov ax,@data

mov ds,ax

وش فايدته...!

وش يسوي...!

آسفه بتعبك معاي

كاندي

تم تعديل هذه المشاركة بواسطة ..CanDy.. في 11 يناير 2007 في 07:02

#16

أنا لا استعمل برنامج emu8086

ف الـ DS يجب في البداية أن أعطية بداية الـ data Segment

وبداية الـ data Segment تكون في متغير اسمه @data

بخلاف الـ CS و الـ SS يتم تعريفة من الدوس

في الـ emu8086 يتم تعريفها مباشرة , لكن ما اني متأكد لاني ما جربته

تم تعديل هذه المشاركة بواسطة Eng_Gaza في 11 يناير 2007 في 07:26

ENG-GAZA.GIF
#17

اهااا

في الــ EMU مانستخدم هذا الامر :rolleyes:

طيب اذا اختبرت وخلصت وكنت فاضي

ياليت تشرح لي كود عملية الــ ADD

لو شرح بسيط خصوصا امر الــ AND ليه استخدمته..!

لوسمحت :^)

والله يعطيك العافيه مره ثانيه ويسهل عليك

#18
اقتباس
اهااا

في الــ EMU مانستخدم هذا الامر

طيب اذا اختبرت وخلصت وكنت فاضي

ياليت تشرح لي كود عملية الــ ADD

لو شرح بسيط خصوصا امر الــ AND ليه استخدمته..!

لوسمحت

والله يعطيك العافيه مره ثانيه ويسهل عليك

/index.ph...79&t=112892

ENG-GAZA.GIF
#19

الله يعطيك العافيه ماقصرت

معلومه جديده ومهمه

:D

هذا الموضوع مغلق.

مواضيع مشابهة