1

文字の 5000 個の ASCII 値の配列を通過し、各文字の数を数えてアルファベット順に配列に格納するこのコードがあります。

    .text

    la $s7,results

array1 は 5000 個の ASCII 文字の配列です

    la $s6,array1

    main:
    addi $s0,$zero, 5000
    addi $s3, $zero,96
    addi $s4, $zero,65
    loop:lw $s2,0($s6)
         addi,$t1,$zero,0
         addi $s6,$s6,4
         addi, $s5,$zero, 0
         addi $s0,$s0, -1
         bge $s2, $s3, convert

$s2 のサブスタクション - $s4($s4 is @) は、カウントを格納する必要がある場所の位置を取得することです ex F - @ =​​ 6

         sub $s5, $s2, $s4

正しい位置に到達してカウントを増やすのにこれが正しいかどうか疑問に思っていましたか?

        addi $t1, $t1, 1
        loop2: addi $s7, $s7, 4
                lw $t0,($s7)
                add $t0, $t0, $t1
                sw $t0,($s7)  
                addi, $s5,$s5, -1
                beq $s5, $zero, loop2   
         bne $s0,$zero, loop    

これにより、文字が大文字の ASCII 値に変換されます。

   convert: subi $s2,$s2, 32
        addi $s5, $s5, 0
        sub $s5, $s2, $s4
        j loop2

   .data

   results: .space 128  # Words to be used to store results
4

0 に答える 0