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

تحديد حجم المشيرة

مغلق
بدأه Desigen في 7 سبتمبر 2004 · 8 رد · 733 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يعطيكم العافية

الخدمات تبع Int 10h

الخدمة 01

لتحديد حجم المشيرة

ممكن تعطوني معلومات عن هذه الخدمة

و شو يلي نقصده بـــ

خط بداية المسح

خط نهاية المسح

شكرا لكم

#2

السلام عليكم,

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

ففي الرجستر CH كما ذكرت سيحتوي على بداية الخط للمشيرة بينما CL يحتوي على الخط الأقصى وبما أن عدد الخطوط لا يتعدى 30 فهذه القيم ستحدد فقط في الخمس بت للرجسترات السابقة - بت من 0 إلى 4 - بينما البتات 5 و 6 ل CH ستحدد إذا كنا نريد للمشيرة أن تظهر أم لا . فإذا أردناها أن تظهر نجعل هذه البتات تساوي 00 بينما نجعلها تساوي 01 في الحالة الأخرى علما أن البت 7 يكون دائما 0.

قم بعمل برنامج وحاول تغيير هذه المعطيات وستلاحظ الفرق.

إلى اللقاء.

#3

شكرا كثير

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

ممكن تقول لي

CH يدل على أي رقم

CL يدل على أي رقم

شكر لك

post-79-1094581133_thumb.gif

#4

عملت بنصيحتك

كتبت ( ممكن أسميه برنامج ) اليوم

و بعد الترجمه كان في أخطاء أثناء النتفيذ

ما عرفت أحلها

ممكن تقول لي ليش هذه الأخطاء

و أنا شاكر لك و لجهدك

PAGE 60,132
TITLE CUR_SIZE (EXE) CURSOR SIZE
;---------------------------------------------------------------------
        .MODEL  SMALL
        .STACK  64
        .DATA
;---------------------------------------------------------------------
ASK1    DB      20 DUP ('Enter The CH Data : ')
ASK2    DB      20 DUP ('Enter The CL Data : ')
EXIT1   DB      16 DUP ('Enter 0 To Exit')
;---------------------------------------------------------------------
CH1     DB      1 DUP (' ')
CH2     DB      1 DUP (' ')
;---------------------------------------------------------------------
        .CODE
BEGIN   PROC    FAR
        CALL    GETDATA
        PUSH    CX
        CALL    CLEAR
B10:
        LEA     DX,EXIT1
        MOV     CX,16
        CALL    ASK
        CALL    GETDATA
        CALL    MOVECUR

        LEA     DX,ASK1
        MOV     CX,20
        CALL    ASK

        LEA     DX,CH1
        CALL    GETCX
        CMP     CH1,00
        JE      EXIT

        LEA     DX,ASK2
        MOV     CX,20
        CALL    ASK

        LEA     DX,CH2
        CALL    GETCX

        CALL    RESIZE
        JMP     B10
EXIT:
        CALL    RETSIZE
        MOV     AH,4CH
        INT     21H

BEGIN   ENDP 
;---------------------------------------------------------------------
RETSIZE PROC    NEAR
        MOV     AH,01
        POP     CX
        INT     10H
        RET
RETSIZE ENDP
;---------------------------------------------------------------------
MOVECUR PROC    NEAR
        MOV     AH,02
        MOV     BH,00
        MOV     DL,00
        INT     10H
        RET
MOVECUR ENDP 
;---------------------------------------------------------------------
RESIZE  PROC    NEAR
        MOV     AH,01
        MOV     CH,CH1
        MOV     CL,CH2
        INT     10H
        RET
RESIZE  ENDP
;---------------------------------------------------------------------
GETCX   PROC    NEAR
        MOV     AH,3FH
        MOV     BX,00
        MOV     CX,1
        INT     21H
        RET
GETCX   ENDP
;---------------------------------------------------------------------
ASK     PROC    NEAR
        MOV     AH,40H
        MOV     BX,01
        INT     21H
        RET
ASK     ENDP
;---------------------------------------------------------------------
GETDATA PROC    NEAR
        MOV     AH,03
        MOV     BH,00
        INT     10H
        RET
GETDATA ENDP        
;---------------------------------------------------------------------
CLEAR   PROC    NEAR
        MOV     AH,06
        MOV     AL,00
        MOV     BH,17H
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
        RET
CLEAR   ENDP
;---------------------------------------------------------------------
        END     BEGIN
#5

صح البرنامج ما عم يطلع من تلقاء نفسه

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

#6

السلام عليكم,

حسب الصورة التي وضعت فإن CH أو أقول الخمسة بتات الأولى منها تدل على الرقم 3 بينما CL سيدل على الرقم 1 . ولكن هنا يجب أن نعرف أن قيم هاذين الرجسترين لن تأخذ أي أرقام نريدها بل ذلك سيكون أيضا حسب كرت الشاشة التي عندنا . وأقول مثلا في وقت بعيد كانت كرت الشاشة أسود وأبيض وكان الحرف يكتب على 8 خطوط فهنا سيكون مسار CH بين 1 و 7 لنترك ل CL رقم 8 لأن هذا الرجستر الأخير يجب أن يكون أكبر من الأول وإلا ستظهر لنا مشيرة غريبة وقد تنكسر في بعض الحالات. هذا كمثال عن كرت الشاشة ويجب أن تعرف ما نوع كرت الشاشة اللي عندك وكم تتحمل من سطور لتعرف مسار المشيرة وسيكون هذا المسار هو المربع الذي يكتب فيه حرف ما.

إلى اللقاء.

#7

شكرا كثير

الأن كرت الشاشة يلي عندي VGA

كم مسار للـ CH

علما إنه عند تطبيق الخدمة 03

القيمة المردودة هي

CX = 0D0E

شكرا لك

#8

السلام عليكم,

لا أتذكر الأرقام الحقيقية ولكنها لا بد وأن تكون لا تقل عن 16 .

لذى أنصح أن تقوم بتجريب عدة أرقام حتى تتأكد من الرقم الصحيح الذي تتقبله الكرت.

أتمنى لك التوفيق وإلى اللقاء.

#9

شكرا كثير لك

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

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