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