Возник спор,какой код вернее? - Assembler
Формулировка задачи:
Была поставлена задача написать программу сложения 3-х числе,но что бы
_a dw (любое число) ;
_b dw (любое число) ;
_c dd (любое число)
В итоге,было написано 2 кода.
Оба кода запускаются,но какой из них правильно работает.
Я начинающий,написал 2 кода,но сам не понимаю что написано.(странновато знаю)
1-й код
2-й код
Если можно аргументируйте почему именно "этот" код.
title Vlad Denisov KiT 12 .686 ; директива визначення типу мікропроцесора .model flat ; завдання лінійної моделі пам’яті .data ; директива визначення даних _a dw 7 ; _b dw 16 ; _c dd 95 .code ; директива початку сегмента команд _start: ; мітка початку програми з ім’ям _start mov ax,_a mov bx,_b add ax,bx push eax pop ebx add eax,_c ret ; повернення керування ОС end _start ; закінчення програми з ім’ям _start
title Vlad Denisov KiT 12 .686 ; директива визначення типу мікропроцесора .model flat ; завдання лінійної моделі пам’яті .data ; директива визначення даних _a dw 7 ; _b dw 16 ; _c dd 95 res1 dw 0 res dd 0 .code ; директива початку сегмента команд _start: mov ax,_a mov bx,_b add ax,bx ; результат в ах mov res1, ax mov ax, word ptr _c mov bx, word ptr _c+2 add ax, word ptr res1 ; соединил регистры mov word ptr res, ax mov word ptr res+2, bx ret ; повернення керування ОС end _start ; закінчення програми з ім’ям _start
Решение задачи: «Возник спор,какой код вернее?»
textual
Листинг программы
movzx eax,[_a] movzx ebx,[_b] movzx ecx,[_c] add eax,ebx add eax,ecx
Объяснение кода листинга программы
- Первый элемент списка: movzx eax, [_a]
- Переменная _a содержит значение, которое будет использовано в коде.
- Команда movzx используется для копирования значения из памяти в регистр eax.
- Значение в регистре eax будет использоваться в последующих операциях.
- Второй элемент списка: movzx ebx, [_b]
- Переменная _b содержит значение, которое будет использовано в коде.
- Команда movzx используется для копирования значения из памяти в регистр ebx.
- Значение в регистре ebx будет использоваться в последующих операциях.
- Третий элемент списка: movzx ecx, [_c]
- Переменная _c содержит значение, которое будет использовано в коде.
- Команда movzx используется для копирования значения из памяти в регистр ecx.
- Значение в регистре ecx будет использоваться в последующих операциях.
- Четвертый элемент списка: add eax, ebx
- Операция сложения выполняется между значениями в регистрах eax и ebx.
- Результат будет сохранен в регистре eax.
- Пятый элемент списка: add eax, ecx
- Операция сложения выполняется между значениями в регистрах eax и ecx.
- Результат будет сохранен в регистре eax. В данном коде выполняются операции сложения с использованием регистров eax, ebx и ecx, а также переменных _a, _b и _c. Результат каждой операции сохраняется в регистре eax.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д