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

[ تمت الإجابة ]طلب مساعده في طباعه أرقام

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

السلام عليكم

أنا برنامجي يسأل اليوزر ان يدخل عدد عناصر المصفوفه ثم اطبعها بهذه الشكل

Enter the number of elements
3
10
20
30
The numbers you are entered are: 10,20,30,Press any key to continue . . .

كتبت البرنامج بالC++ عشان اعرف كيف اكتبها بالإسمبلي

اشتغل معاي 100% بالC++ لكن لما رحت أكتبها بالإسمبلي يطبع آخر رقم أدخلته فقط مثل الOutput الي تحت

Enter the number of elements
3
10
20
The numbers you entered are:30,

فاالمطلوب أنه يطبع 10 و20 و30

لكن مشكلتي مع البرنامج انه يطبع آخر رقم فقط

كود الC++ الي اشتغل تمام

#include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int *a=NULL;
	int n;
	cout <<"Enter the number of elements\n";
	cin >>n;
	a=new int[n];
	for(int i=0; i<n; i++)
	{
		cin>>a;
	}
	cout <<"The number you are entered are: ";
	for(int i=0; i<n; i++)
	{
		cout<<a;
		cout<<",";
	}

	return 0;
}

وكود الإسمبلي الي مو راضي يشتغل معاي والي اطلب فيه مساعدتكم هذه هو

Title 
dosseg
.model small
.stack 100h
INCLUDE io.mac

.code
Main proc
		mov   ax,@data		  ; initialize DS
		mov   ds,ax
; START YOUR PROGRAM AFTER THIS LINE
putstr first
nwln
getint ax
mov cx,ax
start:
nwln
getint ax,cx
loop start
putstr show
mov dl,','
putint ax
putch dl


; DO NOT REMOVE THE FOLLWING LINES
		mov  ax,4C00h
		int  21h
Main endp



.data
;-------------->>>>>>>>>>>> WRITE YOUR DATE DEFINITIONS AFTER THIS LINE <<<<<<<
first db 'Enter the number of elements',0
start db '?',0
show db 'The numbers you entered are:',0
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end main

أتمنى منكم مساعدتي في كود الإسمبلي كيف أضبط الOutput

#2

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

المشكلة لديك هنا

 

putstr show

[color= #ff007f;]mov [color= #7f7f40;]dl[color= #0000ff;],[color= #0000a0;]','

putint [color= #7f7f40;]ax

putch [color= #7f7f40;]dl

فأنت تقوم بطباعة آخر رقم موجود في AX بينما من المفترض أن تقوم بوضع حلقة تقوم بطباعة الأرقام ابتداء من الرقم الأول وبتزايد حتى الوصول إلى عدد الأرقام المدخلة والذي تستطيع حفظه في متغير بعد استلامه.

شئ آخر حاول ألا تستخدم اسم متغير ولافتة متطابقين، هذا قد يتسبب في مشكلة لاحقاً، ما أتكلم عنه هو استخدامك لـ start مرتين كلافتة label واسم متغير.

قمت بتعديله قليلاً علماً أني لم أقم باختبار تجميعه وربطه وتنفيذه (يفضل في المرات القادمة إرفاق كافة الملفات التي يعتمد عليها البرنامج مثل io.mac)

 

[color= #7f00ff;]Title

[color= #7f00ff;]dosseg

[color= #7f00ff;].model small

[color= #0000ff;].[color= #7f00ff;]stack [color= #ff0000;]100h

[color= #7f00ff;]INCLUDE io[color= #0000ff;].mac

 

[color= #0000ff;].[color= #7f00ff;]code

Main [color= #7f00ff;]proc

[color= #ff007f;]mov     [color= #7f7f40;]ax[color= #0000ff;],@[color= #7f00ff;]data

[color= #ff007f;]mov     [color= #7f7f40;]ds[color= #0000ff;],[color= #7f7f40;]ax

 

[color= #ff007f;]lea     [color= #7f7f40;]si[color= #0000ff;],elem

 

putstr  first

nwln

 

getint  [color= #7f7f40;]ax

[color= #ff007f;]cmp     [color= #7f7f40;]ax[color= #0000ff;],[color= #7f7f7f;]255

[color= #ff007f;]ja      term

[color= #ff007f;]mov     [color= #7f7f40;]cx[color= #0000ff;],[color= #7f7f40;]ax

[color= #ff007f;]mov     ctr[color= #0000ff;],[color= #7f7f40;]ax

 

@[color= #7f7f7f;]1[color= #0000ff;]:

nwln

getint  [color= #7f7f40;]ax

[color= #ff007f;]mov     [color= #aa007f;]word [color= #7f00ff;]ptr [color= #0000a0; font-weight: bold;][[color= #7f7f40;]si[color= #0000a0; font-weight: bold;]][color= #0000ff;],[color= #7f7f40;]ax

[color= #ff007f;]inc     [color= #7f7f40;]si

[color= #ff007f;]loop    @[color= #7f7f7f;]1

 

putstr  show

 

[color= #ff007f;]lea     [color= #7f7f40;]si[color= #0000ff;],elem

[color= #ff007f;]mov     [color= #7f7f40;]cx[color= #0000ff;],ctr

@[color= #7f7f7f;]2[color= #0000ff;]:

putint  [color= #0000a0; font-weight: bold;][[color= #7f7f40;]si[color= #0000a0; font-weight: bold;]]

[color= #ff007f;]mov     [color= #7f7f40;]dl[color= #0000ff;],[color= #0000a0;]','

putch   [color= #7f7f40;]dl

[color= #ff007f;]inc     [color= #7f7f40;]si

[color= #ff007f;]loop    @[color= #7f7f7f;]2

 

putstr   press

 

[color= #007f00; font-style: italic;]; DO NOT REMOVE THE FOLLWING LINES

term[color= #0000ff;]:

        [color= #ff007f;]mov  [color= #7f7f40;]ax[color= #0000ff;],[color= #ff0000;]4C00h

        [color= #ff007f;]int  [color= #ff0000;]21h

Main [color= #7f00ff;]endp

 

 

 

[color= #0000ff;].[color= #7f00ff;]data

[color= #007f00; font-style: italic;];-------------->>>>>>>>>>>> WRITE YOUR DATE DEFINITIONS AFTER THIS LINE <<<<<<<

first   [color= #7f00ff;]db [color= #0000a0;]"Enter the number of elements"[color= #0000ff;],[color= #7f7f7f;]0

show    [color= #7f00ff;]db  [color= #0000a0;]"The numbers you entered are:"[color= #0000ff;],[color= #7f7f7f;]0

press   [color= #7f00ff;]db  [color= #0000a0;]"Press any key to continue ..."[color= #0000ff;],[color= #7f7f7f;]0

elem    [color= #7f00ff;]dw  [color= #7f7f7f;]256 [color= #7f00ff;]dup [color= #0000a0; font-weight: bold;]([color= #7f7f7f;]0[color= #0000a0; font-weight: bold;]) [color= #007f00; font-style: italic;]; max number of elements allowed is 255, 1 byte for null terminating

ctr     [color= #7f00ff;]dw  [color= #7f7f7f;]0

[color= #007f00; font-style: italic;];%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[color= #7f00ff;]end main

تم تعديل هذه المشاركة بواسطة Xacker في 22 يناير 2009 في 12:07

Do as I say, not as I do

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

#3

أهلا أخي Xacker

شكراّ على سرعه الإستجابه

لكن للأسف المشكله لم تنحل لما أنفذ البرنامج يظهر الOuput مثل الشكل التالي:

Enter the number of elements
3
1
2
The numbers you entered are:513,770,3,Press any key to continue ...

حيث طبع أرقام 513, و770 وأنا لم أقم بإدخال هذه الأرقام

وبالنسبة للملفات الي استخدمتها بالبرنامج تجدها بالمرفقات

بعد فك الضغط على الملف ووضعه في سطح المكتب على سبيل المثال

نذهب من شاشه الدوس

cd Desktop
cd Assembler
ml Test.asm IO.obj
Test

Assembler.zip

#4

استبدل

inc	si

بـ

add	si,2

Do as I say, not as I do

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

#5
Xacker كتب:
استبدل

inc	si

بـ

add	si,2

ياسلام عليك يا Xacker

اشتغلت معاي مثل الحلاوة 100%

ألف شكر لك على سرعه الإستجابه وعلى رحابه صدرك

والله يجزاك ألف خير.

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

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

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

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

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