Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1.
- data segment
- msg db "Enter Number: $"
- for_same db "Armstrong Number.$"
- for_notsame db "Not Armstrong Number.$"
- sum dd ?
- num dw 0000h
- n db 20,?,20 dup('$')
- size_n db ?
- data ends
- code segment
- assume ds:data,cs:code
- mov ax,data
- mov ds,ax
- mov dx,offset msg
- mov ah,09h
- int 21h
- mov dx,offset n
- mov ah,0ah
- int 21h
- lea si,n[2]
- mov cl,n[1]
- mov [size_n],cl
- loop1:
- mov bl,[si]
- sub bx,30h
- inc si
- mov ax,bx
- mul bx
- mul bx
- add word ptr[sum],ax
- adc word ptr[sum+2],dx
- loop loop1
- mov cl,[size_n]
- lea si,n[2]
- mov ax,000ah
- loop2:
- mov bl,[si]
- sub bx,30h
- inc si
- mov ax,000ah
- mul [num]
- mov [num],ax
- add [num],bx
- loop loop2
- mov ax,[num]
- cmp ax,word ptr[sum]
- jnz notsame
- mov dx,offset for_same
- mov ah,09h
- int 21h
- jmp exit
- notsame:
- mov dx,offset for_notsame
- mov ah,09h
- int 21h
- jmp exit
- exit:
- int 03
- code ends
- end
- 2.
- data segment
- str1 db 20,20 dup(0)
- str2 db 20,20 dup(0)
- entermsg1 db "Enter String 1 : $"
- entermsg2 db "Enter String 2 : $"
- msg1 db "Same$"
- msg2 db "Not Same$"
- data ends
- code segment
- assume cs:code,ds:data
- mov ax,data
- mov ds,ax
- mov ah,09
- mov dx,offset entermsg1
- int 21h
- mov ah,0ah
- mov dx,offset str1
- int 21h
- mov ah,2
- mov dl,10
- int 21h
- mov ah,09
- mov dx,offset entermsg2
- int 21h
- mov ah,0ah
- mov dx,offset str2
- int 21h
- mov ah,2
- mov dl,10
- int 21h
- lea si,str1
- lea di,str2
- mov al,[si+1]
- mov bl,[si+1]
- cmp al,bl
- jnz notsame
- lea si,str1+2
- lea di,str2+2
- mov cl,al
- inc cl
- loop1:
- dec cl
- jz same
- mov al,[si]
- mov bl,[di]
- cmp al,97
- jge small1
- add al,32
- cmp bl,97
- jge skip1
- add bl,32
- skip1:
- cmp al,bl
- jnz notsame
- inc si
- inc di
- jmp loop1
- small1:
- cmp bl,97
- jge skip2
- add bl,32
- skip2:
- cmp al,bl
- jnz notsame
- inc si
- inc di
- jmp loop1
- notsame:
- mov ah,09
- mov dx,offset msg2
- int 21h
- mov ah,2
- mov dl,10
- int 21h
- int 03
- same:
- mov ah,09
- mov dx,offset msg1
- int 21h
- mov ah,2
- mov dl,10
- int 21h
- int 03
- code ends
- end
- 3.
- data segment
- strbfr1 db 20,20 dup(?)
- msg1 db "palindrome$"
- msg2 db "not palindrome$"
- data ends
- extra segment
- strbfr2 db 20,20 dup(?)
- extra ends
- code segment
- assume cs:code,ds:data,es:extra
- mov ax,data
- mov ds,ax
- mov ax,extra
- mov es,ax
- mov ah,0ah
- mov dx,offset strbfr1
- int 21h
- mov ah,2
- mov dl,10
- int 21h
- lea si,strbfr1
- mov cl,[si+1]
- lea di,strbfr2
- mov ch,00
- mov bx,cx
- add di,cx
- dec di
- lea si,strbfr1+2
- back:
- cld
- lodsb
- std
- stosb
- loop back
- lea si,strbfr1+2
- lea di,strbfr2
- mov cx,bx
- cld
- repz cmpsb
- jnz notpalin
- mov ah,09
- mov dx,offset msg1
- int 21h
- mov ah,2
- mov dl,10
- int 21h
- int 03
- notpalin:
- mov ah,09
- mov dx,offset msg2
- int 21h
- mov ah,2
- mov dl,10
- int 21h
- int 03
- code ends
- end
- 4.
- data segment
- list db 02h,03h,05h,06h,15h,19h
- list_len dw $-list
- ;num db 15h
- num db 20h
- result dw -0001h
- l dw 0000h
- r dw ?
- mid dw ?
- divi db 02h
- data ends
- code segment
- assume ds:data,cs:code
- mov ax,data
- mov ds,ax
- mov bx,[list_len]
- dec bx
- mov [r],bx
- lea si,list
- loop1:
- mov ax,[r]
- mov dx,[l]
- sub ax,dx
- div [divi]
- mov ah,00h
- add ax,[l]
- mov [mid],ax
- mov bx,[mid]
- mov al,byte ptr [si+bx]
- cmp al,byte ptr[num] ;num
- jz equal
- jc less
- jnc more
- less:
- mov cx,[mid]
- inc [mid]
- mov bx,[mid]
- mov [l],bx
- mov bx,[l]
- mov bx,[mid]
- cmp bx,[r]
- jz loop1
- jnc exit
- jc loop1
- more:
- dec [mid]
- mov bx,[mid]
- mov [r],bx
- mov bx,[r]
- cmp [l],bx
- jz loop1
- jnc exit
- jc loop1
- equal:
- mov bx,[mid]
- mov [result],bx
- jmp exit
- exit:
- int 03
- code ends
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement