PDA

View Full Version : سوال: فوری- ضروری بررسی یکسان بودن رشته از دو طرف



ali.m.a
دوشنبه 24 آذر 1393, 19:02 عصر
سلام اساتید ارجمند

خواهش و خواهش و خواهش میکنم در صورت امکان کد برنامه بررسی یکسان بودن یک رشته از ابتدا و انتها رو قرار بدید. خیلی خیلی ضروری و ضرب العجلی هست.
مانند (تخت، کبک و ...)
(این رو هم میدونم که اینجا به سوالات درسی پاسخ داده نمیشه ولی این سوال اصلا مربوط به درس نیست)

ممنونم....

ali.m.a
دوشنبه 24 آذر 1393, 19:24 عصر
دوستان کد زیر رو برای سوالم پیدا کردم فقط میشه یه توضیحاتی درباره بعضی از خطوط مهمش که لازمه رو بدید.
.MODEL SMALL.DATA
Str1 DB 80, ?, 80 DUP(?)
Msg1 DB "Please enter a text :", 13, 10, "$"
Msg2 DB 13, 10, "Yes$"
Msg3 DB 13, 10, "No$"
.CODE
.STARTUP
MOV AH, 9
LEA DX, Msg1
INT 21h
MOV AH, 0AH
LEA DX, Str1
INT 21H
LEA SI, Str1
MOV CL, [SI + 1]
MOV CH, 0
ADD SI, 2
MOV DI, SI
ADD DI, CX
DEC DI
L1:
CMP DI, SI
JBE L2
MOV AL, [SI]
CMP AL, [DI]
JNE L3
INC SI
DEC DI
JMP L1
L2:
LEA DX, Msg2
JMP L4
L3:
LEA DX, Msg3
L4:
MOV AH, 9
INT 21H
.EXIT
.STACK

END

masoud.8086
دوشنبه 24 آذر 1393, 21:29 عصر
سلام
ابتدا یه ارایه تعریف شده و ی رشته ..خوب اینجا با وقفه int 21h/ah,09 اومده پیغامو نمایش داده بعد با استفاده از int 21h/ah,0ah رشته رو دریافت کرده و در ارایه str ریخته و بعدش طول رشته رو در اورده و اول ارایه رو با اشاره گر si و اخرشو با di مشخص کرده و محتوای si رو داخل al ریخته و با محتوای di مقایسه کرده اگر مساوی نبود پیغام no میده حالا اگه برابر بود یکی به si اضافه میکنه و یکی از di کم میکنه و بعد دوباره مقایسه میکنه اگه مساوی نبود بازم به no میره و گر نه بازم مقایسه میکنه تا زمانی که si و di باهم مساوی بشن یعنی بهم برسن..اونوقت yes چاپ میشه..
موفق باشی.

rahimi4912
سه شنبه 09 دی 1393, 13:44 عصر
; multi-segment executable file template.

data segment
st1 label byte
max1 db 20
len1 db ?
buffer1 db dup "$"
dollar1 db "$"

st2 label byte
max2 db 20
len2 db ?
buffer2 db dup "$"
dollar2 db "$"
print_st db "please enter Word : $"
noEq db "The two words are not equal : $"
Eq db "The two words are is equal : $"

ends


stack segment
dw 128 dup(0)
ends


code segment
start proc far
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax

; add your code here
;print please enter Word 1
lea dx,print_st
mov ah,09
int 21h

;new line
MOV dl, 10
MOV ah, 02h
INT 21h
MOV dl, 13
MOV ah, 02h
INT 21h
;cin St 1
lea dx,st1
mov ah,0ah
int 21h

;new line
MOV dl, 10
MOV ah, 02h
INT 21h
MOV dl, 13
MOV ah, 02h
INT 21h

;print please enter Word 2
lea dx,print_st
mov ah,09
int 21h

;new line
MOV dl, 10
MOV ah, 02h
INT 21h
MOV dl, 13
MOV ah, 02h
INT 21h

;cin St 2
lea dx,st2
mov ah,0ah
int 21h

mov ch,len1
mov cl,len2
cmp cl,ch
mov cl,-1
jne p3
mov di,offset buffer1
mov si,offset buffer2
l1:





mov dl,[di]
mov dh,[si]
add di,1
add si,1

add cl,1
cmp cl,ch

je p2



cmp dl,dh
je l1
jne p3




;print End Words equal


p2:
;new line
MOV dl, 10
MOV ah, 02h
INT 21h
MOV dl, 13
MOV ah, 02h
INT 21h
lea dx,Eq
mov ah,09
int 21h
jmp End



;print End Words no equal
p3:
;new line
MOV dl, 10
MOV ah, 02h
INT 21h
MOV dl, 13
MOV ah, 02h
INT 21h

lea dx,noEq
mov ah,09
int 21h




End:mov ax, 4c00h ; exit to operating system.
int 21h
endp
ends


end start ; set entry point and stop the assembler.