السلام عليكم ..
هذا البرنامج يقرأ النص من احرف صغيرة إلى احرف كبيرة بطرح 20 خانه ست عشرية من جدول الآسكي وطبع النص على الشاشه.
المطلوب التعديل عليه ليقرأ نص ثم يطبعه بالمقلوب.
فكرتي هي حفظ البايت الأول من المصفوفه الذي يعبر عن طولها في رجستر BL ومن ثم الوصول ومن ثم عن طريق امرر القيمة إلى SI ريجستر ويبدأ العد من آخر المصفوفه ومن داخل الحلقة التكرارية اطرح واحد من القيمة كل مره حتى اصل للقيمة النهائية ولكن يطبع لي في المخرجات رموز غريبة :(.
اتمنى ان التوجيه والحل ، هل من تصحيح لي بطريقتي او بطريقة اخرى.
.MODEL SMALL
.STACK 200
.DATA
MES1 DB 'Enter your string : ', '$'
MES2 DB 0DH, 0AH,'Your String in Cap Letters: ','$'
MYSTR DB 21, 22 DUP('$')
CAP DB 21 DUP(?)
.CODE
.STARTUP
LEA DX, MES1
MOV AH, 09H
INT 21H
LEA DX, MYSTR
MOV AH, 0AH
INT 21H
;**************************************
; CONVERT TO CAP LETTERS
MOV CH, 00
MOV CL, MYSTR[1]
LEA SI, MYSTR+2
LEA DI, CAP
NXT: MOV AL, BYTE PTR [SI]
SUB AL, 20H
MOV [DI], AL
ADD SI, 1
INC DI
LOOP NXT
MOV BYTE PTR[DI], '$'
;**************************************
; NOW DISPLAY
CALL nl ; NEW LINE
LEA DX, MES2
MOV AH, 09H
INT 21H
LEA DX, CAP
MOV AH, 09
INT 21H
.EXIT
nl proc near
mov ah, 02
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h
ret
nl endp
;**************************************
END