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

في شاشه الدوس يطبع كلام مو مفهوم...

بدأه طالبه11 في 25 مايو 2009 · 3 رد · 949 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي سؤال اذا ممكن...كتبت برنامج وهذا البرنامج يقوم بطباعة هاي 3 مرات..

لكن المشكله لما عملت له رن يطبع خرابيط وكلام غير مفهوم مع جملة هاي

ممكن اعرف ووين المشكله لأنها تصادفني كثير

الكوود

.MODEL SMALL
.STACK 100H
.DATA
LF DB 'Hii $',0DH,0AH
.CODE
MAIN PROC
MOV AH,9
LEA DX,LF
MOV CX,3

LLL:
INT 21H
DEC CX
JNZ LLL


MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN

شكرا لكم ...

بانتظار الجواب

#2

لأن الطباعة في المقاطعة 21h والخدمة 9 تتم من خلال العنوان DS:DX

انت تضعين إزاحة السلسلة النصية في DX بالعبارة

lea dx, lf

لكن تبقى قيمة DS > uninitialized بالتالي تشير إلى عنوان خاطئ.

DS يجب أن تكون عنوان مقطع البيانات DATA ولكي تقومي بهذا نضيف سطرين هما

mov ax,@data
mov ds,ax

بهذا يصبح لديك مثلاً عنوان DS هو 1491h و DX إزاحة 0 تشير إلى السلسلة.. DS:DX = 1491:0 وهذا شئ سليم.

لكن أتصور ستواجهك مشكلة في وجود CRLF في نهاية السلسلة.. جربي بأي حال

CRLF = 0Ah,0Dh

تم تعديل هذه المشاركة بواسطة Xacker في 25 مايو 2009 في 19:17 — السبب: تصحيح كلمة

Do as I say, not as I do

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

#3

يمكن ان تستعملي مباشرة

قومي بتغيير ال

.MODEL SMALL
.STACK 100H

الى

org 100h

او يمكن ان تضيفي

assume ds:data

مباشرة تحت .code لكي يعرف ان ds يشير الى قسم .data

تم تعديل هذه المشاركة بواسطة fkugd2003 في 25 مايو 2009 في 19:27

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#4

تمت الإجابة على هذا الموضوع وفصل المشاركات اللاحقة في موضوع منفصل لتسهيل التصفح والأرشفة.

Do as I say, not as I do

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

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

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

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

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

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