November 24, 2011

perbandingan kata bahasa c dan assembly




org 100h
start : jmp mulai
        tanya db 'masukan kata anda : $',13,10
kata1 db 'unny cute$' ; lebel untuk menyimpan kata yang akan di ban
                                      ;  dingkan
kata2 db  0ffh,?,0ffh dup(?) ; lebel untuk kata yang di input
                                             ; nantinya

jawaban1 db 13,10,'benar $' ; untuk validasi
jawaban2 db 13,10,'salah $' ; untuk validasi

mulai :
mov ah,09h
mov dx,offset tanya
int 21h

 isi :
mov ah , 0ah
mov dx,offset kata2  ; input untuk kata2 yang akan di bandingkan
int 21h


mov bx,dx
        inc bx
        mov dx,[bx]
xor dh,dh
mov bx ,dx
push dx


mov kata2[bx+2],'$'
   xor bx,bx

 ulang :
mov al,kata1[bx]
cmp al,'$'
je bndk_pnj_str
inc bx       ;untuk mencatat panjang string
loop ulang

bndk_pnj_str :                
        pop dx
mov al,bl
cmp al,dl
je sama   ; jika sama panjang string kata1 dengan kata du maka lompat
                          ; ke lebel sama
        jne t_sama        ; sebaliknya jika tidak sama maka lompat ke lebel
                          ; t_sama
sama :
      push ds
 pop es
 mov si,offset kata1   ; es:[di] = offset kata1
   mov di,offset kata2   ; ds:[si] = offset kata2  
 add di,02h;               ; di + 2 agar di pada lokasi offset kata u / awal
                                          ;string
          xor bh,bh                 ; bh  = 0 stelah di xor
 mov cx,bx                ;disini cx akan menjadi acuan kapan akan berhenti //
                                          ;  atau ulang selama cx != 0 pada saat loop ul_bandingkan_str
                                 
ul_bandingkan_str :
       cmpsb
  jne t_sama
                             
 loop ul_bandingkan_str

      mov ah,09h
      mov dx,offset jawaban1
      int 21h
 jmp exit
t_sama :
      mov ah,09h
      mov dx,offset jawaban2
 int 21h

exit :
 int 20h
 end start












dan ini bahasa c nya



#include <stdio.h>
#include <string.h>
  int pnj(char pjkata[]){
  int x = 0;
   for (;pjkata[x] != '�';x++){
      }
  return x;
}
int bandingkan(char a[],char b[]){
     int kondisi=1;
     int x = 0;
     for(;a[x] == b[x];x++) kondisi = (int)a[x];
     return kondisi ;
     }
int main(){
char kata1[]={"unny cute"};
char kata2[255];
printf("masukan kata2 anda  :  n");
scanf("%[^n]",&kata2[0]);
printf("pass anda = %sn",kata2);
if(pnj(kata1) == pnj(kata2) && bandingkan(kata1,kata2) == 0 )
           printf("sama");
           else
           printf("tidak sama");
           return 0;
           }




Tidak ada komentar:

Posting Komentar

Powered by Blogger