PDA

View Full Version : آموزش: چندین نمونه برنامه متداول



Cybersilent
جمعه 29 آبان 1388, 08:50 صبح
برنامه ای بنویسید که رشته ای را دریافت کرده و سپس کاراکتری را نیز دریافت کرده و در رشته مذکور به دنبال کاراکتر بگردد و محل قرارگیری آن را درثبات بریزد؟


.model small

.stack 64

.data

strlist label byte

max db 20

len db ?

buffer db 20 dup("$")

char db ?

p db ?

a db ?

.code

main proc

mov ax,@data

mov ds,ax

mov ah,0ah

mov dx,strlist

int 21h

mov ah,01h

int 21h

mov char,al

mov a,1

lea bx,buffer

mov cl,len

next:

cmp a,cl

je exit

mov al,[bx]

cmp char,al

jne n1

mov cl,a

jmp exit

n1:

inc a

inc bx

jmp next

exit:

mov ax,4c00h

int 21h

main endp

end main



برنامه ای بنویسید که ادرس های 100 تا 200 حافظه را بر روی صفحه نمایش چاپ کند؟


.model small

.data

msg db 'num string is:','$'

sign db ?

string db 6 dup(' '),'$'

.code

main proc

mov ax,data

mov ds,ax

mov si,100h

next:

mov ax,[si]

call printnum

inc si

inc si

cmp si,200h

jne next

mov ax,4c00h

int 21h

main endp

printnum proc

lea bx,string

add bx,5

mov sign,' '

cmp ax,0

jge setup

mov sign,'-'

neg ax

setup: mov cx,10

divloop:mov dx,0

div cx

add dl,30h

mov [bx],dl

dec bx

cmp ax,0

jne divloop

mov cl,sign

mov [bx],cl

lea dx,string

mov ah,09h

int 21h

ret

printnum endp

end main



برنامه ای بنویسید که میانگین مقادیر آدرس های موجود در آدرس های 50 تا 100 را بدست آورده و آن را در ثبات بریزد؟


.model small

.stack 64

.data

sum db ?

.code

main proc

mov ax,@data

mov ds,ax

mov bx,50h

next:

mov al,[bx]

add sum,al

cmp bx,100h

je exit

inc bx

jmp next

exit:

mov ax,sum

mov bl,50

div bl

mov cx,al

mov ax,4c00h

int 21h

main endp

end main



برنامه ای بنویسید که مقادیر موجود در آدرس های زوج حافظه(100 تا 200) را به خانه های 0 تا 50 کپی کند؟


.model small

.stack 64

.data

.code

main proc

mov ax,@data

mov ds,ax

mov bx,100

mov ax,0

next:

cmp bx,200

je exit

mov ax,[bx]

inc ax

inc bx

inc bx

jmp next

exit:

mov ax,4c00h

int 21h

main endp

end main



برنامه ای بنویسید که رشته ای را دریافت کرده کاراکترهای کوچک رشته را به بزرگ و کاراکترهای بزرگ رشته را به کوچک تبدیل کند؟


.model small

.stack 64

.data

strlist label byte

max db 20

len db ?

buffer db 20 dup("$")

.code

main proc

mov ax,@data

mov ds,ax

mov ah,0ah

lea dx,strlist

int 21h

lea bx,buffer

mov cl,len

mov ch,0

next:

mov ah,[bx]

cmp ah,41h

jb p1

cmp ah,7ah

ja p1

xor ah,00100000b

mov [bx],ah

p1:

inc bx

loop next

mov ah,2h

mov dh,2h

mov dl,0

int 10h

lea dx,buffer

mov ah,09h

int 21h

mov ax,4c00h

int 21h

main endp

end main



برنامه ای بنویسید که کاراکتری را دریافت کرده سپس به تعداد کد اسکی کاراکتر مذ کور یک رشته را چاپ کند؟


.model small

.stack 64

.data

msg db "This is a Test$"

a db ?

.code

main proc

mov ax,@data

mov ds,ax

mov ah,1h

int 21h

mov bl,al

mov cl,0

next:

lea dx,msg

mov ah,9h

int 21h

cmp bl,cl

je exit

inc cl

jmp next

exit:

mov ax,4c00h

int 21h

main endp

end main



به وسیله دستورات شیفت مقدار عبارت زیر را محاسبه کنید(بدون استفاده از دستورات ضرب و تقسیم)؟
(2x+2y-2z)/2


.model small

.stack 64

.data

x db 5

y db 5

z db 5

a1 db ?

a2 db ?

a3 db ?

a12 db ?

a123 db ?

f db ?

.code

main proc

mov ax,@data

mov ds,ax

;(2x+2y-2z)/2

;2x

mov al,x

shl al,2

mov a1,al

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

;2y

mov al,y

shl al,2

mov a2,al

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

;2z

mov al,z

shl al,2

mov a3,al

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

mov al,a2

add a1,al

mov al,a1

mov a12,al

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

mov al,a3

sub a12,al

mov al,a12

mov a123,al

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

shr a123,2

mov al,a123

mov f,al

mov ax,4c00h

int 21h

main endp

end main



برنامه ای که بزرگترین مقدار عددی موجود در آدرس های 10تا 50 هگز را یافته چاپ کند؟


.model small

.stack 64

.data

.code

main proc

mov ax,@data

mov ds,ax

mov cl,[10]

mov bx,11

next2:

mov al,[bx]

cmp cl,al

ja next

mov cl,[bx]

next:

inc bx

cmp bx,50

jne next2

mov ax,4c00h

int 21h

main endp

end main



برنامه ای که رشته ای را خوانده و سپس معکوس آن را چاپ کند؟


.model small

.stack 64

.data

strlist label byte

max db 20

len db ?

buffer db 20 dup("$")

.code

main proc

mov ax,@data

mov ds,ax

mov ah,0ah

lea dx,strlist

int 21h

lea bx,buffer

mov ch,0

mov cl,len

sub cl,1

add bx,cx

mov cl,0

next:

mov dl,[bx]

mov ah,2h

int 21h

inc cl

dec bx

cmp cl,len

jne next

exit:

mov ax,4c00h

int 21h

main endp

end main



برنامه جستجوی یک رشته در رشته دیگر







.model small

.stack 64

.data

msg1 db "Enter String 1: ","$"

msg2 db "Enter String 2: ","$"

msg db "Found in String","$"

msg3 db "Not Found in String","$"

i db ?

t db ?

strlist1 label byte

max1 db 20

len1 db ?

buffer1 db 20 dup('$')

strlist2 label byte

max2 db 20

len2 db ?

buffer2 db 20 dup('$')

.code

main proc


mov ax,@data
mov ds,ax
mov ah,2h
mov dl,0
mov dh,0
mov bl,0
int 10h
lea dx,msg1
mov ah,9h
int 21h
mov ah,0ah
lea dx,strlist1
int 21h
mov t,0
;============
mov ah,2h
mov dl,0
mov dh,2
mov bl,0
int 10h
lea dx,msg2
mov ah,9h
int 21h
mov ah,0ah
lea dx,strlist2
int 21h
;==============
mov cl,len1
mov ch,len2
mov bx,offset buffer1
mov si,offset buffer2
mov t,01
next:
;===========
mov al,[si]
cmp al,[bx]
jne p2
cmp t,ch
je chap
inc si
inc bx
inc t
jmp next
p2:
mov cl,len1
mov ch,len2
inc bx
mov si,offset buffer2
mov t,01
inc i
jmp exit
chap:
mov ah,2h
mov dl,0
mov dh,4
mov bl,0
int 10h
lea dx,msg
mov ah,9h
int 21h
jmp ex
;==========
exit:
cmp cl,i
jne next
mov ah,2h
mov dl,0
mov dh,4
mov bl,0
int 10h
lea dx,msg3
mov ah,9h
int 21h
ex:
mov ax,4c00h
int 21h
main endp
end main