2013年7月18日木曜日

英大文字を小文字に、小文字を大文字にするアセンブラ(dynabook AZ)


/*ひな型Hello*/
#include <stdio.h>

main(){
   char s[100]="                                                  ";
   char s1[20]="%s";
   char s2[20]="%s\n";
   char s3[20]=" input: ";
   char s4[20]="output: %s\n";
   int i;
/*
s[0]=0;
s1[0]=0;
s2[0]=0;
s3[0]=0;
s4[0]=0;
*/

   asm("   add r0,r7,#0");
   asm("   add r1,r7,#40");
   asm("   bl printf");

   asm("   add r0,r7,#0");
   asm("   add r1,r7,#80");
   asm("   bl __isoc99_scanf");
   asm("   mov r5,#0");

   asm("   b T2");
   asm("T5:   ");
   asm("   add r2,r7,#80");
   asm("   ldrb r4,[r2,r5]");
   asm("   cmp r4,#64");
   asm("   bls T3");
   asm("   cmp r4,#90");
   asm("   bhi T3");
   asm("   adds r4,r4,#32");
   asm("   strb r4,[r2,r5]");
   asm("   b T4");

   asm("T3:   ");
   asm("   cmp r4,#96");
   asm("   bls T4");
   asm("   cmp r4,#122");
   asm("   bhi T4");
   asm("   subs r4,r4,#32");
   asm("   strb r4,[r2,r5]");

   asm("T4:   ");
   asm("   adds r5,r5,#1");

   asm("T2:   ");
   asm("   add r2,r7,#80");
   asm("   ldrb r4,[r2,r5]");
   asm("   cmp r4,#0");
   asm("   bne T5");
   asm("   add r0,r7,#60");
   asm("   add r1,r7,#80");
   asm("   bl printf");

}

0 件のコメント:

コメントを投稿