laveran
سه شنبه 30 خرداد 1391, 13:13 عصر
سلام . این برنامه را با همکلاسی ام نوشتم اما الان بهش دسترسی ندارم تا سوالمو بپرسم وباید برنامه را سر جلسه امتحان به استاد تحویل بدم برنامه چنینه که یک عدد چند رقمی از ورودی بگیره به اندازه ی مقدار ورودی در صفحه ی نمایش ستاره چاپ کنه. مثلا اگه ورودی را 3 دادیم ستاره در 3 سطر به این شکل چاپ بشه
*
**
***
برنامه کار میکنه و خطایی نداره اما در چند خط از برنامه موندم که چرا نوشتیم و کارشون چیه؟؟؟ به همکلاسی هام هم دسترسی ندارم تا کاربرد این دستورات را بپرسم اگه راهنمایی ام کنید ممنون میشم. اول کل برنامه را می نویسم تا راحت تر راهنمایی کنید بعدا دستوراتی که در آنجا اشکال دارم را میزارم.
.model small
.stack 64
.data
h1 db 'please enter a number: $'
h2 db 13,10,'$'
adad dw 0
j DW 1
.code
main proc far
mov ax, @data
mov ds, ax
mov es, ax
;For text print
lea dx,h1
mov ah,09
int 21h
;For data input
begin1:
mov ah,01h
int 21h
cmp al,13
je k
sub al,48
mov bl,al
mov ax,10
mul adad
add ax,bx
mov adad,ax
jmp begin1
k:
mov bx,adad
mov cx,1
mov ah,02h
mov bh,00
mov dh,05
mov dl,00
int 10h
a1:
cmp cx,bx
ja c
mov dx,1
mov j,dx
p:
cmp j,cx
ja q
mov ah,02h
mov dl,’*’
int 21h
inc j
jmp p
q:
lea dx,h2
mov ah,09
int 21h
inc cx
jmp a1
c:
mov ax, 4c00h
int 21h
main endp
end main
در این دستور 13 کد کلید اینتره که به سطر بعدی میره اما چرا با alمقایسه میکنیم؟؟
cmp al,13h
je k
مورد بعدی این دستوره
mov dx,1
mov j,dx
1 را داخل dx میریزه و dx میشه یک و بعد در دستور بعدی یک را داخل j میریزه j هم میشه یک که در بالای برنامه مقدار j را یک تعریف کرده بودیم... چرا این دو تا دستور را نوشتیم؟؟ کاربردشون چیه استاد همینو ازم پرسید و من گفتم اگه این دستور را ننویسیم ستاره به مقدار ورودیمون در اِن سطر چاپ میشه اما به ستون اضافه نمیشه.. استاد هم گفت کامل نیست ... من که گیچ شدم :اشتباه: دقیقا کاربرد این دستور چیه؟؟ برای چی این دستورو نوشتیم؟؟ اگه توضیح بدید ممنون میشم.
*
**
***
برنامه کار میکنه و خطایی نداره اما در چند خط از برنامه موندم که چرا نوشتیم و کارشون چیه؟؟؟ به همکلاسی هام هم دسترسی ندارم تا کاربرد این دستورات را بپرسم اگه راهنمایی ام کنید ممنون میشم. اول کل برنامه را می نویسم تا راحت تر راهنمایی کنید بعدا دستوراتی که در آنجا اشکال دارم را میزارم.
.model small
.stack 64
.data
h1 db 'please enter a number: $'
h2 db 13,10,'$'
adad dw 0
j DW 1
.code
main proc far
mov ax, @data
mov ds, ax
mov es, ax
;For text print
lea dx,h1
mov ah,09
int 21h
;For data input
begin1:
mov ah,01h
int 21h
cmp al,13
je k
sub al,48
mov bl,al
mov ax,10
mul adad
add ax,bx
mov adad,ax
jmp begin1
k:
mov bx,adad
mov cx,1
mov ah,02h
mov bh,00
mov dh,05
mov dl,00
int 10h
a1:
cmp cx,bx
ja c
mov dx,1
mov j,dx
p:
cmp j,cx
ja q
mov ah,02h
mov dl,’*’
int 21h
inc j
jmp p
q:
lea dx,h2
mov ah,09
int 21h
inc cx
jmp a1
c:
mov ax, 4c00h
int 21h
main endp
end main
در این دستور 13 کد کلید اینتره که به سطر بعدی میره اما چرا با alمقایسه میکنیم؟؟
cmp al,13h
je k
مورد بعدی این دستوره
mov dx,1
mov j,dx
1 را داخل dx میریزه و dx میشه یک و بعد در دستور بعدی یک را داخل j میریزه j هم میشه یک که در بالای برنامه مقدار j را یک تعریف کرده بودیم... چرا این دو تا دستور را نوشتیم؟؟ کاربردشون چیه استاد همینو ازم پرسید و من گفتم اگه این دستور را ننویسیم ستاره به مقدار ورودیمون در اِن سطر چاپ میشه اما به ستون اضافه نمیشه.. استاد هم گفت کامل نیست ... من که گیچ شدم :اشتباه: دقیقا کاربرد این دستور چیه؟؟ برای چی این دستورو نوشتیم؟؟ اگه توضیح بدید ممنون میشم.