PDA

View Full Version : دریافت رشته



computer_soft
سه شنبه 12 بهمن 1389, 01:15 صبح
سلام
ممکنه کد دریافت رشته رو کامل بنویسین هم قسمت data و هم فسمت code اش رو.
ممنون

xman_1365_x
سه شنبه 12 بهمن 1389, 18:23 عصر
كدي رو نوشتم كه 9 كاراكتر از طرف شما ميگيره! كاراكتر آخر هم(دهمين) كد اسكي اينتر هست كه پايان رو نشون ميده
بايت اول بافر كه الان 10 هست طولي كه بافر دريافت ميكنه
دومي كه مشخص نكرديم بعد از دريافت تعداد رشته هست! n-1 طول رشته دريافتي


stack segment para stack 'stack'
dw 128 dup (?)
stack ends
data segment para stack 'data'
buffer db 10,?, 10 dup(' ')
pkey db 13,10,"press any key...$"
data ends
code segment para stack 'code'
main proc far
assume cs:code,ds:data,ss:stack
mov ax,data
mov ds,ax
;get & display buffer
lea dx, buffer
mov ah, 0ah
int 21h

;new line
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h

;display buffer
xor bx, bx
mov bl, buffer[1]
mov buffer[bx+2], '$'
mov dx, offset buffer + 2
mov ah, 9
int 21h

lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
main endp
code ends
end main

computer_soft
سه شنبه 12 بهمن 1389, 23:08 عصر
الان اگه بخوام 2 تا رشته از کاربر بگیرم باید این همه بنویسم؟ اونم 2بار؟

xman_1365_x
چهارشنبه 13 بهمن 1389, 01:15 صبح
اولش كمي سخته يواش يواش عادت ميكنيد من كل اون سورس رو توي يك دقيقه نوشتم،كلا خصلت زبان اسمبلي همينه كد هاش طولاني هست. شما وقتي يك خط توي زبان سطح بالا براي انجام جمع مينويسي اينجا بايد در چند خط معادلشو بنويسي اونجا كامپايلر زحمتشو براتون ميكشه :چشمک: تنها كاري كه ما اينجا ميتونيم انجام بديم بهينه سازي انجام بديم هم از جهت اينكه برنامه نويس ديگه بتونه كد رو بخونه هم بهينه سازي براي زمان اجراي الگوريتم
من كمي كامل نوشتم(به جزئيات ديگش پرداختم) طولاني تر شد ، وظيفه كد زير گرفتن دو رشته و ذخيره در آرايه


stack segment para stack 'stack'
dw 128 dup (?)
stack ends
data segment para stack 'data'
buffer1 db 10,?, 10 dup(' ')
buffer2 db 10,?, 10 dup(' ')
data ends
code segment para stack 'code'
main proc far
assume cs:code,ds:data,ss:stack
mov ax,data
mov ds,ax
;get & display buffer1
lea dx, buffer1
mov ah, 0ah
int 21h
;get & display buffer2
lea dx, buffer2
mov ah, 0ah
int 21h

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
main endp
code ends
end main