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

display the number of capitals letters in the sentence.

مغلق
بدأه Computeryah في 11 ديسمبر 2006 · 2 رد · 909 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

المطلوب هو :

اقتباس
Write a program that takes an input sentence from the user and on next line display the number of capitals letters in the sentence.

Note:

· User is not allowed to enter a sentence with more than 9 Capital letters.

حلي :

 

.MODEL SMALL
.STACK 100H
.DATA

MSG1 DB 'PLEASE ENTER YOUR SENTENCE:  $'

MSG2 DB 0DH,0AH,'THE NUMBER OF CAPITAL LETTERS IN SENTENCE :$'

MSG3 DB 0DH,0AH,'You have entered more than 9 capital liter $'


.CODE

MAIN PROC


MOV AX,@DATA;initialize DS
MOV DS,AX


;DISPLAY MSG1

LEA DX,MSG1 ;GET MSG1
MOV AH,9 ;DISPLAY STRING
INT 21H ;DISPLAY MSG1


;READ  CHARCHTER

;if the user has entered more than 9 capital liter exit ...

MOV bx,0
mov cx,9

MOV AH,1 ;READ sentenc




TOP:

INT 21h

Mov bl,al

cmp bl,'A'

JGE Count

CMP bl,'Z'
JLE Count


Count:

INC bx
LOOP TOP


LEA DX,MSG2 ;GET MSG2
MOV AH,9 ;DISPLAY STRING
INT 21H ;DISPLAY MSG1

mov ah,2
mov DX,BX
INT 21H



MOV AH,4CH; return control to DOS
INT 21H

MAIN ENDP

 END MAIN

END

مشكلتي :

اني لم اعرف كيف اعمل count لـ Capital letters.

" User is not allowed to enter a sentence with more than 9 Capital letters. "

#2

السلام عليكم , عملت تعديلات على الكود .. لكن فيه مشكلة وهي انه البرنامج ياخذ من اليوزر ادخال واحد فقط وليس جملة !!!

.MODEL SMALL
.STACK 100H
.DATA

MSG1 DB 'PLEASE ENTER YOUR SENTENCE:  $'

MSG2 DB 0DH,0AH,'THE NUMBER OF CAPITAL LETTERS IN 

SENTENCE :$'

MSG3 DB 0DH,0AH,'You have entered more than 9 capital 

LETTERS $'


.CODE

MAIN PROC


MOV AX,@DATA;initialize DS
MOV DS,AX


;DISPLAY MSG1

LEA DX,MSG1 ;GET MSG1
MOV AH,9	;DISPLAY STRING
INT 21H	;DISPLAY MSG1


MOV AH,1	;READ sentenc
mov bX,0
TOP:
MOV AH,1	;READ sentenc
INT 21h


WHILE_:


cmp al,0dh

je END_WHILE


cmp al,'A'
JMP Count
CMP al,'Z'
JMP Count

LOOP TOP

Count:

INC bx

cmp bx,9
JLE Display1
JG Display2



END_WHILE:


Display1:

LEA DX,MSG2 ;GET MSG1
MOV AH,9	;DISPLAY STRING
INT 21H	;DISPLAY MSG1

mov ah,2
mov DX,BX
INT 21H


Display2:

LEA DX,MSG3 ;GET MSG1
MOV AH,9	;DISPLAY STRING
INT 21H	;DISPLAY MSG1


MOV AH,4CH; return control to DOS
INT 21H



MAIN ENDP

	END MAIN

END
#3
اقتباس
LOOP TOP

الـ LOOP Instrection بتاخد عدد مرات التكرار من الـ CX Register

والـ CX Register في البداية بيكون 0 يعني اللوب اللي عندك ما بتتنفذ ولا مرة :)

لكن أعتقد البرنامج ما بنقدر نحدد فيه عدد المرات اللي بناخد بيا أحرف من اليوزر

نهاية البرنامج لازم تكون إما المستخدم يدخل الكركتتر $ أو يصير العداد يساوي 9

حاولي بالطريقة هادي

تحياتي

ENG-GAZA.GIF

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

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