1. запустите тренажёр «лампанель». введите программу
data 01d0
data 3536
data 0101
data
используя дизассемблер программы «лампанель», запишите эту программу на языке ассемблера:
программа:
запишите код команды stop:
запишите содержимое памяти, в которой располагается эта программы, в виде последовательности символов:
2. как вы думаете, какой код будет иметь команда mov r1,r3? проверьте свой ответ с программы.
3. напишите программу, которая преобразует строчные буквы в заглавные, используя байтовые операции. блок данных может выглядеть так:
d:
data "abcdefgh"
В регистрах R1, R2 и R3 записаны коды трех десятичных цифр, составляющих трехзначное число
(соответственно сотни, десятки и единицы). Построить в регистре R0 это число. Например, если
R1=3116, R2=3216 и R3=3316, в регистре R0 должно
получиться десятичное число 123
1. Для записи программы на языке ассемблера, введенной через тренажер «лампанель», нам потребуется дизассемблер, чтобы прочитать машинный код и преобразовать его в ассемблерный код. Если мы предположим, что цифры после `data` являются шестнадцатеричным представлением данных, программа на языке ассемблера будет выглядеть следующим образом:
```
mov ax, 01D0
mov bx, 3536
mov cx, 0101
; остальные инструкции data здесь
```
Код команды `stop` не указан, поэтому я не могу предоставить точный ответ на этот вопрос.
Чтобы записать содержимое памяти, где располагается эта программа, в виде последовательности символов, вам понадобится адресная таблица. Но, так как адресная таблица не предоставлена, я не могу точно ответить на этот вопрос.
2. Команда `mov r1,r3` скопирует содержимое регистра R3 в регистр R1. Предполагая, что R1 и R3 могут быть двухбайтовыми регистрами, код команды будет выглядеть следующим образом:
```
mov r1, r3
```
3. Программа, которая преобразует строчные буквы в заглавные, может быть следующей:
```assembly
mov cx, 0 ; инициализация счетчика
mov al, [d+cx] ; загрузить букву из блока данных по адресу d+cx
cmp al, 97 ; сравнить с кодом символа 'a'
jl end ; если меньше 'a', перейти к концу программы
cmp al, 122 ; сравнить с кодом символа 'z'
jg end ; если больше 'z', перейти к концу программы
sub al, 32 ; вычитаем 32, чтобы преобразовать строчную букву в заглавную
mov [d+cx], al ; сохранить измененный символ обратно в блок данных
inc cx ; инкрементировать счетчик
jmp start ; перейти к началу цикла
end:
; здесь код завершения программы
d:
data "abcdefgh"
```
Это простая программа, которая перебирает буквы в блоке данных `d`, проверяет каждую букву и, если она является строчной, преобразует ее в заглавную. Затем программа переходит к следующей букве. После завершения цикла программа продолжает выполнение.
Надеюсь, это помогло! Если у вас возникнут еще вопросы, не стесняйтесь задавать. Я готов помочь!