PDA

View Full Version : ایراد این برنامه ی دریافت کارکتر!



pesare_aftab_207
یک شنبه 03 بهمن 1389, 10:40 صبح
من این برنامه رو نوشتم قراره یه کارکتر بگیره اگه عدد بود بره ستاره چاپ کنه اگه نبودم بگه عدد وارد کن.
گفتم کارکترو بگیره اگه از 65 برزگتر بود خوب حرفه اگه کوچکتر بود پس عدده.بعدشم برنامه ی ستاره ای که نوشتم جدا گونه درسته پس اینحا هم باید درست باشه مشکل فقط اینه که کارکترو که می گیره درست عمل نمی کنه کسی نمیدونه ایرادش کجاس

stsg segment stack stack
dw 32 dup(?)
stsg ends

dasg segment
x dw ?
s db '*'
down db 10,13
msg1 db 'please',0
dasg ends

codsg segment
assume cs:codsg,ss:stsg,ds:dasg
main proc far
mov ax,0000h
start:
jmp l1


l2:
l1:
mov ah,1h
int 21h
cmp al,65
jg func1
jl func2

func1:
jmp l2

func2:
call stars

mov ax,4c00h
int 21h
main endp
;***********************
stars proc near
mov bl,al
mov cx,Bx
mov dl,0
for:
inc dl
mov cl,dl
for2:
output s
loop for2
output down
dec ax
mov cx,ax
inc cx
stars endp
codsg ends
end main
codsg ends

end main

saber187518
یک شنبه 03 بهمن 1389, 11:59 صبح
با سلام
دوست عزیز
چیزی که شما میگی اشتباهه
اگر بزرگتر از 65 باشه حرفه و کوچکتر از 65 عدد
کد اسکی عدد از 48 شروع میشه و تا 57 میره
حروف هم که دیگه حساب کن ببین چند تا میشه.

pesare_aftab_207
یک شنبه 03 بهمن 1389, 16:27 عصر
شما دست میگی ولی خوب اینم یه راهشه دیگه به هر حال وقتی طرف عدد وارد کنه از 65 کوچکتر میشه دیگه نه؟
آخه مسئله اینه اصلا عمل نمی کنه نمی دونم چرا نمونه ی اینو نوشتم ولی این باید عدد که وارد می کنم مثلا 5 بره 5 ردیف از یک تا 5 ستاره چاپ کنه ولی نمیره موندم هر کاریش می کنم فقط الکی بدون اررور اجرا میشه ولی کاری صورت نمیده

xman_1365_x
دوشنبه 04 بهمن 1389, 02:03 صبح
من این برنامه رو نوشتم قراره یه کارکتر بگیره اگه عدد بود بره ستاره چاپ کنه اگه نبودم بگه عدد وارد کن.

خوابم ميومد بجاي توضيح جوابو ميزارم:لبخندساده:،اگر سوالي بود در خدمتيم


org 100h

again:

mov ah,7
int 21h
cmp al,39h ; 39h = '9'
ja not_correctly ; num > '9'
cmp al,30h ; 30h = '0'
jb not_correctly ; num < '0'
jmp next
not_correctly:
mov ah,9
lea dx,msg
int 21h
jmp again
next:
mov ah,2
mov dl,2ah ;2ah='*'
int 21h
ret
msg db "try again:$"
end