BG Development


  Reply to this topicStart new topicStart Poll

> Подпрограма на Асемблер преобразуване на 28б число
Kiro1234
Публикувано на: 25-05-2021, 13:29
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 1
Регистриран на: 25.05.21



Здравейте, може ли малко помощ с тази задача? Цялото реализиране ако може, защото нищо не ми е ясно.

Да се напише подпрограма, която да записва 28-битовото число в регистър R0 като низ от байтове, представляващ ВПД, в буфера, указан от регистър R1, а в регистър R0 да връща указател към следващия след този низ байт.

Това е дадено и трябва по него да се попълни.
CODE

.global      putvlq                              // Регистри: value = R0, dest = R1, buffer = R2
putvlq:                                    //putVLQ(unsigned value, unsigned char *dest) {
      ……                              //    unsigned buffer = value & 0x7f;
L1:      ……                              //    while ((value >>= 7) > 0) {
      ……                              //        buffer <<= 8;
      ORRNE      R2,R2,#0x80            //        buffer |= 0x80;
      ……                              //        buffer += value & 0x7f;
      ADDNE      R2,R2,R3            //     }
      BNE            L1                  //__/ for (;; ) {
L2:      STRB            R2,[R1],#1            //        *dest++ = (unsigned char)buffer;
      ……                              //        if (buffer & 0x80) ;  use tst command
      MOVNE      R2,R2,LSR #8            //            buffer >>= 8;
      ……                              //        else return dest;
      MOV            R0,R1                  //    }      
      BX            LR                  //}


Това мнение е било редактирано от DarkOne на 25-05-2021, 18:33
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0