يعطيكم العافية
الخدمات تبع Int 10h
الخدمة 01
لتحديد حجم المشيرة
ممكن تعطوني معلومات عن هذه الخدمة
و شو يلي نقصده بـــ
خط بداية المسح
خط نهاية المسح
شكرا لكم
يعطيكم العافية
الخدمات تبع Int 10h
الخدمة 01
لتحديد حجم المشيرة
ممكن تعطوني معلومات عن هذه الخدمة
و شو يلي نقصده بـــ
خط بداية المسح
خط نهاية المسح
شكرا لكم
السلام عليكم,
هذا سيحدد مجرى أو مسار المشيرة إن صح التعبير كما يحدد إذا كنا نريدها أن تظهر أم تختفي.
ففي الرجستر CH كما ذكرت سيحتوي على بداية الخط للمشيرة بينما CL يحتوي على الخط الأقصى وبما أن عدد الخطوط لا يتعدى 30 فهذه القيم ستحدد فقط في الخمس بت للرجسترات السابقة - بت من 0 إلى 4 - بينما البتات 5 و 6 ل CH ستحدد إذا كنا نريد للمشيرة أن تظهر أم لا . فإذا أردناها أن تظهر نجعل هذه البتات تساوي 00 بينما نجعلها تساوي 01 في الحالة الأخرى علما أن البت 7 يكون دائما 0.
قم بعمل برنامج وحاول تغيير هذه المعطيات وستلاحظ الفرق.
إلى اللقاء.
شكرا كثير
أنا فهمان شو من الحكي بس دخلت في الحيط لما حكيت على البتات
ممكن تقول لي
CH يدل على أي رقم
CL يدل على أي رقم
شكر لك
عملت بنصيحتك
كتبت ( ممكن أسميه برنامج ) اليوم
و بعد الترجمه كان في أخطاء أثناء النتفيذ
ما عرفت أحلها
ممكن تقول لي ليش هذه الأخطاء
و أنا شاكر لك و لجهدك
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السلام عليكم,
حسب الصورة التي وضعت فإن CH أو أقول الخمسة بتات الأولى منها تدل على الرقم 3 بينما CL سيدل على الرقم 1 . ولكن هنا يجب أن نعرف أن قيم هاذين الرجسترين لن تأخذ أي أرقام نريدها بل ذلك سيكون أيضا حسب كرت الشاشة التي عندنا . وأقول مثلا في وقت بعيد كانت كرت الشاشة أسود وأبيض وكان الحرف يكتب على 8 خطوط فهنا سيكون مسار CH بين 1 و 7 لنترك ل CL رقم 8 لأن هذا الرجستر الأخير يجب أن يكون أكبر من الأول وإلا ستظهر لنا مشيرة غريبة وقد تنكسر في بعض الحالات. هذا كمثال عن كرت الشاشة ويجب أن تعرف ما نوع كرت الشاشة اللي عندك وكم تتحمل من سطور لتعرف مسار المشيرة وسيكون هذا المسار هو المربع الذي يكتب فيه حرف ما.
إلى اللقاء.
شكرا كثير
الأن كرت الشاشة يلي عندي VGA
كم مسار للـ CH
علما إنه عند تطبيق الخدمة 03
القيمة المردودة هي
CX = 0D0E
شكرا لك
السلام عليكم,
لا أتذكر الأرقام الحقيقية ولكنها لا بد وأن تكون لا تقل عن 16 .
لذى أنصح أن تقوم بتجريب عدة أرقام حتى تتأكد من الرقم الصحيح الذي تتقبله الكرت.
أتمنى لك التوفيق وإلى اللقاء.
هذا الموضوع مغلق.