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

كيف أستطيع أن أكمل هذه الفقره...........

بدأه دحوم مكه في 4 مايو 2011 · 6 رد · 1,252 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أسعد الله مسائكم /صباحكم بكل خير

اسعدني جدا وجودي في هذا المنتدى الرائع الذي أراء أنه بوابه رائعه لمن أراد أن يستزيد من علوم الحاسب الالي....

ويؤسفني توجودي السلبي في هذا المنتدى لكن ويعلم الله أن هذا جهدي المستطاع ......

أساتذتي الكرام

أريد كتابة برنامج يطلب من المستخدم أدخال أربع أرقام والبرنامج يقوم بتحويل الارقام إلى عدة أشياء

enter number........

* (16 بت):binary

base 4:

base 8

decimal number;

hex dicemal;

استطعت أن أكتب برنامج يستطيع المستخدم أن يدخل أربعه أرقام ويقوم بطباعتها له وأخذت مني جهد كبير وهذا هو الكود

TITLE "PROG"

.MODEL SMALL

.STACK 64

.DATA

NUMBER DW 0

COUNT DB 3

TEN DW 0AH

NEW_LINE DB 0DH, 0AH, '$'

.CODE

MOV AX, @DATA

MOV DS, AX

MOV AH,01H ;READ 1ST DIGIT

INT 21H

SUB AL,'0'

MOV AH,0

MOV NUMBER,AX

AGAIN:

MOV AH, 01H

INT 21H

CMP AL, 0DH

JE SKIP

SUB AL, '0'

MOV BL, AL

MOV CX, 10

MOV AX, NUMBER

MUL CX

MOV BH, 0

ADD AX, BX

MOV NUMBER, AX

DEC COUNT

JZ SKIP

JMP AGAIN

SKIP:

;PRINT NEW LINE

LEA DX, NEW_LINE

MOV AH, 09H

INT 21H

;PRINT THE ENTERD NUMBER

MOV CX,04

MOV COUNT, 0

AB0:

MOV AX, NUMBER

MOV DX, 0

DIV TEN

CMP AX, 0

JNE GO

CMP DX, 0

JE SKIP1

GO:

MOV NUMBER, AX

ADD DL, '0'

PUSH DX

INC COUNT

DEC CX

JNZ AB0

SKIP1:

MOV CX, 0

MOV CL, COUNT

AB1:

POP DX

MOV AL,DL

MOV AH,02H

INT 21H

LOOP AB1

MOV AX,4C00H

INT 21H

END

لكن لم أستطع أن أتخيل البرنامج الذي يحول الارقام إلى باينري ولا أعلم كيف أبدأ فمساعدتكم لي شرف كبير

#2
اقتباس
لكن لم أستطع أن أتخيل البرنامج الذي يحول الارقام إلى باينري ولا أعلم كيف أبدأ فمساعدتكم لي شرف كبير

قبل ان تبدأ بكتابة البرنامج الذي يحول من Decimal to Binary عليك ان تعرف الطريقة او The Algorithm

لنفرض ان لديك الرقم 123 بال Decimal. ما هي الطريقة اليدوية لتحويله الى Binary?

جاوب وسوف اكمل.

#3

أهلا وسهلا بك وكل الشكر لك على أهتمامك....

أما طريقة التحويل:

أولا نضع 123 ثم نقوم بوضع الـــwait حيث نقول

0 1 2 .......

2 2 2 .......

فهكذا نستطيع تمثيل اي عدد Decimal إلى باينري

فيصبح عندنا العدد 123 :

1111011

#4

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

#5

المشكلة موضوعك قبيح (والقبح مش عيب لكن ستخسر من يساعدك)

عدل موضوعك وضع الكود بين code tags لانه صعب القراءة هكذا

كذلك اذا ممكن ضع comments بجوار كل حركة تقوم بها في الكود ليتوضح مبتغاك اكثر (اختصارا للوقت)

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#6

التحويل الى اعداد ثنائية يتم بالقسمة زي ما بياخذوه في مادة logic circuits و digital design

يعني مثلا لو عندك العدد 41

اقسمة على 2 بينتج لك 20 وباقي قسمة .5

اذا كان باقي القسمة لايساوي الصفر اذا العدد الثنائي المقابل 1

نقسم ال20 على 2 وبينتج 10 والباقي 0 اذا العدد المقابل 0

نقسم 10 على اثنين وينتج 5 والباقي 0 اذا العدد المقابل 0

نقسم 5 على 2 ينتج 2 والباقي .5 اذا العدد المقابل 1

نقسم 2 على 2 ينتج 1 والباقي 0 اذا العدد المقابل 0

نقسم 1 على 2 ينتج 0 والباقي .5 اذا العدد المقابل 1

كذه العدد البيناري المقابل هو 101001

لاحظ ان اول عدد ينتج هو LSB واخر عدد ينتج هو MSB

اذا لسه في مشاكل في الخوارزميات حق التحويل شوف كتاب

digital design : Morris Mano

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#7

شكرا لك أخي على هذه التوضيح الرائع أستطعت الحمدلله كتابة برنامج يحول من ديسمل الى باينري واوكتل وبيس 4

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