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

[ تمت الإجابة ]كيف أحول BCD إلى Binary

بدأه سوزان الحنبلي في 2 ديسمبر 2009 · 22 رد · 5,734 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا انا طالبه علم حاسوب سنة تانيه اخدنا اسمبلي ومش عارفه عنها شي

يارت تساعدوني بهاد السوال والكم جزيل الشكر

السوال:-ادخل الارقم في bcd وحوله الى binary في لغه الاسمبلي؟؟

لو بسعدوني بتعملو في اكبر معروف

تحياتي لجميع

#2

محاولاتك في الموضوع، لا أراها.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3
#make_COM#

; COM file is loaded at CS:0100h
ORG 100h

.model small
.stack 100h
.data
msg db 'enter the number ',0
num db ?

.code

main proc

mov ax,0
mov ax,@data
mov ds,ax
lea dx,msg
mov ah,09
int 21h

mov ah,01h
int 21h

main endp
end main

هون انا مدخله الرقم في الهكسه لازم احوله bcd وبعدين احوله الباينري

بس مش عارفه الكود المزبوط او الامور الي بحتاجه عارفه الاومر بس مش عارفه اوجه او استخدمها في البرنامج

شكرا الكم

تحياتي لجميع

تم تعديل هذه المشاركة بواسطة Xacker في 8 ديسمبر 2009 في 17:48

#4
mov eax,0

هذا السطر غير ضروري.

ومن ثم هذه الشفرة لا تقوم بشئ، يمكن نقلها من صفحة كتاب أو مقال أو أي رد ووضعها هنا.. لا تعد محاولة إطلاقاً.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5

للعلم بس هادي محولتي انا مو جيبتها من كتاب لو بدي اجيب من كتاب كان جبت الموضوع جاهز

وانا بعرف انه الامر AAA انو بحول اي رقم الي النطام الثنائي

بس المشكله الي بتوجهني اني مش عارفه احول من هكسه الى BCD

تم تعديل هذه المشاركة بواسطة سوزان الحنبلي في 5 ديسمبر 2009 في 18:53

#6
سوزان الحنبلي كتب:

وانا بعرف انه الامر AAA انو بحول اي رقم الي النطام الثنائي

ممكن مثال؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7

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

يارت تعطيني مثال انت او تشرحلي عنها

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

وبكون ممنونه لو جاوبتني اوشرحتلي عنها

#8

أفكر بالتالي لتنفيذ العملية،

استلام الأرقام من المستخدم كـ string لذلك ستحفظ في الذاكرة بصيغة ASCII.

سأفترض أن الرقم المدخل هو 14 كـ string، بالتالي سيكون بالشكل: 31h 34h

سأنقص من السلسلة 30h فيصبح لدي 01h 04h

أقوم بتحميل كل قيمة إلى مسجل في الذاكرة، AL مثلاً

وباعتبار أن الأرقام ستكون ضمن المجال [0-9] سأقوم بتشكيل جدول تقابل لهذه الأرقام بالشكل التالي

post-7008-12604514892843_thumb.png

طبعاً برمجياً، لأوفر على نفسي عناء التحويل بين hex/dec > bin باعتبار أن الجدول صغير.

من خلال المقارنة ضمن الجدول (أو نستخدم switch..case والعمود الأيمن فقط من الجدول) نقوم بطباعة القيم كـ binary (بينما هي فعلياً ASCII أيضاً :D).

تم تعديل هذه المشاركة بواسطة Xacker في 10 ديسمبر 2009 في 16:31

1

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#9
			assume	cs:cseg,ds:dseg,ss:sseg

cseg	segment
start:
	mov	ax,dseg
	mov	ds,ax
	;-
	mov	dx,offset msg
	mov	ah,09h
	int	21h
	;-
	mov dx,offset buff
	mov ah,0Ah			; buffered input (check: http://www.ctyme.com/intr/rb-2563.htm)
	int 21h
	;-
	mov	dx,offset CRLF
	mov	ah,09h
	int	21h
	;-
	; now [buff+1] = number length *i.e (1234) = 4*
	; and [buff+2] = offset of actual number
	mov si,offset buff	; si = [buff]
	add si,2			; si = [buff+2]
	mov bl,5
@@:
	cmp byte ptr [si],0Dh
	je	@F
	sub [si],30h
	xor ax,ax
	mov al,[si]
	mul	bl
	mov dx,offset bin
	add dx,ax
	mov ah,09h
	int 21h
	inc	si
	jmp	@B
@@:
	;-
	mov	ax, 4C00h
	int	21h
cseg	ends

dseg	segment	byte
msg		db	'enter a number: ','$'
CRLF	db	0Dh,0Ah,'$'
buff	db	6,7 dup (0)	; offset	size		desc
						; ------	----		----
						; 00h		byte		max char buffer *can hold* in other words capacity (including CarriageReturn)
						; 01h		byte		actual (n) chars read (excluding CarriageReturn)
						; 02h		n Bytes		actual chars read (including CarriageReturn)
						; --------------------------
						; so here I have:
						; 6,x,nnnnnn
						;
						; ^---- max capacity w/ CR (5 digits + CR)
						; ^---- actual (n) chars read w/o CR
						; 	^^^^^^---- actual chars read w/ CR
						; ^^^^^^^^
						;	7 bytes filled with zeros *db	7 dup (0)* (offset 01h byte + 5 digits + CR)
bin		db	'0000','$'	; 0
		db	'0001','$'	; 1
		db	'0010','$'	; 2
		db	'0011','$'	; 3
		db	'0100','$'	; 4
		db	'0101','$'	; 5
		db	'0110','$'	; 6
		db	'0111','$'	; 7
		db	'1000','$'	; 8
		db	'1001','$'	; 9
dseg	ends

sseg	segment	stack
	db	100h dup (?)
sseg	ends

end	start

* لا يتحقق في حال ورد "رمز" داخل سلسلة الأرقام المدخلة وبالتالي أنا غير مسؤول عمّا يظهر على الشاشة :P

* تم اختباره على Win XP

post-7008-12605213558009_thumb.png

BCD.txt

تم تعديل هذه المشاركة بواسطة Xacker في 11 ديسمبر 2009 في 16:35

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#10

X أنا بظن إن المطلوب التحويل الفعلي بين الـ BCD والـ Binary

يعني الرقم (13479) لازم يصير (11010010100111)

الخوارزمية بسيطة ... بس بدنا مين يحولها عالأسمبلي ! :D

int result, m = 1;
String s = "14379";
for(int i = 0 ; i < s.length(); i++){
	int n = s.charAt - 48;
	r += n * m;
	m = 10 * m;
}

ممكن تشرحلي شو عم يعمل الكود هون :

        mul     bl
        mov dx,offset bin
        add dx,ax
        mov ah,09h
        int 21h
        inc     si
        jmp     @B
@@:
        ;-
        mov     ax, 4C00h
        int     21h

ملاحظة: حاولت جمّع الكود عطاني خطأً :

 Assembling: C:\bcdtobin\bcdtobin.asm
C:\bcdtobin\bcdtobin.asm(26) : error A2070: invalid instruction operands
C:\bcdtobin\bcdtobin.asm(5) : error A2004: symbol type conflict
C:\bcdtobin\bcdtobin.asm(61) : warning A4023: with /coff switch, leading underscore required for start address : start
_
Assembly Error
Press any key to continue . . .
#11
Speed_Of_Light كتب:

X أنا بظن إن المطلوب التحويل الفعلي بين الـ BCD والـ Binary

لكن 13479 ليست BCD وإنما decimal عادية، الـ BCD هو تقسيم الرقم إلى مراتب، كل مرتبة تشكل digit مستقل، (13479 مثلاً كل مرتبة هي رقم مستقل, 1,3,4,7,9)، وكل مرتبة يتم تمثيلها بـ 4بت بصيغة ثنائية binary-coded (على اعتبار أن الأرقام من 0-9 ممكن تمثيلها بـ 4 بتات من 0000 حتى 1001)

لذا لو قلنا number = 13479 فيكون الـ BCD = 00010011010001111001

اقتباس

ممكن تشرحلي شو عم يعمل الكود هون :

 mul bl
 mov dx,offset bin
 add dx,ax
 mov ah,09h
 int 21h
 inc si
 jmp @B
@@:
 ;-
 mov ax, 4C00h
 int 21h

الرقم الذي يتم تحميله في al بالسطر

mov al,[si]

يتم اعتباره كـ offset (أو بمعنى آخر كـ case ضمن حلقة Switch..Case)

لو كان لديك AL = 3 مثلاً فيتم ضربه بالقيمة 5 المحمّلة ضمن المسجل BL مسبقاً، ويكون الناتج 15d، أصبح لديك الآن offset أضفه إلى base address محمّل في المسجّل DX والذي يشير إلى أول بايت في السلسلة bin فيصبح لديك مؤشر [DX+AX] (مجازاً) وهذا سيخبر المقاطعة 21h/الخدمة 09h بأن النص المطلوب إظهاره موجود في العنوان bin+15 أي يشير إلى "0011" السلسلة الخاصة بالرقم 3 وهو ما تم تحميله مسبقاً في AL وهو الرقم الذي أساساً تم جلبه من سلسلة الأرقام المدخلة من قبل المستخدم.

لماذا BL = 5 ؟ لأنه الطول المطلوب تجاوزه في كل خطوة ضمن السلسلة bin وهو يمثل 4 محارف أسكي + $ التي تشير إلى نهاية السلسلة بالنسبة لبرنامج DOS.

طبعاً inc si لزيادة قيمة SI بمقدار واحد حتى يتم التأشير على الـ digit التالي في السلسلة، ونهاية الخدمة 4Ch الخاصة بإنهاء البرنامج يتم طلبها من 21h.

تم تعديل هذه المشاركة بواسطة Xacker في 11 ديسمبر 2009 في 16:24

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#12

بالنسبة للأخطاء أخبرني كيف تقوم بتجميعه؟

ملف make أم من خلال قوائم MASM أم .. ؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#13

المطلوب التحويل من BCD إلى binary

طبعاً بالنهاية كل شيئ binary

:D

يعني من 00010011010001111001 إلى 11010010100111

-----------------------

اقتباس
لماذا BL = 5 ؟ لأنه الطول المطلوب تجاوزه في كل خطوة ضمن السلسلة bin وهو يمثل 4 محارف أسكي + $ التي تشير إلى نهاية السلسلة بالنسبة لبرنامج DOS.

هذا هو المطلوب :)

-----------------------

قمت بالتجميع عبر الـ MASM32 Editor

أي: qeditor.exe

وجربت أيضاً الـ WinASM

#14

Speed_Of_Light:

الخطأ هو في استخدام مجمع 32 بت واستخدام امر تجميع لل 32 بت

استخدم مجمع masm 6 وما قبل .

#15
Speed_Of_Light كتب:

المطلوب التحويل من BCD إلى binary

طبعاً بالنهاية كل شيئ binary

:D

يعني من 00010011010001111001 إلى 11010010100111

-----------------------

هذا هو المطلوب :)

كلامك صحيح. سأعيد كتابة البرنامج إن شاء الله.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#16

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

انا مشكورة الكم على البرنامج كتير

بس وانا بتطبق في اعطني مشكله في هذا الكود @@ في السطر 42

وانا بستعمل في المعالج 8086

يارت تحكيلي ليه اعطاني مشكله وتحكيلي هذا الكود شو بعمل

#17

مرحبااااا

لوسمحته ساعدوني بسرعه

هاد الكود ما بزبط على 8086 وانا لازم ابرمجه 8086

كيف ممكن اني احوله الي 8086 ونوع الملف com

والكم جزيل الشكر

#18

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

يقوم بالتحويل من BCD إلى Binary

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

 	assume cs:cseg,ds:dseg,ss:sseg

cseg segment
start:
	mov ax,dseg
	mov ds,ax
	;-
	mov dx,offset msg
	mov ah,09h
	int 21h
	;-
	mov dx,offset buff
	mov ah,0Ah ; buffered input (check: http://www.ctyme.com/intr/rb-2563.htm)
	int 21h
	;-
	mov dx,offset CRLF
	mov ah,09h
	int 21h
	;-
	; now [buff+1] = number length *i.e (1234) = 4*
	; and [buff+2] = offset of actual number
	mov si,offset buff ; si = [buff]
	xor ax,ax
	xor dx,dx
	mov al,[si+1]
	mov bx,4
	div bx
	.if (dx != 0)
		mov dx,offset lenErr
		mov ah,9
		int 21h
		jmp terminate
	.endif
	add si,2 ; si = [buff+2]
	mov di,offset num
	.while (byte ptr [si] != 0Dh)
		.if ([si] == "00")
			.if ([si+2] == "00")
				mov [di],"0"
			.elseif ([si+2] == "10")
				mov [di],"1"
			.elseif ([si+2] == "01")
				mov [di],"2"
			.else
				mov [di],"3"
			.endif
			inc di
			add si,4
		.elseif ([si] == "10")
			.if ([si+2] == "00")
				mov [di],"4"
			.elseif ([si+2] == "10")
				mov [di],"5"
			.elseif ([si+2] == "01")
				mov [di],"6"
			.else
				mov [di],"7"
			.endif
			inc di
			add si,4
		.elseif ([si] == "01")
			.if ([si+2] == "00")
				mov [di],"8"
			.elseif ([si+2] == "10")
				mov [di],"9"
			.else
				mov dx,offset NotInTheRange
				mov ah,9
				int 21h
				jmp terminate
			.endif
			inc di
			add si,4
		.else
			mov dx,offset NotInTheRange
			mov ah,9
			int 21h
			jmp terminate
		.endif
	.endw
	mov [di],"$"
	;-
	mov dx,offset decimal
	mov ah,9
	int 21h
	mov dx,offset num
	int 21h
	mov dx,offset CRLF
	int 21h
	;-
	mov si,offset num
	xor ax,ax
	xor cx,cx
	mov bx,10
	mov al,[si]
	inc si
	.while (al != "$")
		sub al,"0"
		;lea cx,word ptr [ax+cx*10]
		xor ah,ah
		push ax
		mov ax,cx
		mul bx
		pop cx
		add cx,ax
		mov al,[si]
		inc si
	.endw
	.if (dx != 0) ; dx != 0 --> data are spanned over DX:AX which means its larger than 0FFFFh boundary
 	mov dx,offset boundaryErr
 	mov ah,9
 	int 21h
 	jmp terminate
	.endif
	;-
	;cx holds the hexa form
	mov si,offset bin
	mov ax,cx
	mov bx,2
	.while (1)
		xor dx,dx
		div bx
		.if (ax == 0)
			.if (dx == 0)
				mov [si],"0"
			.else
				mov [si],"1"
			.endif
			.break
		.endif
		.if (dx == 0)
			mov [si],"0"
		.else
			mov [si],"1"
		.endif
		inc si
	.endw
	inc si
	mov [si],"$"
	;-
	mov si,offset bin
	xor bx,bx
	mov al,[si]
	.while (al != "$")
		inc bx
		inc si
		mov al,[si]
	.endw
	mov si,offset bin
	mov di,offset binary
	dec bx
@1:
	cmp bx,0
	jl @2
	mov al,[si+bx]
	mov [di],al
	inc di
	dec bx
	jmp @1
@2:
	mov [di],"$"
	;
	mov dx,offset bin@ry
	mov ah,9
	int 21h
	mov dx,offset binary
	int 21h
terminate:
	;-
	mov ax, 4C00h
	int 21h
cseg ends

dseg segment byte
	msg 			db 'enter a number: ','$'
	lenErr 			db 'invalid number length','$'
	NotInTheRange 	db 'invalid numbers range','$'
	decimal 		db 'decimal: ','$'
	bin@ry 			db 'binary: ','$'
	bin 			db 25 dup (0)
	binary 			db 25 dup (0)
	CRLF 			db 0Dh,0Ah,'$'
	num 			db 20 dup (0)
	buff 			db 21,22 dup (0)
dseg ends

sseg segment stack
	db 100h dup (?)
sseg ends

end start

post-7008-12611772803706_thumb.png

تم تعديل هذه المشاركة بواسطة Xacker في 21 ديسمبر 2009 في 16:32

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#19

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

مشكور يااخي على تعبك مع بس انت بتستخدم 32bit ونا في حاجه 16 bit

هادي محولاتي بس يوجد خطأ ومش عارفه شو السبب في الخطا

#make_COM#

; COM file is loaded at CS:0100h

ORG 100h

.madl small

.stack 100h

.data

binary dw ?

.code

main proc

mov ax,@data

mov ds,ax

mov ah,01h

mov binary,cx

jcxz stop

mov bx,binary

xor cx,cx

mov cx,16

print:

mov bx,2

mov dl,'0'

test bx,1000000000000b

je zero

mov dl,'1'

zero:

int 21h

shl bx,1

mov dl,'b'

int 21h

push dx

push ax

push si

make db ? ;used us flag

ten dw 10 ;used as multplier

process:

mov cx,0

mov cs:make ,0

next_digt:

mov al,[si]

jne not_end

jmp stop_input

not_end:

cmp al,'-'

jne ok_digit

mov cs:make ,1

jmp next_digit

ok_digit:

push ax

mov ax,cx

mul cs:ten

mov cx,ax

sub al,30h

mov ah,0

mov dx,cx

add cx,ax

jmp next_digit

stop_input:

cmp cs:make,0

je not_min

neg cx

oot_min:

pop si

pop ax

pop dx

ret

main endp

end main

ولكم جزيل الشكر

#20
سوزان الحنبلي كتب:

مشكور يااخي على تعبك مع بس انت بتستخدم 32bit ونا في حاجه 16 bit

أختي يعني معقول أنا أكتب الكود السابق وما أعرف لو كنت بستخدم 32بت أو 16بت برأيك؟

أختي كل register من الشكل AX/BX/CX/DX/SI/DI هو 16بت

أما كل مسجل اسمه مسبوق بـ 'E' مثل EAX/EBX/../EDI فهذه 32بت.

وبالمختصر كل الكود السابق موّجه لـ 16bit لكن مختلطة الأمور عندك عشان الدراسة الجامعية عندنا الحمد لله.. بتلقّن الطلاب المعلومة بالملعقة بيخرج الطالب بيعرف 1...2...3 لو شاف 1...3...2 بيضيع :wacko:

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#21

قمت بالتعديل على الكود السابق بالشكل الذي ربما يتم تدريسكم إياه (to feel more comfortable!)

بالمناسبة بعد التجميع ببساطة غيري الاسم من BCD.exe إلى BCD.com ولن يكون هناك أي اختلاف.

أو باعتبار أنكم تستخدمون emu8086 فأتصور يكفي إضافة #make_com#

.model small

.stack 100h

.data
msg				db 'enter a number: ','$'
lenErr 			db 'invalid number length','$'
NotInTheRange 	db 'invalid numbers range','$'
boundaryErr		db 'boundary error, number is larger than 65535','$'
decimal 		db 'decimal: ','$'
bin@ry 			db 'binary: ','$'
bin 			db 25 dup (0)
binary 			db 25 dup (0)
CRLF			db 0Dh,0Ah,'$'
num				db 20 dup (0)
buff			db 21,22 dup (0)

.code
start:
	mov ax,@data
	mov ds,ax
	;-
	mov dx,offset msg
	mov ah,09h
	int 21h
	;-
	mov dx,offset buff
	mov ah,0Ah
	int 21h
	;-
	mov dx,offset CRLF
	mov ah,09h
	int 21h
	;-
	mov si,offset buff
	xor ax,ax
	xor dx,dx
	mov al,[si+1]
	mov bx,4
	div bx
	.if (dx != 0)
		mov dx,offset lenErr
		mov ah,9
		int 21h
		jmp terminate
	.endif
	add si,2
	mov di,offset num
	.while (byte ptr [si] != 0Dh)
		.if ([si] == "00")
			.if ([si+2] == "00")
				mov [di],"0"
			.elseif ([si+2] == "10")
				mov [di],"1"
			.elseif ([si+2] == "01")
				mov [di],"2"
			.else
				mov [di],"3"
			.endif
			inc di
			add si,4
		.elseif ([si] == "10")
			.if ([si+2] == "00")
				mov [di],"4"
			.elseif ([si+2] == "10")
				mov [di],"5"
			.elseif ([si+2] == "01")
				mov [di],"6"
			.else
				mov [di],"7"
			.endif
			inc di
			add si,4
		.elseif ([si] == "01")
			.if ([si+2] == "00")
				mov [di],"8"
			.elseif ([si+2] == "10")
				mov [di],"9"
			.else
				mov dx,offset NotInTheRange
				mov ah,9
				int 21h
				jmp terminate
			.endif
			inc di
			add si,4
		.else
			mov dx,offset NotInTheRange
			mov ah,9
			int 21h
			jmp terminate
		.endif
	.endw
	mov [di],"$"
	;-
	mov dx,offset decimal
	mov ah,9
	int 21h
	mov dx,offset num
	int 21h
	mov dx,offset CRLF
	int 21h
	;-
	mov si,offset num
	xor ax,ax
	xor cx,cx
	xor dx,dx
	mov bx,10
	mov al,[si]
	inc si
	.while (al != "$")
		sub al,30h
		xor ah,ah
		push ax
		mov ax,cx
		mul bx
		pop cx
		add cx,ax
		mov al,[si]
		inc si
	.endw
	.if (dx != 0)	; dx != 0 --> data are spanned over DX:AX which means its larger than 0FFFFh boundary
		mov dx,offset boundaryErr
		mov ah,9
		int 21h
		jmp terminate
	.endif
	;-
	mov si,offset bin
	mov ax,cx
	mov bx,2
	.while (1)
		xor dx,dx
		div bx
		.if (ax == 0)
			.if (dx == 0)
				mov [si],"0"
			.else
				mov [si],"1"
			.endif
			.break
		.endif
		.if (dx == 0)
			mov [si],"0"
		.else
			mov [si],"1"
		.endif
		inc si
	.endw
	inc si
	mov [si],"$"
	;-
	mov si,offset bin
	xor bx,bx
	mov al,[si]
	.while (al != "$")
		inc bx
		inc si
		mov al,[si]
	.endw
	mov si,offset bin
	mov di,offset binary
	dec bx
@1:
	cmp bx,0
	jl @2
		mov al,[si+bx]
		mov [di],al
		inc di
		dec bx
	jmp @1
@2:
	mov [di],"$"
	;
	mov dx,offset bin@ry
	mov ah,9
	int 21h
	mov dx,offset binary
	int 21h
	terminate:
	;-
	mov ax, 4C00h
	int 21h
end start

تم تعديل هذه المشاركة بواسطة Xacker في 19 ديسمبر 2009 في 10:51

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#22

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

ياخ والله مع حق انه الجامعات بتعطي المواد بجمود قاتل وانا بعاني من هل برنامج

بس رح اغلب اني جربت البرنامج وصار عندي خطا في هذا الكود

.if (dx != 0)

mov dx,offset lenErr

mov ah,9 i

nt 21h

jmp terminate

وبعرف اني غلبتكم مع بس انتو منفذي الوحيد لفهمي هذه البرمجيه

ولكم جزيل الشكر

#23

طيب أختي على الأقل نحتاج إلى نص رسالة الخطأ بالضبط كما يظهر :(

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…