نمونه پروژه اسمبلی (ماشین حساب - کار با فایل - رسم شکل)
سلام، خیلی وقت بود که قصد گذاشتن این پروژه ها رو داشتم، اینا متعلق به ترم 4 ما هست و پروژه آپولویی که به لطف برخی دوستان تونستیم حلش کنیم
انشالله موفق باشین و به دردتون بوخوره
سلام، خیلی وقت بود که قصد گذاشتن این پروژه ها رو داشتم، اینا متعلق به ترم 4 ما هست و پروژه آپولویی که به لطف برخی دوستان تونستیم حلش کنیم
انشالله موفق باشین و به دردتون بوخوره
================================================== ==================
این پروژه که نام اون test هست در واقع برنامه ی گرافیکی یک ماشین حساب اونم با حلقه های for به زبان اسمبلی هستن که میاد به هنگام اجرای برنامه خطوط مورد نظر رو رسم میکنه البته این برنامه فقط جنبه گرافیکی اونم با خطوط از طریق حلقه ها رو داره و اصلا از جنبه محاسباتی کار میکنه test.zip
این پروژه masm در واقع اون فایل cmd که همه میان برنامه رو اجرا میکنن هست ، و البته به انضمام یک سری تیکه برنامه ها که اگه شما خودتون بیاین تک تک اونها رو اجرا بگیرین ، متوجه هرکدوم از اونها خواهید شد masm.zip
این برنامه کامل از اجرای یک فایل هست که کاملا درست کار میکنه ، این برنامه کار ورود اطلاعات ، ذخیره و نمایش اطلاعات رو انجام میده file.zip
این فایل کاملی از ماشین حساب با تمامی عملیاتهای اون هست ، که میاد اعداد رو به هر اندازه که بخواین دریافت میکنه و بعد از زدن یک عملگر میاد رشته دوم از اعداد رو دریافت میکنه و بعد با زدن عملگر مساوی میاد و اطلاعاتی که خواستین رو با هم جمع یا کم یا ضرب و یا تقسیم میکنه
منتها تنها نقصی که داره اینه که نمیتونی همزمان همه عملگرها رو فعال کنی، و هنوز که هنوزه هست نتونستیم این مشکل رو حل کنیم
سلام به شما دوستان عزیز
خیلی از شما دوستان عزیز مراجعه داشتین در رابطه با نمونه کدای اسمبلی که چطوری کار میکنن ، و با اینکه بنده یک سری پروژه هایی رو در اینجا قرار داده بودم اما بدلیل اینکه خدمات دانلود اینجا زیاد مساعد نیست بهتر دونستم که کدها رو در اختیارتون بذارم
این کدهایی که میذارم تقریبا یکی هستن و هرکدوم که comment نیست یعنی داره اون کد کار میکنه
الان میخوام کد مربوط به جمع ماشین حساب رو براتون بذارم
include io.h
;;;;;;;;;;;;;macro;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;-------------------------------------------
;;;;;;;;;;;;;;;;;;Button;;;;;;;;;;;;;;;;
window macro color,x1,y1,x2,y2
mov ah,06h
mov bh,color
mov ch,x1
mov cl,y1
mov dh,x2
mov dl,y2
int 10h
endm
;;;;;;;;;;;;;;;save registers;;;;;;;;;;;;;;;
pushreg macro
push ax
push bx
push cx
push dx
endm
;;;;;;;;;;;;;;;;loads registers;;;;;;;;;;;;;;
popreg macro
pop dx
pop cx
pop bx
pop ax
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
print_msg macro msg
mov dx,offset msg
mov ah,9h
int 21h
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
gotoxy macro x1,y1
mov ah,2
mov dl,x1
mov dh,y1
mov bh,0
int 10h
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cls macro color
mov ax,0600h
mov bh,color
mov cx,0000h
mov dx,204fh
int 10h
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
delay macro time
local lbldelay2
local lbldelay1
local lbldelay0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;data segment;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
data segment
msg0 db '0',"$"
msg1 db '1',"$"
msg2 db '2',"$"
msg3 db '3',"$"
msg4 db '4',"$"
msg5 db '5',"$"
msg6 db '6',"$"
msg7 db '7',"$"
msg8 db '8',"$"
msg9 db '9',"$"
msg10 db '+',"$"
msg11 db '-',"$"
msg12 db '*',"$"
msg13 db '%',"$"
msg14 db '=',"$"
ret ;s is not recognized as an internal or external command,operable program or batch file.
do_add ENDP
;================================================
putc proc
push ax
push bx
mov ah,0eh
mov bl,07h
mov bh,00h
int 10h
pop bx
pop ax
ret
putc endp
;=================puts==============
puts proc
push ax
_put:
lodsb
cmp al,0
jz _exit
call putc
jmp _put
_exit:
pop ax
ret
puts endp
;==============end code=============
code ends
end main
که تفریق و ضرب و تقسیم دقیقا مثل بالاست فقط کافیه اون جایی که مربوط به ضرب ، تقسیم ، یا تفریق هست رو از حالت comment در بیارین
بااحترام
من هر کاری انجام دادم که بتونم برنامه کلی از فایل رو بفرستم نشد ، حالا میام قسمتی از open و قسمتی از save رو میفرستم بعد خودتون برنامه کلی رو دانلود کنین
open:
.286C
sseg segment stack
db 128 dup("stack---")
sseg ends
dseg segment
open_errorOP db 13,10,"open error in file student.dat " ,"$"
read_errorOP db 13,10, "read error " ,"$"
close_errorOP db 13,10,"close error " ,"$"
keyOP db 3 dup(?)
moreOP db 13,10,"....moreOP.... " ,"$"
st_nameOP db 37 dup(32),"$"
file_nameOP db 'student.dat' , 0
in_handleOP dw ?
byte_readOP dw ?
lineOP db ?
rowcolOP dw ?
monitorOP equ 0001h
keyboardOP equ 0000h
readOP equ 3fh
writeOP equ 40h
openOP equ 3dh
closeOP equ 3eh
dseg ends
call readOP_fileOP ;readOP_fileOP()
mov byte_readOP, ax ;byte_readOPOP=number of readOP
cmp byte_readOP, 0 ;byte_readOPOP ? 0
je final ;= then goto final
cmp byte ptr st_nameOP, 1ah ;if end of file
je final ;then goto final
من هر کاری انجام دادم که بتونم برنامه کلی از فایل رو بفرستم نشد ، حالا میام قسمتی از open و قسمتی از save رو میفرستم بعد خودتون برنامه کلی رو دانلود کنین
بخاطر محدودیت در تعداد کاراکتر برای هر پست هست . بجای اینکه تو یه پست همه پروژه ها رو معرفی کنید . تو پست های مختلف این کارو بکنید . اینطوری دیگه مشکلی برای قرار دادن کل فایل ندارید
بخاطر محدودیت در تعداد کاراکتر برای هر پست هست . بجای اینکه تو یه پست همه پروژه ها رو معرفی کنید . تو پست های مختلف این کارو بکنید . اینطوری دیگه مشکلی برای قرار دادن کل فایل ندارید
بله ، حتما...
ممنون از توضیحاتتون
این پروژه کامل از نوشتن فایل در اسمبلی هست .....انشالله به درد بخوره....فقط دوست محترم لطف بفرمایین سوالاتتون رو از آقای حسنپور http://forum.ustmb.ir/private.php?do=newpm&u=1 بپرسین، متاسفانه بنده زیاد نمیتونم به شما عزیزان پاسخ بدم
.286C
include io.h
;;;;;;;;;;;;;macro;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;-------------------------------------------
;;;;;;;;;;;;;;;;;;Button;;;;;;;;;;;;;;;;
window macro color,x1,y1,x2,y2
mov ah,06h
mov bh,color
mov ch,x1
mov cl,y1
mov dh,x2
mov dl,y2
int 10h
endm
;;;;;;;;;;;;;;;save registers;;;;;;;;;;;;;;;
pushreg macro
push ax
push bx
push cx
push dx
endm
;;;;;;;;;;;;;;;;loads registers;;;;;;;;;;;;;;
popreg macro
pop dx
pop cx
pop bx
pop ax
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
print_msg macro msg
mov dx,offset msg
mov ah,9h
int 21h
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
gotoxy macro x1,y1
mov ah,2
mov dl,x1
mov dh,y1
mov bh,0
int 10h
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cls macro color
mov ax,0600h
mov bh,color
mov cx,0000h
mov dx,204fh
int 10h
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
delay macro time
local lbldelay2
local lbldelay1
local lbldelay0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;data segment;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
data segment
;-----------DataMenu-----------
msg15 db 'file',"$"
msg16 db 'open',"$"
msg17 db 'save',"$"
msg18 db 'search',"$"
msg19 db 'excute',"$"
msg20 db 'calculator',"$"
msg21 db 'exit',"$"
;-----------DataCalculate---------
msg0 db '0',"$"
msg1 db '1',"$"
msg2 db '2',"$"
msg3 db '3',"$"
msg4 db '4',"$"
msg5 db '5',"$"
msg6 db '6',"$"
msg7 db '7',"$"
msg8 db '8',"$"
msg9 db '9',"$"
msg10 db '+',"$"
msg11 db '-',"$"
msg12 db '*',"$"
msg13 db '%',"$"
msg14 db '=',"$"
msg22 db 'finish',"$"
DIGIT DB 0
DIGIT2 DB 0
COUNTER DW 0
COUNTER2 DW 0
STRING Db 8 DUP(' '),0
STRING2 DB 8 DUP(' '),0
cresult db 10 dup(0),0
status db 1
operator db 0
;----------DataSave-------------------
create_error db 13,10,"create error in file student.dat " ,"$"
write_error db 13,10, "write error " ,"$"
close_error db 13,10,"close error " ,"$"
file_name db 'student.dat',00h
namepar label byte ;parameter list:
maxlen db 35 ;maximum length
namelen db ? ;actual length
st_name db 35 dup (20h) ,0dh,0ah ;student name
len_name dw ?
mesg1 db 0d,0ah,"Please enter name :","$" ;prompt name
rowcol dw ? ;row and col
out_handle dw ? ;handle output file
byte_read dw ? ;number byte of read
monitor equ 0001h ;device monitor
keyboard equ 0000h ;device keyboard
read equ 3fh ;request read
write equ 40h ;request write
create equ 3ch ;request create
close equ 3eh
;-------DataOpen------------------
open_errorOP db 13,10,"open error in file student.dat " ,"$"
read_errorOP db 13,10, "read error " ,"$"
close_errorOP db 13,10,"close error " ,"$"
keyOP db 3 dup(?)
moreOP db 13,10,"....moreOP.... " ,"$"
st_nameOP db 37 dup(32),"$"
file_nameOP db 'student.dat' , 0
in_handleOP dw ?
byte_readOP dw ?
lineOP db ?
rowcolOP dw ?
monitorOP equ 0001h
keyboardOP equ 0000h
readOP equ 3fh
writeOP equ 40h
openOP equ 3dh
closeOP equ 3eh
;ret ;s is not recognized as an internal or external command,operable program or batch file.
;do_add ENDP
;================================================
call readOP_fileOP ;readOP_fileOP()
mov byte_readOP, ax ;byte_readOPOP=number of readOP
cmp byte_readOP, 0 ;byte_readOPOP ? 0
je final ;= then goto final
cmp byte ptr st_nameOP, 1ah ;if end of file
je finalOP ;then goto final
سلام ببخشید من این برنامه ها رو با چه نرم افزاری باید ببینم خودم برازبان ماشین emu8086 دارم ولی نمیتونم برنامه هایی که دان کردمو ببینم؟
این سورس کدها رو میتونید با Masm کامپایل و اجرا کنید .
اینجا توضیح کاملی در این رابطه دادم - نرم افزارهای مورد نیازتون هم اونجا هست : نحوه کامپایل و ساخت فایل اجرایی از سورس کد های اسمبلی
(البته تو اجرا با emu8086 هم نباید مشکلی داشته باشید اما ترجیحا از خود Masm استفاده کنید )
علاقه مندی ها (Bookmarks)