امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 1
  • 1
  • 2
  • 3
  • 4
  • 5
کمک در کامل کردن برنامه
نویسنده پیام
nilo_nazanin آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 1
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #1
کمک در کامل کردن برنامه
سلام دوستان خوبید ، منو دوستم چندتا برنامه به اسمبلی نوشتیم که البته ایراد دارن ، ما مخوایم فقط بمون کمک کنین ، نه ک برنامه رو واسمون کامل بنویسید ، ما اون چیزی رو ک بلد بودیم نوشتیم ، واسه حل مشکلان مونده از شما کمک میخوایم .
ضمن اینکه اولین پست من در این سایته ، امیدوارم منو تو جمع خودتون بپزیرید.
====================================

مثلا این سول 1: برنامه ای که محتویات یک فایل را خوانده و تعداد حروف بزرگ را شمارش و در انتهای فایل ذخیره کند.
اگه جملاتمون تو فایل کوتاه باشه بصورت رندم جواب درست میده اما اکثرا غلط میده :
[PASCAL]data segment
f db 'd:\filetest2.txt'
fh1 dw ?
n db ' '
str db ' $'
i db ?

ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax

mov n,'0'
mov ah,3dh
mov al,2
lea dx,f
int 21h
mov fh1,ax


mov i,0
l1:


mov ah,42h
mov al,00
mov bx,fh1
mov cx,00h
mov dx,i
int 21h
;------
mov ah,3fh
mov bx,fh1
mov cx,1
lea dx,str
int 21h
;---------------------
cmp str,65
jae l2
jmp ex
l2:
cmp str,90
jbe l3
jmp ex
l3:
inc n
aaa
jmp ex

ex:
inc i
cmp i,10
jbe l1


;-------

mov ah,42h
mov al,2
mov bx,fh1
mov cx,00h
mov dx,00
int 21h
;------
mov ah,40h
mov bx,fh1
mov cx,1
lea dx,n
int 21h
;--------
mov ah,3eh
mov bx,fh1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
[/PASCAL]
=========================================================================
یا این سوال 2: برنامه ای که محتوای دو فایل با حداکثر 100 کاراکتر را خوانده و کلماتی که بیش از 5 حرف دارند در یک فایل جدید ذخیره نماید :
ما اینو نوشتیم ک بازم اگه جملات زیاد باشه میمونه توش تو فایلم ذخیره نمیکنه
[PASCAL]data segment
f1 db 'd:\filetest3.txt'
fh1 dw ?

str1 db ' $'
str2 db ' $'
i dw ?
j dw ?
n dw -1

ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
mov ah,3dh
mov al,00
lea dx,f1
int 21h
mov fh1,ax

mov i,0
l1:
mov ah,42h
mov al,00
mov bx,fh1
mov cx,00h
mov dx,i
int 21h

mov ah,3fh
mov bx,fh1
mov cx,1
lea dx,str1
int 21h

inc n


l3:cmp str1,' '
je l4
jmp continue

l4:cmp n,5
jae l5
jmp l6

l6:mov n,-1
jmp continue

l5:
mov di,i
sub di,n
mov j,di
add di,n
label:
mov ah,42h
mov al,00
mov bx,fh1
mov cx,00h
mov dx,j
int 21h

mov ah,3fh
mov bx,fh1
mov cx,1
lea dx,str2
int 21h

mov dl,str2
mov ah,02h
int 21h
inc j
cmp j,di
jbe label
mov n,-1
jmp continue
continue:

inc i
cmp i,25
jbe l1
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
[/PASCAL]
---------------------------------------------------------------------------
یا این یکی سوال 3 : برنامه ک دنبال یه کلمه بگرده تو یک فایل و تعداد تکرار اون کلمه رو در پایان همون فایل درج کنه ، مثلا ما کلمه GREEN رو گزاتیم ، بازم مشکل بالایی ها رو داره :
[PASCAL]data segment

f db 'd:\filetest4.txt'
fh1 dw ?
str db 5 dup (' ')
n db ' '

i dw ?

ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
mov n,'0'
mov ah,3dh
mov al,2
lea dx,f
int 21h
mov fh1,ax

mov i,0
l1:

mov ah,42h
mov al,00
mov bx,fh1
mov cx,00h
mov dx,i
int 21h
;------
mov ah,3fh
mov bx,fh1
mov cx,5
lea dx,str
int 21h


;---------------------
cmp str[0],'G'
je l2
jmp continue
l2:
cmp str[1],'R'
je l3
jmp continue
l3:
cmp str[2],'E'
je l4
jmp continue
l4:
cmp str[3],'E'
je l5
jmp continue
l5:
cmp str[4],'N'
je l6
jmp continue
l6:
inc n
aaa
jmp continue

continue:
inc i
cmp i,29
jbe l1
jmp exit

exit:
mov ah,42h
mov al,2
mov bx,fh1
mov cx,00h
mov dx,00
int 21h
;------
mov ah,40h
mov bx,fh1
mov cx,1
lea dx,n
int 21h
;--------
mov ah,3eh
mov bx,fh1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
[/PASCAL]
==========================================================================
و این هم آخرین سوال 4: برنامه ای که کلماتی را که دو کاراکتر پشت سرهم در یک فایل دارد جدا نموده و در یک فایل جدید ذخیره کند. مثلا aali ,pool , sodd ک اینم باز وقتی جملاتمون تو فایل زیاد میشه میمونیم :
[PASCAL]
data segment
f1 db 'd:\filetest5.txt'
fh1 dw ?

str1 db 2 dup ' $'
str2 db ' $'
i dw ?
j dw ?
n dw -1
temp db 0
kom dw ?
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
mov ah,3dh
mov al,02
lea dx,f1
int 21h
mov fh1,ax

mov i,0
l1:
mov ah,42h
mov al,00
mov bx,fh1
mov cx,00h
mov dx,i
int 21h

mov ah,3fh
mov bx,fh1
mov cx,2
lea dx,str1
int 21h

inc n

mov di,0
lea si,str1[di]
lea di,str1[di+1]
cmpsb
je l2
jmp l3

l2: mov temp,1
jmp l3


l3:cmp str1[0],32
je l4
jmp continue

l4:cmp temp,1
je l5
jmp l6

l6:mov n,-1
jmp continue

l5:
mov di,i
sub di,n
mov j,di
add di,n
label:
mov ah,42h
mov al,00
mov bx,fh1
mov cx,00h
mov dx,j
int 21h

mov ah,3fh
mov bx,fh1
mov cx,2
lea dx,str2
int 21h

mov dl,str2
mov ah,02h
int 21h
inc j
cmp j,di
jbe label
mov n,-1
mov temp,0
jmp continue
continue:

inc i
cmp i,25
jbe l1


mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.[/PASCAL]

از emu8086 استفاده میکنیم.
(آخرین ویرایش در این ارسال: ۰۱-تير-۱۳۹۰, ۰۰:۲۲:۴۱، توسط nilo_nazanin.)
۰۱-تير-۱۳۹۰, ۰۰:۱۵:۴۱
ارسال‌ها
پاسخ
nilo_nazanin آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 1
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #2
RE: کمک در کامل کردن برنامه
یعنی واقعا کسی نیس کمکمون کنه؟
۰۱-تير-۱۳۹۰, ۱۲:۲۴:۲۹
ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost
nilo_nazanin آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 1
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #3
RE: کمک در کامل کردن برنامه
بابا اینجا انجمن برنامه نویسیه
کمکم کنین
۰۱-تير-۱۳۹۰, ۱۳:۴۲:۲۲
ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost
nilo_nazanin آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 1
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #4
RE: کمک در کامل کردن برنامه
ای خدا تو ب داد ما برس
۰۲-تير-۱۳۹۰, ۰۰:۵۴:۳۱
ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #5
RE: کمک در کامل کردن برنامه
نحوی کامل کار با فایل را می تونید در آدرس زیر مشاهده کنید.
http://www.iranled.com/forum/thread-23345.html

Assembly Language 039

۱۶-فروردین-۱۳۹۱, ۰۶:۴۷:۵۶
ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS