Ich bin neu in dieser Community. Wir programmieren Mips in der Universität, und ich brauche eine Lösung für mein Problem in meinen Hausaufgaben. Wir müssen eine .pgm-Datei öffnen und den so genannten Header lesen (in diesem Fall mit p5-Format und variabler Länge x breit). Wenn Sie die Datei öffnen, die Sie gelesen haben, erhalten Sie 4 Zeilen mit 1st. p5; 2. Länge x Breite; drittens die Farbtiefe und die vierte lange Laufzeit des ASCII-Codes. Mein Job ist es jetzt, diese Ascii zu konvertieren und ich denke, ich muss die Größe dieses Ascii wissen. Zuvor hatte ich einen Mips Code ascii zum Konvertieren, aber das Problem hier ist, dass dieser Code nur einen Teil meiner ascii Begriff wandelt, wie dieser (Kommentare für das in deutsch- Entschuldigung):Mips Assembler- So erhalten Sie die Länge eines .ascii
.data
str: .ascii "GV_]VTI=97:@JPH<1-/6;L\pz ¶³¶»ÃËËÄ»°y{xzk`[email protected]@?>9326<DD:1.--++*-./-//000002222344///35;@LVau ¥´¬§»Çĸ³³»ª °¿Åù±¯¦||x{{yttw{sv}¡°¸±¡¡£¢£p_Z[_hfYUW^accacdehhhhdghjjlnnonnnljifjgfdggfdiiiillllglrvtkiltzx~«ÀÖ¿°©´¾ÃÇÈ×ßãÖÇ»º¡±¼ËÙENSOIHD>;>CHTPB4/+.6<JWizª¯®°¸ÃËËÄ»¶xvj\NECDB<735:?:40//---,+,--./00000222235400259=DNXdw£®³½Á½³¯¯²¢¥§°»ÃÆõ©«}z{|xtmmqus¡±À¹¦m`ZZ^ce\WZ^abcacdehhhhdghjjlnnonnnlljijhggihhfiiiillmljnuxvnlqw~|¤¶ÐáÕÉÅÇÈÇÉÌÝàÒľ³µª¡¡¤±¼ËÙ[email protected]??DILNRI=1,*-6=ISao §¨·ÃËËÄ»º¯wpg\SIEDC>83359520110//.--,-//0000022224751139=CGOXfx£®¼¶®¨¤£¥°»À»¾¼³©¥vnjjmsz¬ÅÅƳxxttxuja[Y[_c`^]^abcacdfhhhhdghjjlnnnnnnonkjlkihjjhghhhhkkjknsy}vpqw~¸ÏãéáÝ×ÓÌÁÂÈÙ඲ª¬¥¦¢§ ¡¨±¼ÌÙ@[email protected]<82.+)-6>IO[e| £«´ÅËËļÁ¹vndbVKACA<11/.-.//000022225772/4<AFIQYhx¢°½{¡±½½±²¶´®|lmos¸ÍÌ®tpmjgnnjc[XX[`a`_^abcacdfhjhhdghjjlnoonnnpomknmkjljihggggjjjjsv{wrs}¸ÑãíêÝß×ÏǸ´½ÐÛµ²§¡¨¡ª ¢«²¤¡«±ºÌÙ:ADEA>:5;94268501051"
# it converts just to: GV_]VTI=97:@JPH<1
.text
main:
addi $s0, $zero, 0 # $s0 :=0; hier wird das Ergebnis aufsummiert
la $s1,str # $s1 := &str; hier wird der Zeiger auf das nächste Zeichen gehalten
addi $s2, $zero, 10 # $s2 := 10; hier steht konstand die 10 zur Multiplikaton
addi $s3, $zero, 48 # s3 := 48; hier 48, um die ASCII "0" in den Wert 0 umzuwandeln
loop:
lb $s4,($s1) # Lade nächstes Zeichen des
sub $s4, $s4, $s3 #Bilde ASCII-Ziffer auf Integer-Wert [0..9] ab
bltz $s4,terminate # Wenn Zeichen <0,
mult $s0, $s2
mflo $s0 # §s0 := §s0 *10
add $s0, $s0, $s4 # s0= s0 + Ziffernwert
addi $s1, $s1, 1 # s1= s1+1; also auf die nächstes Zeichn im String
j loop
terminate:
li $v0,1 # Resultat ausgeben
or $a0, $zero, $s0 # in ss0 stand das Ergebnis
syscall
li $v0,10
syscall
Hoffe, du kannst mir einen Hinweis geben.
Es ist unklar, was Sie konvertieren möchten. Das ist eindeutig keine Nummer? – Jester