مقایسه کردن رشته اول در رشته دوم به زبان اسمبلی

ehsantv

New Member
سلام دوستان عزیزم میشه کمک کنید بهم ؟
برنامه ای بنویسید که دو رشته st2 و st1 را از کاربر دریافت نماید برسی نماید آیا رشته st1 در رشته st2 وجود دارد یا نه ؟؟؟ و در خروجی چاپ نماید ؟؟
 

the_king

مدیرکل انجمن
سلام دوستان عزیزم میشه کمک کنید بهم ؟
برنامه ای بنویسید که دو رشته st2 و st1 را از کاربر دریافت نماید برسی نماید آیا رشته st1 در رشته st2 وجود دارد یا نه ؟؟؟ و در خروجی چاپ نماید ؟؟

کد:
.MODEL SMALL
.DATA
	msg1	DB 13, 10, "str1 :", 13, 10, "$"
	msg2	DB 13, 10, "str2 :", 13, 10, "$"
	str1Max	DB 50
		DB ?
	str1	DB 50 DUP(?)
	str2Max	DB 50
		DB ?
	str2	DB 50 DUP(?)
	msg3	DB 13, 10, "str1 found!", 13, 10, "$"
	msg4	DB 13, 10, "str1 not found!", 13, 10, "$"
.CODE
	.STARTUP
	MOV	AH, 9
	LEA	DX, msg1
	INT	21h
	MOV	AH, 0Ah
	LEA	DX, str1Max
	INT	21h
	MOV	AH, 9
	LEA	DX, msg2
	INT	21h
	MOV	AH, 0Ah
	LEA	DX, str2Max
	INT	21h
	MOV	BX, 0
	MOV	SI, 0
loop1:
	MOV	DL, str1[BX]
	CMP	DL, 13
	JE	found
	MOV	DH, str2[SI + BX]
	CMP	DL, DH
	JNE	next1
	INC	BX
	JMP	loop1
next1:
	INC	SI
	CMP	BX, 0
	JNE	next2
	CMP	DH, 13
	JE	notfound
next2:
	MOV	BX, 0
	JMP	loop1
found:
	MOV	AH, 9
	LEA	DX, msg3
	INT	21h
	JMP	finish
notfound:
	MOV	AH, 9
	LEA	DX, msg4
	INT	21h
finish:
	MOV	AH, 8
	INT	21h
	.EXIT
.STACK
END
 
  • مقایسه رشته ها (string) :
برای مقایسه دو متغیر از نوع صحیح یا اعشاری یا کاراکتری از دستور (if(x==y)) استفاده کردیم. در مورد string ما از تابع strcmp() بهره می گیریم. تابع strcmp() نیز در فایل سرآیند <string.h> قرار دارد .

1
2
3
4
5
6
7
#include <iostream.h>
#include <conio.h>
#include <string.h> // strcmp بکارگیری فایل سرآیند جهت استفاده از تابع

char str1[11] = "Ali";
char str2[11] = "Alireza";
strcmp(str1,str2);
در صورت برابری دو مقدار، تابع عدد صفر و اگر str1<str2 باشد تابع مقدار منفی برمی گرداند یعنی str1 از str2 کوچکتر است و در حالی که str1>str2 تابع مقدار مثبتی را برمی گرداند یعنی اینکه str1 از str2 بزرگتر است .
در کد بالا بنابر توضیحات داده شده، تابع strcmp مقداری منفی را بر میگرداند .
 

جدیدترین ارسال ها

بالا