2010년 10월 31일 일요일

Assembly language로 프로그래밍 하기!!

세가지 수를 입력 받아서 큰수부터 나열하는 프로그램을 짜라는 과제다.

먼저 프로그래밍을 어떤식으로 할 건지에 대해서 방향을 잡기 위해

먼저 C로 코드를 작성하자.

#include <stdio.h>
int main(void)
{
 int num1, num2, num3;
 scanf("%d %d %d" , &num1, &num2, &num3);
 if (num1 < num2)
  if (num2 < num3)
   printf(" num1 num2 num3 ");
  else
   if (num1 < num3)
    printf(" num1 num3 num2 ");
   else
    printf(" num3 num1 num2 ");
 else
  if(num2>num3)
   printf(" num3 num2 num1 ");
  else
   if(num1 < num3)
    printf(" num2 num1 num3 ");
   else
    printf(" num2 num3 num1 ");
 return 0;
}
이런식의 코딩이 가능하다

그러면 이제 이를 활용해서 assembly langauge로 코드를 짜보자

BR      main
num1:    .BLOCK  2                                       
num2:    .BLOCK  2                                       
num3:    .BLOCK  2                                       
main:    DECI    num1,d                                  
            DECI    num2,d
            DECI    num3,d
         BR      num12
num12: LDA    num1,d
         SUBA    num2,d
         BRLT    num12a
         BR      num12b
num12a: LDA    num2,d
         SUBA    num3,d
         BRLT    num123
         BR      num23

num23: LDA    num1,d
         SUBA    num3,d
         BRLT    num132
         BR      num312
num12b: LDA    num3,d
         SUBA    num2,d
         BRLT    num321
         BR      num13
num13: LDA    num1,d
         SUBA    num3,d
         BRLT    num213
         BR      num231
num123: DECO num1,d
              DECO num2,d
              DECO num3,d
              BR finish

num132: DECO num1,d
              DECO num3,d
              DECO num2,d
              BR finish
num213:DECO num2,d
              DECO num1,d
              DECO num3,d
              BR finish
num231: DECO num2,d
              DECO num3,d
              DECO num1,d
              BR finish
num312: DECO num3,d
              DECO num1,d
              DECO num2,d
              BR finish
num321: DECO num3,d
              DECO num2,d
              DECO num1,d
              BR finish
finish:  STOP
         .END


명령어는 그렇게 많이 필요한 건 아니었지만, 그래도 오래걸렸다 ..휴

그래도 역시 C로 코딩 하는게 편하고 좋은듯 .... (익숙해서그런진몰라도 ㅋㅋ)

댓글 없음:

댓글 쓰기