نام برنامه : چاپ مغلوب عدد صحیح علامت دار
زبان برنامه : اسمبلی
توضیحات برنامه : توسط این برنامه شما می توانید از کاربر یک عدد n رقمی صحیح علامت دار دریافت نمایید و مغلوب آن را چاپ نمایید به طور مثال :

عدد دریافتی : 125- خروجی برنامه : 521-


سورس برنامه :
کد:
sseg segment
    dw 50 dup(?)
    sseg ends

dseg segment
    s dw ?
    dseg ends

cseg segment
    assume cs:cseg,ss:sseg,ds:dseg
   
    getch proc
        mov ah,0
        int 16h
        ret
        getch endp   
   
    putch proc
        push bx
        mov bh,0
        mov bl,0fh
        mov ah,0eh
        int 10h
        pop bx
        ret
        putch endp
   
start:mov cx,0
    call getch
   
    cmp al,'+'
    jne manfi
    mov s,0
    jmp get
   
manfi:mov s,1
     
get:call putch
lp1:call getch
    cmp al,13
    je chap
    push ax
    inc cx
    call putch
    jmp lp1
   
   
chap:mov al,' '
     call putch
     mov dx,s
     cmp dx,0
     jne man
     mov al,'+'
     call putch
     jmp lp2
 man:mov al,'-'   
     call putch
     
 lp2:pop ax
     call putch
     dec cx
     jz end     
     jmp lp2
     
 end:mov ah,4ch
     int 21h
     cseg ends
end start



lبا توجه به مقدار متغییر s متوجه می شویم که عددی که وارد شده است منفی است یا مثبت که 0 نشانگر عدد مثبت و 1 عدد منفی می باشد.
که ابتدا ما تک تک رقم ها را دریافت کرده و آنها را داخل یک پشته میریزیم و موچاپ تک تک رقم ها را از پشته خارج کرده و به ترتیب چاپ می کنیم برنامه بسیار ساده ای هستش

++++++++++++++++++++++++++

مشخصات برنامه :
نام برنامه : بدست آوردن ب.م.م و ک.م.م
زبان برنامه : اسمبلی

سورس برنامه :

کد:

seg1 segment
    a dw 20
    b dw 15
    zarb dw ?
    bmm dw ?
    kmm dw ?
    seg1 ends
seg2 segment
    assume cs:seg2,dc:seg1
    L:mov ax,seg1
    mov ds,ax
    mov ax,a
    mov bx,b
    mul bx
    mov zarb,ax
   
    f2:mov dx,0
    mov ax,a
    mov bx,b   
    div bx         
    cmp dx,0
    je f1

    mov a,bx
    mov b,dx
    jmp f2
       
    f1:mov bmm,bx   
    mov ax,zarb
    div bmm
    mov kmm,ax

    mov ah,4ch
    int 21h
    seg2 ends
end L



این برنامه ب.م.م و ک.م.م دو عدد 15 و 20 رو که توی متغییر های a و b ذخیره شده اند بدست می اورد ( که مقدار این دو متغییر رو شما می توانید در اول برنامه تغییر دهید)
شیوه کار این بر نامه به این صورت هستش که اول دو عدد را در یکدیگر ضرب کرده و نتیجه رو در متغییر zarb ذخیره میکنه و سپس دو عدد اولیه را بر هم تقسیم متوالی می کنه تا باقی مانده 0 شود در این که در این صورت اخرین خارج قسمت ما که داخل شط قرار دارد ب.م.م می باشد و ما آن را داخل متغییر bmm قرار می دهیم و حال از تقسیم حاصل ضرب دو عدد اولیه ( که در متغییر zarb قرار دارند ) بر ب.م.م ، ک.م.م اعداد ما حاصل می شود که ما آن را داخل متغییر kmm ذخیره می کنیم .
در انتها ب.م.م و ک.م.م به ترتیب داخل متغیر های bmm و kmm در برنامه ذخیره شده اند.

+++++++++++++++++++++++

نام برنامه : محاسبه میانگین و ماکزیمم و مینیمم
زبان برنامه : اسمبلی


سورس برنامه :

کد:

seg1 segment
    a dw 3
    b dw 5
    c dw 4
    min dw ?
    max dw ?
    sum dw 0
    avg dw 0
    seg1 ends
seg2 segment
    Assume CS:seg2,DS:seg1
    L:mov ax,seg1       
    mov ds,ax
   
    ;shoroe jam shodan adad ba ham
   
    mov ax,a
    add ax,b
    add ax,c
   
    ; be dast avardane miyangin
   
    mov sum,ax 
    mov bx,3
    div bx
    mov avg,ax
   
    ;shoro mogayese barae taine min va max
   
    mov ax,a
    cmp ax,b
    ja f1
    mov ax,b
    mov max,ax
    mov cx,a
    mov min,cx
    cmp ax,c
    ja f3
    mov bx,c
    mov max,bx
    mov dx,sum
    mov ax,avg
    jmp end
   
    f1:mov max,ax
    mov bx,b
    mov min,bx
    mov cx,sum
    mov dx,avg
    cmp ax,c
    ja f2
    mov cx,c
    mov max,cx
    mov ax,sum
    mov dx,avg
    jmp end
   
    f2:cmp c,bx
    ja end
    mov cx,c
    mov min,cx
    mov bx,avg
    mov dx,sum
    jmp end
   
    f3:mov dx,avg
    mov bx,c
    cmp bx,min
    mov bx,sum
    ja end
    mov min,bx
    mov cx,sum
    mov dx,avg
    jmp end   
   
    end:mov ah,4ch
    int 21h
    seg2 ends
end L


در این برنامه متغییر های a و b و c 3متغییری هستند که اعدادی را که ذخیره کردن میانگین و ماکزیمم و مینیمم آنها محاسبه می شوند که مقدار آنها را می توان به دلخواه هر عددی انتخاب کرد .
که در این برنامه ابتدا 3 عدد را با هم جمع می کنیم و داخل متغییر sum ذخیره می کنیم و سپس تقسیم بر 3 کرده و میانگین این اعداد را داخل avg قرار می دهیم و بعد 3 عدد را برای تعیین ماکزیمم و مینیمم با یکدیگر مقایسه می کنیم .

+++++++++++++++++++++++++++++++

مشخصات برنامه :
نام برنامه : چاپ یک کارکتر در کل صفحه
زبان برنامه : اسمبلی

سورس برنامه :

کد:

chap segment
    assume cs:chap
   
    start:mov ah,0
    int 16h
    cmp ah,1
    je exit
 
    mov bh,0
    mov bl,25h
    mov cx,2000
    mov ah,0ah
    int 10h
    jmp start
   
    exit:mov ah,4ch
    int 21h
chap ends



در این برنامه ما با استفاده از وقفه 16h و تابع شماره 0 آن یک کاراکتر از کاربر در یافت کرده و کد اسکی ان را داخل al قرار می دهیم و سپس این کاراکتر رو با کد اسکی 1 که برای کلید enter هستش مقایسه می کنیم اگه برابر بودش از برناکمه خارج می شیم در غیر این صورت کل صفحه را با این کاراکتر پر می کنیم یعنی کاراکتر را در کل صفحه چاپ می کنیم .
یکسری متغییر های خواس در این برنامه :
1- bh : که شماره صفحه ای را که قرار کاراکتر در ان چاپ شود مشخص می کنه که می توانداز اعداد 0 ، 1 ،2 ، 3 و ... 7 را شامل بشه
2- bl : کد رنکی را که قرار کاراکتر با ان رنگ چاپ بشود مشخص می کند
3- cx : تعداد دفعاتی که قرار کاراکتر چاپ بشود را مشخص می کند ( در اینجا طبق پیش فرض فرض شده است که هر صفحه شاما 2000 کاراکتر می باشد )
و در اخر سر هم با وقفه شماره 10h و تابع شماره 0ah ان شروع به چاپ کاراکتر در صفحه می کنیم

++++++++++++++++

مشخصات برنامه :
نام برنامه : محاسبه تعداد ارقام یک عدد n رقمی
زبان برنامه : اسمبلی

سورس برنامه :

کد:

seg1 segment
    n dw 65535
    x dw ?
    seg1 ends
seg2 segment
    assume CS:seg2,DS:seg1
    L:mov ax,seg1
    mov ds,ax
    mov CX,0
    mov BX,10
    mov ax,n
    Q:mov dx,0
    DIV BX
    inc CX
    CMP ax,0
    JNE Q
    mov x,cx
    mov ah,4ch
    int 21h
    seg2 ends
end L



هر عددی را که می خواهیم می توانیم داخل متغییر n که در اول برنامه تعریف کردیم قرار دهیم کار این برنامه به این صورت هستش که عددمون رو تقسیم بر 10 می کنیم و تا زمانی که خارج قسمتمون برابر 0 نشده این کار رو تکرار می کنیم .
متغییر های برنامه :
1- cx : که شمارنده تعداد ارقام عدد ما می باشد و در اول برنامه مقدار آن را برابر 0 قرار می دهیم
2- bx : مقدار این متغییر را برابر 10 قرار می دهیم تا عددمان را بر آن تقسیم کنیم
ابتدا cx را برابر 0 و bx را برابر 10 قرار می دهیم و عددمان را نیز داخل شط و حال ax را تا زمانی که خارج قسمتمان برابر 0 نشده تقسیم بر 10 می کنیم و وقتی برابر 0 شد قدار cx را در x قرار می دهیم که نشان دهنده تعداد ارقام عدد ما می باشد.


+++++++++++++++++++