نمایش نتایج: از شماره 1 تا 9 از مجموع 9
Like Tree4نفر پسندیدند
  • 1 ارسال توسط NIIT
  • 1 ارسال توسط NIIT
  • 1 ارسال توسط NIIT
  • 1 ارسال توسط NIIT

موضوع: نمونه پروژه اسمبلی (ماشین حساب - کار با فایل - رسم شکل)

  1. #1
    مدیر بازنشسته
    تاریخ عضویت
    2011 June
    محل سکونت
    گرگان
    ارسال ها
    1,170
    تشکر
    62
    تشکر شده 1,587 بار در 809 پست
    نوشته های وبلاگ
    49


    آيا اين پست براي شما سودمند بود؟ بله | خیر

    Post نمونه پروژه اسمبلی (ماشین حساب - کار با فایل - رسم شکل)

    سلام، خیلی وقت بود که قصد گذاشتن این پروژه ها رو داشتم، اینا متعلق به ترم 4 ما هست و پروژه آپولویی که به لطف برخی دوستان تونستیم حلش کنیم
    انشالله موفق باشین و به دردتون بوخوره

    test.zip

    masm.zip

    file.zip

    calculate.zip


    سلام، خیلی وقت بود که قصد گذاشتن این پروژه ها رو داشتم، اینا متعلق به ترم 4 ما هست و پروژه آپولویی که به لطف برخی دوستان تونستیم حلش کنیم
    انشالله موفق باشین و به دردتون بوخوره

    ================================================== ==================
    این پروژه که نام اون test هست در واقع برنامه ی گرافیکی یک ماشین حساب اونم با حلقه های for به زبان اسمبلی هستن که میاد به هنگام اجرای برنامه خطوط مورد نظر رو رسم میکنه البته این برنامه فقط جنبه گرافیکی اونم با خطوط از طریق حلقه ها رو داره و اصلا از جنبه محاسباتی کار میکنه
    test.zip


    این پروژه masm در واقع اون فایل cmd که همه میان برنامه رو اجرا میکنن هست ، و البته به انضمام یک سری تیکه برنامه ها که اگه شما خودتون بیاین تک تک اونها رو اجرا بگیرین ، متوجه هرکدوم از اونها خواهید شد
    masm.zip



    این برنامه کامل از اجرای یک فایل هست که کاملا درست کار میکنه ، این برنامه کار ورود اطلاعات ، ذخیره و نمایش اطلاعات رو انجام میده
    file.zip


    این فایل کاملی از ماشین حساب با تمامی عملیاتهای اون هست ، که میاد اعداد رو به هر اندازه که بخواین دریافت میکنه و بعد از زدن یک عملگر میاد رشته دوم از اعداد رو دریافت میکنه و بعد با زدن عملگر مساوی میاد و اطلاعاتی که خواستین رو با هم جمع یا کم یا ضرب و یا تقسیم میکنه
    منتها تنها نقصی که داره اینه که نمیتونی همزمان همه عملگرها رو فعال کنی، و هنوز که هنوزه هست نتونستیم این مشکل رو حل کنیم

    calculate.zip

    و........ همین جا ، جا داره که از مدیر محترم این سایت ، آقای master ،که در انجام این پروژه لطفهای زیادی به ما داشتن بینهایت سپاسگزاری کنم....


    انشالله شما با کمک گرفتن از طریق این پروژه ها ،در کارتون موفق باشین.... باسپاس

    فایل های پیوست شده
    • نوع فایل: zip calculate.zip (20.4 کیلو بایت,  این فایل 60 بار دانلود شده است)
    ویرایش توسط NIIT : 9th September 2011 در ساعت 01:30 PM
    Hossein این نویسه را میپسندد.

  2. #2
    بنیانگذار
    تاریخ عضویت
    2010 January
    محل سکونت
    زیر سایه خدا
    سن
    37
    ارسال ها
    1,308
    تشکر
    2,923
    تشکر شده 2,205 بار در 886 پست
    نوشته های وبلاگ
    37


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    یه توضیحی بدید بد نیست . که پروژه در مورد چی هست و چه بخش هایی داره .
    بخش برچسب ها رو هم لطفا کامل کنید که تو سرچ بهتر دیده بشن
    خیلی ممنونم


    توکل بخدا
    http://DeepLearning.ir
    اولین و تنها مرجع یادگیری عمیق ایران


    هرکس از ظن خود شد یار من
    از درون من نجست اسرار من




  3. #3
    مدیر بازنشسته
    تاریخ عضویت
    2011 June
    محل سکونت
    گرگان
    ارسال ها
    1,170
    تشکر
    62
    تشکر شده 1,587 بار در 809 پست
    نوشته های وبلاگ
    49


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    بله ، انشالله حتما در یک فرصت مناسب این کار رو انجام خواهم داد
    با سپاس از شما

    Hossein این نویسه را میپسندد.

  4. #4
    مدیر بازنشسته
    تاریخ عضویت
    2011 June
    محل سکونت
    گرگان
    ارسال ها
    1,170
    تشکر
    62
    تشکر شده 1,587 بار در 809 پست
    نوشته های وبلاگ
    49


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    سلام به شما دوستان عزیز
    خیلی از شما دوستان عزیز مراجعه داشتین در رابطه با نمونه کدای اسمبلی که چطوری کار میکنن ، و با اینکه بنده یک سری پروژه هایی رو در اینجا قرار داده بودم اما بدلیل اینکه خدمات دانلود اینجا زیاد مساعد نیست بهتر دونستم که کدها رو در اختیارتون بذارم

    این کدهایی که میذارم تقریبا یکی هستن و هرکدوم که 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

    mov bx,time
    lbldelay2:
    mov dx,time
    lbldelay1:
    mov cx,time
    lbldelay0:
    nop
    loop lbldelay0
    dec dx
    jnz lbldelay1
    dec bx
    jnz lbldelay2
    endm



    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    CALCULATORSHAPE macro
    cls 16
    window 1,1,1,2,4
    window 2,1,6,2,9
    window 3,1,11,2,14
    window 4,1,16,2,19
    window 5,1,21,2,24
    ;-----------------------
    window 6,4,1,5,4
    window 7,4,6,5,9
    window 8,4,11,5,14
    window 10,4,16,5,19
    window 11,4,21,5,24
    ;----------------------
    window 12,7,1,8,4
    window 13,7,6,8,9
    window 14,7,11,8,14
    window 15,7,16,8,19
    window 9,7,21,8,24
    ;-------------------------
    window 65,17,4,20,21
    ;*****************************************
    gotoxy 2,2
    print_msg msg1
    gotoxy 7,2
    print_msg msg2
    gotoxy 12,2
    print_msg msg3
    gotoxy 17,2
    print_msg msg4
    gotoxy 22,2
    print_msg msg5
    ;------------------
    gotoxy 2,5
    print_msg msg6
    gotoxy 7,5
    print_msg msg7
    gotoxy 12,5
    print_msg msg8
    gotoxy 17,5
    print_msg msg9
    gotoxy 22,5
    print_msg msg0
    ;--------------------
    gotoxy 2,8
    print_msg msg10
    gotoxy 7,8
    print_msg msg11
    gotoxy 12,8
    print_msg msg12
    gotoxy 17,8
    print_msg msg13
    gotoxy 22,8
    print_msg msg14
    endm
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;stack segment;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    STACK SEGMENT
    Dw 100H DUP(?)
    STACK ENDS

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;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 '=',"$"

    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

    data ends


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;code segment;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    code segment
    main proc far
    assume cs:code,ds:data,ss:stack
    mov ax,seg data
    mov ds,ax
    ;;;;;;;;;;;;Get Current Graphic Mode;;;;;;;;;
    mov ah,0fh
    int 10h
    mov ah,0
    push ax
    ;;;;;;;;;;;;new Graphic Mode;;;;;;;;;;;;;;;;;
    mov ah,00h
    mov al,12h
    int 10h

    CALCULATORSHAPE

    ;;;;;;;;;Show Mouse;;;;;;;;;;;;;;
    mov ax,01h
    int 33h
    mouse:
    mov ax,03h;; mode grafici
    int 33h



    pushreg
    delay 500
    popreg


    cmp bx,0001h
    jne mouse
    ;;;;;;;;;;;READ PIXEL UNDER CURSOR;;;;;;;;;

    dec cx
    mov ah,0dh
    mov bh,0
    int 10h
    inc cx
    ;;;;;;;;;SEE WHICH BUTTON(COLOR) WAS CLICKED;;;

    cmp al,9
    je godown ;equalsign
    ;jmp mouse

    cmp al,1
    je one

    cmp al,2
    je two

    cmp al,3
    je three

    cmp al,4
    je four


    cmp al,5
    je five


    cmp al,6
    je six


    cmp al,7
    je seven


    cmp al,8
    je eight


    cmp al,10
    je nine


    cmp al,11
    je zero



    ;cmp al,13;;;;;;
    ;call subsign ;
    ;jmp mouse ;
    ;


    ;cmp al,14 ;
    ;call mulsign ;
    ;jmp mouse ;
    ;
    ;
    ;cmp al,15 ;
    ;call divsign ;;;;;;;;;>> ba seda kardane tavabe miad alamat gozari anjam midahad
    ;jmp mouse

    cmp al,12
    call addsign ;
    jmp mouse ;



    nine1:
    jmp nine
    zero1:
    jmp zero



    ;--------------------------

    one:
    mov digit,'1'
    call getdigit
    jmp mouse
    ;----------------------------

    two:
    mov digit,'2'
    call getdigit
    jmp mouse
    ;---------------------------

    three:
    mov digit,'3'
    call getdigit
    jmp mouse
    ;---------------------------

    godown:
    call equalsign ;do_add;
    jmp mouse

    ;--------------------------

    four:
    mov digit,'4'
    call getdigit
    jmp mouse
    ;--------------------------


    five:
    mov digit,'5'
    call getdigit
    jmp mouse
    ;----------------------------


    six:
    mov digit,'6'
    call getdigit
    jmp mouse
    ;----------------------------



    seven:
    mov digit,'7'
    call getdigit
    jmp mouse
    ;----------------------------




    eight:
    mov digit,'8'
    call getdigit
    jmp mouse
    ;----------------------------




    nine:
    mov digit,'9'
    call getdigit
    jmp mouse
    ;----------------------------


    zero:
    mov digit,'0'
    call getdigit
    jmp mouse
    ;---------------------------


    exit:


    ;;;;;;;;;;ReStore Graphic Mode;;;;;;;;;;;;

    pop ax
    mov ah,0
    int 10h

    mov ax,4c00h
    int 21h
    main endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;function;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;=============addsign==============;;;;;;;;
    ;
    addsign proc ;
    mov status,2 ;
    mov operator,'+'
    mov ah,02h
    mov dl,operator
    int 21h ;
    mov counter,0 ;
    ret
    addsign endp ;
    ;
    ;=============subsign============== ;
    ;
    ;subsign proc ;
    ;mov status,2 ;
    ;mov operator,'-'
    ;mov ah,02h
    ;mov dl,operator
    ;int 21h ;
    ;mov counter,0 ;
    ;ret ;
    ;subsign endp ;
    ;
    ;=============mulsign============== ;
    ;
    ;mulsign proc ;
    ;mov status,2 ;
    ;mov operator,'*'
    ;mov ah,02h
    ;mov dl,operator
    ;int 21h ;;;;;;;;;>> anjame amaliate alamat gozari
    ;mov counter,0 ;
    ;ret ;
    ;mulsign endp ;
    ;
    ;===============divsign============ ;
    ;
    ;divsign proc ;
    ;mov status,2 ;
    ;mov operator,'%'
    ;mov ah,02h
    ;mov dl,operator
    ;int 21h ;
    ;mov counter,0 ;
    ;ret ;
    ;divsign endp ;
    ;
    ;==============equalsign=========== ;
    ;
    equalsign proc

    ADD operator,30H
    ;cmp operator,'+'
    je do_add1

    ;cmp operator,'-'
    ;je do_sub1

    ;cmp operator,'*'
    ;je do_mul1

    ;cmp operator,'%'
    ;je do_div1

    do_add1:
    call do_add
    jmp exit_proc

    ;do_sub1:
    ;call do_sub
    ;jmp exit_proc

    ;do_mul1:
    ;call do_mul
    ;jmp exit_proc

    ;do_div1:
    ;call do_div
    ;jmp exit_proc
    exit_proc:
    ret

    equalsign endp
    ;
    ;==================================;;;;;;;;
    do_add PROC

    atoi string ;
    mov bx,ax ;
    atoi string2 ;
    add ax,bx ;
    itoa cresult,ax
    gotoxy 20,20
    lea si,cresult
    call puts

    ret ;s is not recognized as an internal or external command,operable program or batch file.
    do_add ENDP
    ;================================================

    ;do_sub PROC

    ;atoi string ;
    ;mov bx,ax ;
    ;atoi string2 ;
    ;sub bx,ax ;
    ;itoa cresult,bx
    ;gotoxy 10,20
    ;lea si,cresult
    ;call puts

    ;ret
    ;do_sub ENDP

    ;===========================================

    ;do_mul PROC

    ;atoi string ;
    ;mov bx,ax ;
    ;atoi string2 ;
    ;imul bx ;
    ;itoa cresult,ax
    ;gotoxy 10,20
    ;lea si,cresult
    ;call puts

    ;ret
    ;do_mul ENDP

    ;===================================

    ;do_div PROC

    ;atoi string ;
    ;mov bx,ax ;
    ;atoi string2
    ;xchg ax,bx
    ;cwd ;
    ;idiv bx ;
    ;itoa cresult,ax
    ;gotoxy 10,20
    ;lea si,cresult
    ;call puts

    ;ret
    ;do_div ENDP
    ;=================get digit========;;;;;;;;
    ;
    GETDigit PROC ;
    ;
    CMP STATUS, 1 ;
    JG NUM2 ;
    LEA DI, STRING ;
    LEA SI, STRING ;
    JMP RESTOFCODE ;
    NUM2: ;
    LEA DI,STRING2 ;
    LEA SI,STRING2 ;
    RESTOFCODE: ;;;;;>> makani ke reshteha va etelaate morede nazar ra dar khod daryaft mikonad
    MOV DL,DIGIT ;
    MOV BX,COUNTER ;
    CMP BX,8 ;
    JG Ex ;
    MOV BYTE PTR[DI+BX] , DL ;
    INC BX ;
    MOV COUNTER ,BX ;
    GOTOXY 8,20 ;
    CALL PUTS ;
    Ex: ;
    RET ;
    GETDigit ENDP ;
    ;
    ;===================================;;;;;;;



    ;===============putc=================

    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



    cseg segment
    assume cs:cseg,ss:sseg,ds:dseg
    page
    call exampleOP
    ;========================================================
    exampleOP proc far

    push ds
    push 0

    mov ax, dseg
    mov ds, ax
    mov es, ax

    call openOP_fileOP ;openOP_fileOP()
    mov in_handleOP, ax ;in_handleOP=ax
    call clsOP ;clear screen
    mov byte ptr rowcolOP+1, 0 ;row=0
    mov byte ptr rowcolOP, 0 ;col=0
    push rowcolOP
    call move_cursorOP ;move_cursorOP(row,col)
    mov lineOP, 0 ;lineOP=0

    loop1:

    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

    inc lineOP ;lineOP=lineOP+1

    cmp lineOP, 22 ;if lineOP < 22
    jne lineOP_1_21 ; then goto lineOP_1_22
    ;begin else
    push offset moreOP ;
    call disp_messageOP ;disp_messageOP(moreOP)
    lea dx, keyOP ;
    call getOP ;getOP(keyOP )

    call clsOP ;clsOP()
    mov byte ptr rowcolOP+1, 0 ;row=0
    mov byte ptr rowcolOP, 0 ;col=0
    push rowcolOP
    call move_cursorOP ;move_cursorOP(row,col)
    mov lineOP, 0 ;lineOP=0
    ;end else
    lineOP_1_21:

    push offset st_nameOP
    call disp_messageOP ;disp_messageOP(st_nameOP)
    jmp loop1 ;goto loop1

    final:
    mov bx, in_handleOP
    call closeOP_fileOP ;closeOP_fileOP(bx)
    end1:
    retf
    exampleOP endp
    ;************************************

    ;************************************
    clsOP proc far
    push ax
    push bx
    push dx
    pushf
    mov ah, 6h ;clear screen
    mov al, 25 ;number of rows
    mov ch, 0
    mov cl, 0
    mov dh, 24 ;row
    mov dl, 79 ;column
    mov bh, 7 ;attribute
    int 10h
    popf
    pop dx
    pop bx
    pop ax

    retf

    clsOP endp
    ;************************************
    ;************************************
    move_cursorOP proc far
    push bp
    mov bp, sp
    push ax
    push bx
    push dx
    pushf
    mov ah, 2h ;cursor move
    mov bx,word ptr [bp+06]
    mov dh, bh ;row
    mov dl, bl ;column
    mov bx, 0 ;page number
    int 10h
    popf
    pop dx
    pop bx
    pop ax
    pop bp
    retf 2
    move_cursorOP endp

    ;************************************
    ;************************************
    disp_messageOP proc far
    push bp
    mov bp, sp
    push ax
    push dx
    mov dx, [bp+06]
    mov ah, 9h
    int 21h
    pop dx
    pop ax

    pop bp
    retf 2
    disp_messageOP endp
    ;************************************
    getOP proc
    mov ah, readOP ;request readOP
    mov bx, keyboardOP ;set device
    mov cx, 3 ;length readOP
    int 21h
    ret
    getOP endp

    ;************************************
    openOP_fileOP proc

    lea dx, file_nameOP ;set file name
    mov ah, openOP ;request openOP
    mov al, 00h ;readOP olny file
    int 21h
    jc error_openOP ;if error then goto error_openOP
    ret ;else return
    error_openOP:
    push offset open_errorOP
    call disp_messageOP ;disp_messageOP(open_errorOP)
    add sp, 2 ;pop two byte
    jmp end1 ;goto end1
    openOP_fileOP endp

    ;************************************
    readOP_fileOP proc

    mov ah, readOP ;request readOP
    lea dx, st_nameOP ;buffer
    mov bx, in_handleOP ;set device
    mov cx, 37 ;length
    int 21h ;call service
    jc error_readOP ;if error then goto error_readOP
    ret
    error_readOP:
    push offset read_errorOP
    call disp_messageOP ;display readOP error message
    add sp, 2 ;pop two bytes
    jmp end1

    readOP_fileOP endp
    ;************************************
    ;************************************
    closeOP_fileOP proc

    mov ah, closeOP ;request closeOP
    int 21h ;call service
    jc error_closeOP ;if error then goto error_closeOP
    ret
    error_closeOP:
    push offset close_errorOP
    call disp_messageOP ;display closeOP error message
    add sp, 2 ;pop two bytes
    jmp end1

    closeOP_fileOP endp
    ;************************************
    ;************************************

    cseg ends
    end exampleOP


    کار ذخیره رو انجام میده:

         .286C
    ;extrn cls:far,move_cursor:far,disp_message:far
    sseg segment stack
    db 128 dup("stack---")
    sseg ends
    dseg segment
    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 ;request close

    dseg ends
    cseg segment
    assume cs:cseg,ss:sseg,ds:dseg
    page

    example proc far ;save ds

    push ds
    push 0

    mov ax, dseg ;initialize data
    mov ds, ax ; segment
    mov es, ax ;clrscr()
    call cls ;row=0
    mov byte ptr rowcol+1, 0 ;col=1
    mov byte ptr rowcol, 0
    push rowcol
    call move_cursor ;move_cursor(row,col)
    clc ;clear carry
    call create_file ;create_file()
    mov out_handle,ax ;out_handle=ax

    loop1:
    push offset mesg1 ;disp_message(mesg1)
    call disp_message
    ;get_name()
    call get_name ;if namelen ? 00
    cmp namelen, 00
    jz final ;=0 goto final

    mov bx, out_handle ;bx=out_handle
    call write_file ;write_file(out_handle)
    jmp loop1 ;goto loop1

    final:
    mov bx, out_handle ;bx=out_handle
    call close_file ;close_file(out_handle)
    end1:
    ret
    example endp
    ;************************************
    ;************************************
    disp proc
    mov bx, monitor ;set device
    mov ah, write ;request write
    int 21h
    ret
    disp endp
    ;************************************
    move_cur macro

    mov ah,02h
    mov dh,20
    mov dl,60
    mov bh,0
    int 10h

    endm
    ;************************************
    get_name proc
    mov ah, 0ah ;request input
    lea dx, namepar ;accept name
    int 21h
    cmp namelen, 00
    jz ret_get ;no eixt
    mov ah, ' ' ;blank for storing
    mov ch, 00h
    mov cl, namelen ;length
    lea di, st_name
    add di, cx ;address+lenght
    neg cx ;calculate remainding
    add cx, 35
    rep stosb ;set to blank
    ret_get:
    ret
    get_name endp
    ;************************************
    ;************************************
    create_file proc

    lea dx, file_name ;set file name
    mov ah, create ;request create
    mov cx, 00 ;normal create
    int 21h ;if error the goto error_create
    jc error_create
    ret
    error_create:
    push offset create_error
    call disp_message ;disp_message(create_error)
    add sp, 2 ;pop two byte
    jmp end1 ;goto end1
    create_file endp
    ;************************************
    ;************************************
    write_file proc
    mov ah, write ;request write
    lea dx, st_name ;set file name
    mov cx, 37 ;35 byte name,2 byte cr/lf
    int 21h
    jc error_write ;if error then goto error_write
    ret
    error_write:
    push offset write_error
    call disp_message ;disp_message(write_error)
    add sp, 2 ;pop two byte
    jmp end1 ;goto end1

    write_file endp

    ;************************************
    ;************************************
    close_file proc
    mov ah, close ;request close
    int 21h
    jc error_close ;if error then goto error_close
    ret
    error_close:
    push offset close_error
    call disp_message ;disp_message(close_error);
    add sp, 2
    jmp end1

    close_file endp
    ;************************************

    ;************************************
    cls proc far
    push ax
    push bx
    push dx
    pushf
    mov ah, 6h ;clear screen
    mov al, 25 ;number of rows
    mov ch, 0
    mov cl, 0
    mov dh, 24 ;row
    mov dl, 79 ;column
    mov bh, 7 ;attribute
    int 10h
    popf
    pop dx
    pop bx
    pop ax

    retf

    cls endp
    ;************************************
    ;************************************
    move_cursor proc far
    push bp
    mov bp, sp
    push ax
    push bx
    push dx
    pushf
    mov ah, 2h ;cursor move
    mov bx,word ptr [bp+06]
    mov dh, bh ;row
    mov dl, bl ;column
    mov bx, 0 ;page number
    int 10h
    popf
    pop dx
    pop bx
    pop ax
    pop bp
    retf 2
    move_cursor endp

    ;************************************
    ;************************************
    disp_message proc far
    push bp
    mov bp, sp
    push ax
    push dx
    mov dx, [bp+06]
    mov ah, 9h
    int 21h
    pop dx
    pop ax

    pop bp
    retf 2
    disp_message endp
    ;************************************

    cseg ends
    end example



    ویرایش توسط NIIT : 1st November 2011 در ساعت 10:04 PM
    Hossein این نویسه را میپسندد.
    آرامش محصول تفکر نیست! آرامش هنر نیندیشیدن به انبوه مسائلیست که ارزش فکر کردن ندارد...

  5. #5
    مدیر بازنشسته
    تاریخ عضویت
    2011 October
    محل سکونت
    قائم شهر
    ارسال ها
    189
    تشکر
    308
    تشکر شده 525 بار در 195 پست
    نوشته های وبلاگ
    5


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    :redface: چقد زیاد :redface:
    اما ازتون متشکرم
    شما نمونه پروژه ی دیگه ای از اسمبلی ندارید؟ اگه بذارید ممنون میشم:wubsmiley:


  6. #6
    بنیانگذار
    تاریخ عضویت
    2010 January
    محل سکونت
    زیر سایه خدا
    سن
    37
    ارسال ها
    1,308
    تشکر
    2,923
    تشکر شده 2,205 بار در 886 پست
    نوشته های وبلاگ
    37


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    نقل قول نوشته اصلی توسط NIIT نمایش پست ها
    من هر کاری انجام دادم که بتونم برنامه کلی از فایل رو بفرستم نشد ، حالا میام قسمتی از open و قسمتی از save رو میفرستم بعد خودتون برنامه کلی رو دانلود کنین
    بخاطر محدودیت در تعداد کاراکتر برای هر پست هست . بجای اینکه تو یه پست همه پروژه ها رو معرفی کنید . تو پست های مختلف این کارو بکنید . اینطوری دیگه مشکلی برای قرار دادن کل فایل ندارید

    توکل بخدا
    http://DeepLearning.ir
    اولین و تنها مرجع یادگیری عمیق ایران


    هرکس از ظن خود شد یار من
    از درون من نجست اسرار من




  7. #7
    مدیر بازنشسته
    تاریخ عضویت
    2011 June
    محل سکونت
    گرگان
    ارسال ها
    1,170
    تشکر
    62
    تشکر شده 1,587 بار در 809 پست
    نوشته های وبلاگ
    49


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    نقل قول نوشته اصلی توسط Master نمایش پست ها
    بخاطر محدودیت در تعداد کاراکتر برای هر پست هست . بجای اینکه تو یه پست همه پروژه ها رو معرفی کنید . تو پست های مختلف این کارو بکنید . اینطوری دیگه مشکلی برای قرار دادن کل فایل ندارید
    بله ، حتما...
    ممنون از توضیحاتتون

    این پروژه کامل از نوشتن فایل در اسمبلی هست .....انشالله به درد بخوره....فقط دوست محترم لطف بفرمایین سوالاتتون رو از آقای حسنپور 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

    mov bx,time
    lbldelay2:
    mov dx,time
    lbldelay1:
    mov cx,time
    lbldelay0:
    nop
    loop lbldelay0
    dec dx
    jnz lbldelay1
    dec bx
    jnz lbldelay2
    endm



    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    MENUSHAPE macro
    cls 16
    window 14,4,20,7,35;file
    window 13,4,42,7,57;excute
    ;---------------------------------
    gotoxy 27,6
    print_msg msg15 ;file
    ;------------------
    gotoxy 47,6
    print_msg msg19 ;calculator
    endm
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;stack segment;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    STACK SEGMENT
    Dw 200H DUP(?)
    STACK ENDS

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;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


    data ends

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;code segment;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    code segment
    main proc far
    assume cs:code,ds:data,ss:stack
    page

    mov ax,seg data
    mov ds,ax
    ;;;;;;;;;;;;Get Current Graphic Mode;;;;;;;;;
    mov ah,0fh
    int 10h
    mov ah,0
    push ax
    ;;;;;;;;;;;;new Graphic Mode;;;;;;;;;;;;;;;;;
    mov ah,00h
    mov al,12h
    int 10h

    MENUSHAPE


    ;;;;;;;;;Show Mouse;;;;;;;;;;;;;;
    mov ax,01h
    int 33h
    mouse:
    mov ax,03h;; mode grafici
    int 33h



    pushreg
    delay 1000
    popreg


    cmp bx,0001h
    jne mouse
    ;;;;;;;;;;;READ PIXEL UNDER CURSOR;;;;;;;;;

    dec cx
    mov ah,0dh
    mov bh,0
    int 10h
    inc cx
    ;;;;;;;;;SEE WHICH BUTTON(COLOR) WAS CLICKED;;;
    cmp al,14
    je toolfile


    cmp al,13
    je toolcalculate

    cmp al,10
    je toolexcute

    cmp al,14
    je toolsave

    cmp al,13
    je toolopen

    jmp EX

    toolcalculate:
    call calculate
    jmp mouse

    toolfile:
    call file
    jmp mouse

    toolexcute:
    call CALCULATORSHAPE
    jmp mouse

    toolsave:
    call example
    jmp mouse

    toolopen:
    call exampleOP
    jmp mouse


    EX:


    ;=========================

    cmp al,9
    je godown ;equalsign
    ;jmp mouse

    cmp al,1
    je one

    cmp al,2
    je two

    cmp al,3
    je three

    cmp al,4
    je four


    cmp al,5
    je five


    cmp al,6
    je six


    cmp al,7
    je seven


    cmp al,8
    je eight


    cmp al,10
    je nine


    cmp al,11
    je zero



    ;cmp al,13;;;;;;
    ;call subsign ;
    ;jmp mouse ;
    ;


    ;cmp al,14 ;
    ;call mulsign ;
    ;jmp mouse ;
    ;
    ;
    cmp al,15 ;
    call divsign ;;;;;;;;;>> ba seda kardane tavabe miad alamat gozari anjam midahad
    jmp mouse

    ;cmp al,12
    ;call addsign ;
    ;jmp mouse ;



    nine1:
    jmp nine
    zero1:
    jmp zero



    ;--------------------------

    one:
    mov digit,'1'
    call getdigit
    jmp mouse
    ;----------------------------

    two:
    mov digit,'2'
    call getdigit
    jmp mouse
    ;---------------------------

    three:
    mov digit,'3'
    call getdigit
    jmp mouse
    ;---------------------------

    godown:
    call equalsign ;do_add;
    jmp mouse

    ;--------------------------

    four:
    mov digit,'4'
    call getdigit
    jmp mouse
    ;--------------------------


    five:
    mov digit,'5'
    call getdigit
    jmp mouse
    ;----------------------------


    six:
    mov digit,'6'
    call getdigit
    jmp mouse
    ;----------------------------



    seven:
    mov digit,'7'
    call getdigit
    jmp mouse
    ;----------------------------




    eight:
    mov digit,'8'
    call getdigit
    jmp mouse
    ;----------------------------




    nine:
    mov digit,'9'
    call getdigit
    jmp mouse
    ;----------------------------


    zero:
    mov digit,'0'
    call getdigit
    jmp mouse
    ;---------------------------


    exit:


    ;=========================

    ;;;;;;;;;;ReStore Graphic Mode;;;;;;;;;;;;

    pop ax
    mov ah,0
    int 10h

    mov ax,4c00h
    int 21h
    main endp



    ;-----------------------------------
    ;;;;;;;;;;;;;;;putc;;;;;;;;;;;;;;;;;;;

    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

    ;00000000000000000000000000000000000000000000

    file proc far

    window 13,8,20,11,35;open
    window 14,12,20,15,35;save
    window 25,16,20,19,35;search


    gotoxy 27,10
    print_msg msg16 ;open
    gotoxy 27,14
    print_msg msg17 ;save
    gotoxy 27,18
    print_msg msg18 ;search

    retf

    file endp

    ;00000000000000000000000000000000000000000000



    CALCULATORSHAPE proc far
    cls 16
    window 1,1,1,2,4
    window 2,1,6,2,9
    window 3,1,11,2,14
    window 4,1,16,2,19
    window 5,1,21,2,24
    ;-----------------------
    window 6,4,1,5,4
    window 7,4,6,5,9
    window 8,4,11,5,14
    window 10,4,16,5,19
    window 11,4,21,5,24
    ;----------------------
    window 12,7,1,8,4
    window 13,7,6,8,9
    window 14,7,11,8,14
    window 15,7,16,8,19
    window 9,7,21,8,24
    ;-------------------------
    ;window 34,11,21,12,24
    window 65,17,4,20,21
    ;*****************************************
    gotoxy 2,2
    print_msg msg1
    gotoxy 7,2
    print_msg msg2
    gotoxy 12,2
    print_msg msg3
    gotoxy 17,2
    print_msg msg4
    gotoxy 22,2
    print_msg msg5
    ;------------------
    gotoxy 2,5
    print_msg msg6
    gotoxy 7,5
    print_msg msg7
    gotoxy 12,5
    print_msg msg8
    gotoxy 17,5
    print_msg msg9
    gotoxy 22,5
    print_msg msg0
    ;--------------------
    gotoxy 2,8
    print_msg msg10
    gotoxy 7,8
    print_msg msg11
    gotoxy 12,8
    print_msg msg12
    gotoxy 17,8
    print_msg msg13
    gotoxy 22,8
    print_msg msg14
    ;-----------------

    retf
    CALCULATORSHAPE endp

    ;00000000000000000000000000000000000000000000
    calculate proc far

    window 10,8,42,11,57; excute
    window 4,12,42,15,57;exit


    gotoxy 45,10
    print_msg msg20 ;excute
    gotoxy 50,14
    print_msg msg21 ;exit

    retf
    calculate endp


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;function;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;=============addsign==============;;;;;;;;
    ;
    ;addsign proc ;
    ;mov status,2 ;
    ;mov operator,'+'
    ;mov ah,02h
    ;mov dl,operator
    ;int 21h ;
    ;mov counter,0 ;
    ;ret
    ;addsign endp ;
    ;
    ;=============subsign============== ;
    ;
    ;subsign proc ;
    ;mov status,2 ;
    ;mov operator,'-'
    ;mov ah,02h
    ;mov dl,operator
    ;int 21h ;
    ;mov counter,0 ;
    ;ret ;
    ;subsign endp ;
    ;
    ;=============mulsign============== ;
    ;
    ;mulsign proc ;
    ;mov status,2 ;
    ;mov operator,'*'
    ;mov ah,02h
    ;mov dl,operator
    ;int 21h ;;;;;;;;;>> anjame amaliate alamat gozari
    ;mov counter,0 ;
    ;ret ;
    ;mulsign endp ;
    ;
    ;===============divsign============ ;
    ;
    divsign proc ;
    mov status,2 ;
    mov operator,'%'
    mov ah,02h
    mov dl,operator
    int 21h ;
    mov counter,0 ;
    ret ;
    divsign endp ;
    ;
    ;==============equalsign=========== ;
    ;
    equalsign proc

    ; ADD operator,30H
    ;cmp operator,'+'
    ;je do_add1

    ;cmp operator,'-'
    ;je do_sub1

    ;cmp operator,'*'
    ;je do_mul1

    cmp operator,'%'
    je do_div1

    ;do_add1:
    ;call do_add
    ;jmp exit_proc

    ;do_sub1:
    ;call do_sub
    ;jmp exit_proc

    ;do_mul1:
    ;call do_mul
    ;jmp exit_proc

    do_div1:
    call do_div
    jmp exit_proc
    exit_proc:
    ret

    equalsign endp
    ;
    ;==================================;;;;;;;;
    ;do_add PROC

    ;atoi string ;
    ;mov bx,ax ;
    ;atoi string2 ;
    ;add ax,bx ;
    ;itoa cresult,ax
    ;gotoxy 20,20
    ;lea si,cresult
    ;call puts

    ;ret ;s is not recognized as an internal or external command,operable program or batch file.
    ;do_add ENDP
    ;================================================

    ;do_sub PROC

    ;atoi string ;
    ;mov bx,ax ;
    ;atoi string2 ;
    ;sub bx,ax ;
    ;itoa cresult,bx
    ;gotoxy 10,20
    ;lea si,cresult
    ;call puts

    ;ret
    ;do_sub ENDP

    ;===========================================

    ;do_mul PROC

    ;atoi string ;
    ;mov bx,ax ;
    ;atoi string2 ;
    ;imul bx ;
    ;itoa cresult,ax
    ;gotoxy 10,20
    ;lea si,cresult
    ;call puts

    ;ret
    ;do_mul ENDP

    ;===================================

    do_div PROC

    atoi string ;
    mov bx,ax ;
    atoi string2
    xchg ax,bx
    cwd ;
    idiv bx ;
    itoa cresult,ax
    gotoxy 20,20
    lea si,cresult
    call puts

    ret
    do_div ENDP
    ;=================get digit========;;;;;;;;
    ;
    GETDigit PROC ;
    ;
    CMP STATUS, 1 ;
    JG NUM2 ;
    LEA DI, STRING ;
    LEA SI, STRING ;
    JMP RESTOFCODE ;
    NUM2: ;
    LEA DI,STRING2 ;
    LEA SI,STRING2 ;
    RESTOFCODE: ;;;;;>> makani ke reshteha va etelaate morede nazar ra dar khod daryaft mikonad
    MOV DL,DIGIT ;
    MOV BX,COUNTER ;
    CMP BX,8 ;
    JG Ex1 ;
    MOV BYTE PTR[DI+BX] , DL ;
    INC BX ;
    MOV COUNTER ,BX ;
    GOTOXY 8,20 ;
    CALL PUTS ;
    Ex1: ;
    RET ;
    GETDigit ENDP ;
    ;
    ;===================================;;;;;;;
    ;************************************
    clear proc far
    push ax
    push bx
    push dx
    pushf
    mov ah, 6h ;clear screen
    mov al, 25 ;number of rows
    mov ch, 0
    mov cl, 0
    mov dh, 24 ;row
    mov dl, 79 ;column
    mov bh, 7 ;attribute
    int 10h
    popf
    pop dx
    pop bx
    pop ax

    retf

    clear endp
    ;************************************


    example proc far
    push ds
    push 0

    call clear ;row=0
    mov byte ptr rowcol+1, 0 ;col=1
    mov byte ptr rowcol, 0
    push rowcol
    call move_cursor ;move_cursor(row,col)
    clc ;clear carry
    call create_file ;create_file()
    mov out_handle,ax ;out_handle=ax

    loop1:
    push offset mesg1 ;disp_message(mesg1)
    call disp_message
    ;get_name()
    call get_name ;if namelen ? 00
    cmp namelen, 00
    jz final ;=0 goto final

    mov bx, out_handle ;bx=out_handle
    call write_file ;write_file(out_handle)
    jmp loop1 ;goto loop1

    final:
    mov bx, out_handle ;bx=out_handle
    call close_file ;close_file(out_handle)
    end1:
    retf
    example endp
    ;************************************
    write_file proc
    mov ah, write ;request write
    lea dx, st_name ;set file name
    mov cx, 37 ;35 byte name,2 byte cr/lf
    int 21h
    jc error_write ;if error then goto error_write
    ret
    error_write:
    push offset write_error
    call disp_message ;disp_message(write_error)
    add sp, 2 ;pop two byte
    jmp end1 ;goto end1

    write_file endp
    ;************************************
    close_file proc
    mov ah, close ;request close
    int 21h
    jc error_close ;if error then goto error_close
    ret
    error_close:
    push offset close_error
    call disp_message ;disp_message(close_error);
    add sp, 2
    jmp end1

    close_file endp
    ;************************************
    move_cursor proc far
    push bp
    mov bp, sp
    push ax
    push bx
    push dx
    pushf
    mov ah, 2h ;cursor move
    mov bx,word ptr [bp+06]
    mov dh, bh ;row
    mov dl, bl ;column
    mov bx, 0 ;page number
    int 10h
    popf
    pop dx
    pop bx
    pop ax
    pop bp
    retf 2
    move_cursor endp

    ;************************************
    disp_message proc far
    push bp
    mov bp, sp
    push ax
    push dx
    mov dx, [bp+06]
    mov ah, 9h
    int 21h
    pop dx
    pop ax

    pop bp
    retf 2
    disp_message endp
    ;************************************
    disp proc
    mov bx, monitor ;set device
    mov ah, write ;request write
    int 21h
    ret
    disp endp
    ;************************************
    move_cur macro

    mov ah,02h
    mov dh,20
    mov dl,60
    mov bh,0
    int 10h

    endm
    ;************************************
    get_name proc
    mov ah, 0ah ;request input
    lea dx, namepar ;accept name
    int 21h
    cmp namelen, 00
    jz ret_get ;no eixt
    mov ah, ' ' ;blank for storing
    mov ch, 00h
    mov cl, namelen ;length
    lea di, st_name
    add di, cx ;address+lenght
    neg cx ;calculate remainding
    add cx, 35
    rep stosb ;set to blank
    ret_get:
    ret
    get_name endp
    ;************************************
    create_file proc

    lea dx, file_name ;set file name
    mov ah, create ;request create
    mov cx, 00 ;normal create
    int 21h ;if error the goto error_create
    jc error_create
    ret
    error_create:
    push offset create_error
    call disp_message ;disp_message(create_error)
    add sp, 2 ;pop two byte
    jmp end1 ;goto end1
    create_file endp
    ;************************************
    ;MMMMMMMMMMMMMMMMMMMMMMMMMM;MetodOpen;MMMMMMMM

    ;========================================================
    exampleOP proc far

    push ds
    push 0

    call openOP_fileOP ;openOP_fileOP()
    mov in_handleOP, ax ;in_handleOP=ax
    call clsOP ;clear screen
    mov byte ptr rowcolOP+1, 0 ;row=0
    mov byte ptr rowcolOP, 0 ;col=0
    push rowcolOP
    call move_cursorOP ;move_cursorOP(row,col)
    mov lineOP, 0 ;lineOP=0

    loopOP:

    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

    inc lineOP ;lineOP=lineOP+1

    cmp lineOP, 22 ;if lineOP < 22
    jne lineOP_1_21 ; then goto lineOP_1_22
    ;begin else
    push offset moreOP ;
    call disp_messageOP ;disp_messageOP(moreOP)
    lea dx, keyOP ;
    call getOP ;getOP(keyOP )

    call clsOP ;clsOP()
    mov byte ptr rowcolOP+1, 0 ;row=0
    mov byte ptr rowcolOP, 0 ;col=0
    push rowcolOP
    call move_cursorOP ;move_cursorOP(row,col)
    mov lineOP, 0 ;lineOP=0
    ;end else
    lineOP_1_21:

    push offset st_nameOP
    call disp_messageOP ;disp_messageOP(st_nameOP)
    jmp loopOP ;goto loop1

    finalOP:
    mov bx, in_handleOP
    call closeOP_fileOP ;closeOP_fileOP(bx)
    endOP:
    retf
    exampleOP endp
    ;************************************
    clsOP proc far
    push ax
    push bx
    push dx
    pushf
    mov ah, 6h ;clear screen
    mov al, 25 ;number of rows
    mov ch, 0
    mov cl, 0
    mov dh, 24 ;row
    mov dl, 79 ;column
    mov bh, 7 ;attribute
    int 10h
    popf
    pop dx
    pop bx
    pop ax

    retf

    clsOP endp
    ;************************************
    move_cursorOP proc far
    push bp
    mov bp, sp
    push ax
    push bx
    push dx
    pushf
    mov ah, 2h ;cursor move
    mov bx,word ptr [bp+06]
    mov dh, bh ;row
    mov dl, bl ;column
    mov bx, 0 ;page number
    int 10h
    popf
    pop dx
    pop bx
    pop ax
    pop bp
    retf 2
    move_cursorOP endp

    ;************************************
    disp_messageOP proc far
    push bp
    mov bp, sp
    push ax
    push dx
    mov dx, [bp+06]
    mov ah, 9h
    int 21h
    pop dx
    pop ax

    pop bp
    retf 2
    disp_messageOP endp
    ;************************************
    getOP proc
    mov ah, readOP ;request readOP
    mov bx, keyboardOP ;set device
    mov cx, 3 ;length readOP
    int 21h
    ret
    getOP endp

    ;************************************
    openOP_fileOP proc

    lea dx, file_nameOP ;set file name
    mov ah, openOP ;request openOP
    mov al, 00h ;readOP olny file
    int 21h
    jc error_openOP ;if error then goto error_openOP
    ret ;else return
    error_openOP:
    push offset open_errorOP
    call disp_messageOP ;disp_messageOP(open_errorOP)
    add sp, 2 ;pop two byte
    jmp endOP ;goto endOP
    openOP_fileOP endp

    ;************************************
    readOP_fileOP proc

    mov ah, readOP ;request readOP
    lea dx, st_nameOP ;buffer
    mov bx, in_handleOP ;set device
    mov cx, 37 ;length
    int 21h ;call service
    jc error_readOP ;if error then goto error_readOP
    ret
    error_readOP:
    push offset read_errorOP
    call disp_messageOP ;display readOP error message
    add sp, 2 ;pop two bytes
    jmp endOP

    readOP_fileOP endp
    ;************************************
    closeOP_fileOP proc

    mov ah, closeOP ;request closeOP
    int 21h ;call service
    jc error_closeOP ;if error then goto error_closeOP
    ret
    error_closeOP:
    push offset close_errorOP
    call disp_messageOP ;display closeOP error message
    add sp, 2 ;pop two bytes
    jmp endOP

    closeOP_fileOP endp
    ;MMMMMMMMMMMMMMMMMMMMMMMMMM;MetodOpen;MMMMMMMM
    ;==============end code=============

    code ends
    end main


    ویرایش توسط NIIT : 2nd November 2011 در ساعت 10:57 PM
    Hossein این نویسه را میپسندد.
    آرامش محصول تفکر نیست! آرامش هنر نیندیشیدن به انبوه مسائلیست که ارزش فکر کردن ندارد...

  8. #8
    عضو تازه وارد
    تاریخ عضویت
    2012 May
    ارسال ها
    8
    تشکر
    6
    تشکر شده 5 بار در 5 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    سلام ببخشید من این برنامه ها رو با چه نرم افزاری باید ببینم خودم برازبان ماشین emu8086 دارم ولی نمیتونم برنامه هایی که دان کردمو ببینم؟


  9. #9
    بنیانگذار
    تاریخ عضویت
    2010 January
    محل سکونت
    زیر سایه خدا
    سن
    37
    ارسال ها
    1,308
    تشکر
    2,923
    تشکر شده 2,205 بار در 886 پست
    نوشته های وبلاگ
    37


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    نقل قول نوشته اصلی توسط yasi9970 نمایش پست ها
    سلام ببخشید من این برنامه ها رو با چه نرم افزاری باید ببینم خودم برازبان ماشین emu8086 دارم ولی نمیتونم برنامه هایی که دان کردمو ببینم؟
    این سورس کدها رو میتونید با Masm کامپایل و اجرا کنید .
    اینجا توضیح کاملی در این رابطه دادم - نرم افزارهای مورد نیازتون هم اونجا هست : نحوه کامپایل و ساخت فایل اجرایی از سورس کد های اسمبلی
    (البته تو اجرا با emu8086 هم نباید مشکلی داشته باشید اما ترجیحا از خود Masm استفاده کنید )

    توکل بخدا
    http://DeepLearning.ir
    اولین و تنها مرجع یادگیری عمیق ایران


    هرکس از ظن خود شد یار من
    از درون من نجست اسرار من




 

 

کاربران برچسب خورده در این موضوع

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  


Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 02:16 AM بر حسب GMT +4 می باشد.