View Full Version : مبتدی: چاپ کردن ستاره در صفحه نمایش
vistacali
یک شنبه 17 اردیبهشت 1391, 09:59 صبح
سلام دوستان من یک برنامه نوشتم که شکل زیر را چاپ میکند
*
**
***
****
data segment
Nl db 0ah,0dh,'$'
i db ?
j db ?
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
mov i,1
f1: cmp i,7
je ef1
mov j,1
f2: mov al,i
cmp j,al
je ef2
mov ah,02h
mov dl,'*'
int 21h
inc j
jmp f2
ef2:
mov ah,09h
lea dx,NL
int 21h
inc i
jmp f1
ef1:
mov ax, 4c00h
int 21h
ends
end start
حالا میخوام اینو به این طریق هم چاپ کنم
*
***
*****
*******
میدونم باید یک حلقه دیگه بزارم بالای حلقه چاپ * ولی حالا موندم اول حلقه کاراکتر اسپیس رو چاک کنم و برم سراغ ستاره یا ستاره و اسپیس اگر کمی توضیح بدید من چکار کنم توی این کد ممنون میشم :گیج:
ssbostan
یک شنبه 17 اردیبهشت 1391, 20:51 عصر
سلام، كدي كه نياز داري به اين روشي كه نوشتم قابل پياده سازي هست:
mov di, 11
mov si, -1
mov cx, 10
do_1:
mov cx, di
dec di
do_sp:
cmp di, 0
jz exit
mov ah, 02h
mov dl, ' '
int 21h
loop do_sp
push cx
add si, 2
mov cx, si
do_2:
mov ah, 02h
mov dl, '*'
int 21h
loop do_2
mov dl, 0ah
int 21h
mov dl, 0dh
int 21h
pop cx
loop do_1
exit:
اگر نياز به توضيح داره بگو...
موفق باشيد.
vistacali
دوشنبه 18 اردیبهشت 1391, 01:27 صبح
تشکر دوست گرامی اگر یک توضیح کوچولو هم بدی ممنون میشوم
MostafaMohammadi
دوشنبه 18 اردیبهشت 1391, 21:19 عصر
به مثال زیر دقت کن:
86791
شکل چاپ شدن گلهای ستارهای توی این مسئله شبیه یک هرم می مونه. اگه تعداد خطوط شکل رو ارتفاع این هرم در نظر بگیری، می بینی:
توی خط صفرم به تعداد Height - 1 کاراکتر خطفاصله چاپ شده و یک کاراکتر گل ستاره ای و مکان نما به خط بعد رفته،
توی خط اول به تعداد Height - 2 کاراکتر خط فاصله چاپ شده و دو تا کاراکتر گل ستاره ای و مکان نما به خط بعد رفته،
توی خط دوم به تعداد Height - 3 کاراکتر خط فاصله چاپ شده و سه تا کاراکتر گل ستاره ای و مکان نما به خط بعد رفته،
توی خط سوم به تعداد Height - 4 کاراکتر خط فاصله چاپ شده و چهار تا کاراکتر گل ستاره ای و مکان نما به خط بعد رفته.
الگوریتمی که من برای این مسئله بلدم با الگوریتمی که شما استفاده کردی فرق داره ولی الگوریتم بدی نیست:
86790
laveran
شنبه 06 خرداد 1391, 00:44 صبح
اگه بخواهیم برای همین برنامه ورودی تعریف کنیم چیکار باید بکنیم؟؟ مثلا اگه عدد5 را وارد کنیم ستاره ها در 5 سطر چاپ بشن
ssbostan
شنبه 06 خرداد 1391, 09:15 صبح
سلام؛
كدي كه در پست بالا نوشتم رو نگاه كنيد...
مقدار ورودي كاربر در cx و يك مقدار بيشتر از اون در di و يك نمونه هم به اين صورت:
mov ah, 01h
int 21h
sub al, 30h
mov cx, 0
mov cl, al
mov di, cx
inc di
mov ah, 09h
lea dx, ent
int 21h
mov si, -1
do_1:
mov cx, di
dec di
do_sp:
cmp di, 0
jz exit
mov ah, 02h
mov dl, ' '
int 21h
loop do_sp
push cx
add si, 2
mov cx, si
do_2:
mov ah, 02h
mov dl, '*'
int 21h
loop do_2
mov dl, 0ah
int 21h
mov dl, 0dh
int 21h
pop cx
loop do_1
exit:
mov ax, 4c00h
int 21h
ent db 13, 10, 24h
موفق باشيد.
Mo-Resa
شنبه 21 دی 1392, 20:02 عصر
سلام مثلث بالا را برعکس میخوام با گرفتن عدد چاپ کنه چطوری میشه این کاررا انجام داد؟
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.