PDA

View Full Version : سوال: گرفتن چندین رشته و نمایش بصورت ستاره



arashmidos200x
یک شنبه 01 شهریور 1388, 13:45 عصر
سلام من هرکاری کردم تو نوشتن این برنامه موفق نمکیشم اصلا نمیفهمم چجوره میشه کمکم کنید؟


یه برنامه که 10 تا رشته از ورودی بگیره به یک رشته تبدیل کنه و موقع چاپ همه کاراکتر هارو با ستاره جایگذین کنه مثل پسورد

tdkhakpur
یک شنبه 01 شهریور 1388, 16:08 عصر
سلام
خوب این که شما میگویید معنی انجام تمرینات شماست .
ولی برای اینکه مشکلاتان حل بشود شما برنامه چاپ رشته را که نوشتید ارسال کنید تغییرش بدیم.

arashmidos200x
یک شنبه 01 شهریور 1388, 16:56 عصر
دوست عزیز سوئال سوئاله دیگه حالا چه اشکال داره اگه بتونی جواب بدی به یکی کمک کنی


من یه برنامه نوشتم که یه رشته بگیره اینتوری چاپ کنخ مشکلم سر اینه که اینجا چندتا رشتست ادغام کردن اینا و چیزائی که باید تو data اضافه کردو بلد نیستم

tdkhakpur
یک شنبه 01 شهریور 1388, 17:09 عصر
واقعا وقت ندارم ولی یکدفع خیلی تاپیک ارسال کردید.
ببینید برای راحتی کار توابع سازی کنید.
1 - چاپ یک کاراکتر در محل مورد نظر


PUTCHAR MACRO X, Y, CHAR, COLOR, BKCOLOR
LOCAL LABEL_ , WRD
JMP LABEL_
WRD DW ?
LABEL_:
PUSH AX
PUSH BX
PUSH DX
PUSH ES
MOV AX, X
MOV BX, 2
MUL BX
MOV WORD PTR WRD ,AX
MOV AX, Y
MOV BX, 160
MUL BX
ADD WORD PTR WRD ,AX
MOV BX, 0b800h
PUSH BX
POP ES
MOV BX, WRD
MOV DL, CHAR
MOV DH, COLOR
OR DH, BKCOLOR
MOV WORD PTR ES:[BX] ,DX
POP ES
POP DX
POP BX
POP AX
ENDM

2 چاپ رشته با استفاده از تابع نوشته شده در بند 1


PRINTS MACRO X, Y, STRING, COLOR, BKCOLOR
LOCAL STROFFSET, JMP_1, JMP_2, CHAR_, OLDX, X1, Y1
JMP JMP_1
X1 DW X
Y1 DW Y
CHAR_ DB ?
OLDX DW ?
JMP_1:
MOV DX, X
MOV X1, DX
MOV DX, Y
MOV Y1, DX
MOV BX, 0
JMP_2:
MOV DL, BYTE PTR STRING[BX]
MOV CHAR_, DL
PUSH BX
PUTCHAR X1, Y1, CHAR_, COLOR, BKCOLOR
ADD X1, 1
POP BX
INC BX
CMP BYTE PTR STRING[BX], 0
JNE JMP_2
ENDM

3- دریافت ورودی از صفح کلید یا همان رشته.
این


GETKEY MACRO
LOCAL BEGIN, JUMP1, JUMP2, JUMP3, JUMPEND, DKEYS, KEY
JMP BEGIN
DKEYS DW 1001, 1002, 1003, 1004, 1008, -1
KEY DW ?
BEGIN :
PUSH BP
PUSH BX
LEA BP, DKEYS
JUMP1:
MOV AH, 2
INT 16h
MOV DX, WORD PTR [BP];-----;
MOV KEY, DX ;-----;
MOV AH, 0
AND AX, KEY
MOV KEY, DX
CMP AX, KEY
JE JUMPEND
INC BP
CMP BP, 5
JB JUMP1
MOV AH, 1 ; if buffer is empty jz else jnz
INT 16h
LEA BP, DKEYS
JZ JUMP1
MOV AH, 0 ; wait for pressed one key.
INT 16h
CMP AL, 0
JNE JUMP2
MOV KEY, 0
MOV BYTE PTR KEY, AH
ADD KEY, 1000
JMP JUMP3
JUMP2 :
MOV KEY, 0
MOV BYTE PTR KEY, AL
JUMP3 :
JUMPEND:
POP BX
POP BP
MOV DX, KEY
ENDM
;---------------------------------------------------------------------------;
;== get str from keyboaed ================================================== ;
;STR is address of str buffer
;ENDKEY is that you press key to terminate input action ....
GETSTR MACRO X, Y, STR, LEN, ENDKEY
LOCAL BEGIN, EXIT_, LOOP_, KEY, JUMP1, CHR, X1
JMP BEGIN
KEY DW ?
X1 DW ?
CHR DB ?
BEGIN:
MOV X1, X
GOTOXY X1, Y
MOV CX, LEN
MOV BX, 0
LOOP_:;----------------------------------------;
PUSH CX ;
PUSH BX ;
GETKEY ; key is in dx
MOV KEY, DX ;
POP BX ;
POP CX ;
CMP KEY, 1000 ;
JB JUMP1 ;
SUB KEY, 1000 ;
JUMP1: ;
CMP KEY, ENDKEY ;
JE EXIT_ ;
MOV DX, KEY ;
MOV BYTE PTR STR[BX], DL ;
INC BX ;
MOV CHR, DL ;---------------;
PUTCHAR X1, Y, CHR, 15, 0 ;
ADD X1, 1 ;
GOTOXY X1, Y ;----------------;
DEC CX ;
CMP CX, 0 ;
JE EXIT_ ;
JMP FAR PTR LOOP_;------------------------;
EXIT_: ;
MOV BYTE PTR STR[BX], 0 ;
ENDM

خودتان الگوریتم را پیاده دسازی کنید