Написать программу сборки ARM - PullRequest
0 голосов
/ 25 октября 2019

Напишите программу сборки ARM с приведенными ниже инструкциями

  1. Объявите переменную 'A', которая содержит 9950948. Загрузите значение в переменную 'A' в регистр R3.

    Скопируйте последние 10 битов значения, сохраненного в R3, в R5, скопируйте биты с 11 по 20 в R6 и Скопируйте биты 21 t0 32 в R7 и сохраните значения в стеке в порядке R6, R5R7. (15 баллов)

* МОЕ ТЕКУЩЕЕ РЕШЕНИЕ. При компиляции строка с LSL пропускается. Как это можно решить

        LDR R0,= A
        LDR R3, [R0]

        MOV R1, 0x000003ff  ; mask for last 10 bits - 1111111111
        AND R5, R3, R1      ; Place BitWise AND into R5

        LSL R2, R2, #10



A DCD 0x97D6E4  ; 9950948
;--------------------------------------
stop   B  stop
       END

1 Ответ

0 голосов
/ 27 октября 2019

Это моё решение.

        LDR R0,= A
        LDR R3, [R0]

        MOV R1, 0x000003ff  ; mask for last 10 bits - 1111111111
        AND R5, R3, R1      ; Place BitWise AND of R3 & R1 into R5

        LSL R2, R1, #10     ; Shift left R1 ten times to capture 11th - 20th bit
        AND R6, R3, R2      ; Place BitWise AND of R3 & R2 into R6

        LSL R4, R2, #10     ; Further Shift R2 left 12 times to capture 21st - 32nd bit
        AND R7, R3, R4      ; Place BitWise AND of R3 & R4 into R7

        LDR R8,=0x20000014
        MOV SP, R8

        STMIA SP!, {R6, R5, R7}



A DCD 0x97D6E4  ; 9950948 - student ID excluding 00's
;--------------------------------------
stop   B  stop
       END
...