Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Assembler - какой размер задать переменной?

Александр Гагарин Мастер (1417), на голосовании 2 месяца назад
FASM
Само задание такое: с помощью loop вычислить k в степени n.
Число k=2, а переменная n должна быть восьмибитной без знака, у меня n=6.

Вопрос: как мне объявить эту переменную? Правильно ли будет сделать так:
n db 6h
Голосование за лучший ответ
Professional Professional Мудрец (14369) 3 месяца назад
В FASM (Flat Assembler) для объявления восьмибитной беззнаковой переменной используется директива "db" (define byte). Однако, выражение "6h" означает шестнадцатеричное число и соответствует десятичному значению 6. Если вы хотите задать переменную со значением 6, вам достаточно написать:

```assembly
n db 6
```

После выполнения этой инструкции в памяти будет выделен один байт и ему будет присвоено значение 6.

Теперь, чтобы вычислить 2 в степени 6 с использованием цикла, вы можете написать следующий код на FASM:

```assembly
org 100h ; Начальный адрес программы

section '.text' code readable executable
start:
mov al, 2 ; Загрузить число 2 в регистр AL
mov bl, 6 ; Загрузить значение переменной n (6) в регистр BL

xor cx, cx ; Обнулить счетчик цикла
mov cl, bl ; Скопировать значение переменной n в регистр CX

mov ah, 1 ; Инициализировать степень (начальное значение 1)

loop_start:
mul al ; Умножить значение AL на 2
loop loop_start ; Повторить цикл, пока CX не станет равным 0

; Здесь результат находится в регистрах AH и AL

; Ваш код дальше...
```

Обратите внимание, что вычисленный результат будет находиться в регистрах AH и AL.
Александр ГагаринМастер (1417) 3 месяца назад
А ведь результат умножения AL на n будет записан в AX, а не в AL. Это будет работать?
Jurijus Zaksas Искусственный Интеллект (403265) 3 месяца назад
А нафига тебе целых 6 байт, если ответ помещается в один о_О?
Похожие вопросы