View Full Version : مبتدی: چاپ کردن ستاره در  صفحه نمایش
  
vistacali
یک شنبه 17 اردیبهشت 1391, 10: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, 21: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, 02:27 صبح
تشکر  دوست گرامی اگر  یک توضیح کوچولو  هم بدی  ممنون میشوم
MostafaMohammadi
دوشنبه 18 اردیبهشت 1391, 22:19 عصر
به مثال زیر دقت کن:
86791
شکل چاپ شدن گلهای ستارهای توی این مسئله شبیه یک هرم می مونه. اگه تعداد خطوط شکل رو ارتفاع این هرم در نظر بگیری، می بینی:
توی خط صفرم به تعداد Height - 1 کاراکتر خطفاصله چاپ شده و یک کاراکتر گل ستاره ای و مکان نما به خط بعد رفته،
توی خط اول به تعداد Height - 2 کاراکتر خط فاصله چاپ شده و دو تا کاراکتر گل ستاره ای و مکان نما به خط بعد رفته،
توی خط دوم به تعداد Height - 3 کاراکتر خط فاصله چاپ شده و سه تا کاراکتر گل ستاره ای و مکان نما به خط بعد رفته،
توی خط سوم به تعداد Height - 4 کاراکتر خط فاصله چاپ شده و چهار تا کاراکتر گل ستاره ای و مکان نما به خط بعد رفته.
الگوریتمی که من برای این مسئله بلدم با الگوریتمی که شما استفاده کردی فرق داره ولی الگوریتم بدی نیست:
86790
laveran
شنبه 06 خرداد 1391, 01:44 صبح
اگه بخواهیم برای همین برنامه ورودی تعریف کنیم چیکار باید بکنیم؟؟ مثلا اگه عدد5 را وارد کنیم ستاره ها در 5 سطر چاپ بشن
ssbostan
شنبه 06 خرداد 1391, 10: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, 21:02 عصر
سلام مثلث بالا را  برعکس میخوام با گرفتن عدد چاپ کنه چطوری میشه این کاررا انجام داد؟
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.