PDA

View Full Version : سوال: تبدیل رشته



mazaher5723
جمعه 22 دی 1391, 19:14 عصر
سلام اساتید محترم
چطور میشه رشته
a="23242526"
رو دو تا دوتا بریزی توی متغییر؟ یا ارایه؟


ممنون میشم اگه لطف کنید راهنماییم کنید

hosein320
جمعه 22 دی 1391, 19:29 عصر
dim s() as string
dim L as byte
L=len(s)

a="23242526"

dim i as integer
for i = 1 to L-2 step 2
s(i)=mid(a,i,2)
next

mazaher5723
جمعه 22 دی 1391, 19:30 عصر
dim s() as string
dim L as byte
L=len(s)

a="23242526"

dim i as integer
for i = 1 to L-2 step 2
s(i)=mid(a,i,2)
next

منظورم زبان اسمبلیه دوست عزیز

the king
شنبه 23 دی 1391, 05:41 صبح
سلام اساتید محترم
چطور میشه رشته
a="23242526"
رو دو تا دوتا بریزی توی متغییر؟ یا ارایه؟


ممنون میشم اگه لطف کنید راهنماییم کنید

اگه اونها 24 و 25 و 26 هستند و اعداد Decimal اند :


.MODEL SMALL
.DATA
a DB "23242526"
b DB 4 DUP(?)
.CODE
.STARTUP
MOV BL, 10
MOV CX, 4
LEA SI, a
LEA DI, b
CLD
loop_1:
LODSB
SUB AL, 30h
MUL BL
MOV AH, AL
LODSB
SUB AL, 30h
ADD AL, AH
STOSB
loop loop_1


.EXIT
.STACK
END


اما اگر اونها 24h و 25h و 26h هستند و اعداد Hexadecimal اند :


.MODEL SMALL
.DATA
a DB "23242526"
b DB 4 DUP(?)
.CODE
.STARTUP
MOV BL, 16
MOV CX, 4
LEA SI, a
LEA DI, b
CLD
loop_1:
LODSB
SUB AL, 30h
CMP AL, 10
JB next_1
SUB AL, 7
next_1:
MUL BL
MOV AH, AL
LODSB
SUB AL, 30h
CMP AL, 10
JB next_2
SUB AL, 7
next_2:
ADD AL, AH
STOSB
DEC CX
JNZ loop_1


.EXIT
.STACK
END

دقت کنید که در کد دوم نمی توانستیم از دستور LOOP استفاده کنیم، چون LOOP فقط زمانی قابل استفاده است که کد داخل حلقه کم باشد،
یعنی حجم کد داخل حلقه در حد 128 بایت باشد، چون LOOP نمی تواند دورتر از 127+ و 128- بایت پرش کند.