the_king
مدیرکل انجمن
برای محاسبه تعداد تکرار یک کاراکتر مثلا o در درون یک رشته، مثلا رشته "open book" کد زیر مناسب است.
اگر کاراکتر مورد نظر در آن رشته وجود نداشت، پیغام No و در غیر اینصورت پیغام Yes به همراه تعداد تکرار
آن کاراکتر نمایش داده می شود :
اگر کاراکتر مورد نظر در آن رشته وجود نداشت، پیغام No و در غیر اینصورت پیغام Yes به همراه تعداد تکرار
آن کاراکتر نمایش داده می شود :
کد:
.MODEL SMALL
.DATA
msg1 DB "Please enter a string :",13,10,"$"
msg2 DB 13,10,"Please enter a character :",13,10,"$"
msg3 DB 13,10,"Yes ($"
msg4 DB 13,10,"No$"
msg5 DB 13,10,"Press any key to continue.",13,10,"$"
string DB 80
DB ?
DB 80 DUP (?)
char DB 2
DB ?
DB 2 DUP (?)
.CODE
.STARTUP
MOV AH, 9
LEA DX, msg1
INT 21h
loop_1:
MOV AH, 0ah
LEA DX, string
INT 21h
CMP string[1], 0
JZ loop_1
MOV AH, 9
LEA DX, msg2
INT 21h
loop_2:
MOV AH, 0ah
LEA DX, char
INT 21h
CMP char[1], 0
JZ loop_2
MOV BX, 0
LEA SI, string[2]
MOV AH, char[2]
MOV CL, string[1]
MOV CH, 0
loop_3:
CMP AH, [SI]
JNE next_1
INC BX
next_1:
INC SI
LOOP loop_3
CMP BX, 0
JZ next_2
MOV AH, 9
LEA DX, msg3
INT 21h
MOV CX, 0
MOV AX, BX
MOV BX, 10
loop_4:
MOV DX, 0
DIV BX
PUSH DX
INC CX
CMP AX, 0
JNE loop_4
MOV AH, 2
loop_5:
POP DX
ADD DL, "0"
INT 21H
LOOP loop_5
MOV DL, ")"
INT 21h
JMP next_3
next_2:
MOV AH, 9
LEA DX, msg4
INT 21h
next_3:
MOV AH, 9
LEA DX, msg5
INT 21h
MOV AH, 8
INT 21h
.EXIT
.STACK
END