недавно я начал изучать ассемблер, и это настоящее путешествие! :) Я знаю несколько базовых вещей c и хочу узнать о хранении данных, воссоздав мою программу python. Программа должна принять входные данные (я не уверен, если это возможно при сборке) и вернуть количество голов, которое будет иметь гидра через определенное количество дней. Формула: result = ((old_day*new_day)+(new_day-old_day))
Я упростил мой python код до:
old_day = 2
new_day = 3
fight = 5
temp1 = 0
temp2 = 0
temp3 = 0
for i in range(fight):
temp1 = old_day*new_day
temp2 = new_day-old_day
temp3 = temp1+temp2
old_day = new_day
new_day = temp3
print(old_day)
И до сих пор я придумал это в сборке:
global _start
section .data
old dw 2
l_old equ $ - old
new dw 3
l_new equ $ - new
tem1 dw 0
l_tem1 equ $ - tem1
tem2 dw 0
l_tem2 equ $ - tem2
tem3 dw 0
l_tem3 equ $ - tem3
days dw 4
section .text
_start:
mov al, [old]
mov bl, [new]
mov cl, [tem1]
mov dl, [tem2]
mov ah, [days]
mov eax, 1
mov ebx, 0
int 0x80
label:
Я застрял на этикетке поскольку mul
хранит свой результат в aex
, но я храню свои значения в al
и ah
. Мой вопрос: mul
переопределит мои данные? Есть ли лучший способ хранения данных? И, наконец, мне нужны все строки с equ
или это актуально только при выводе? Спасибо за ваше время и помощь:)