Сложение операндов разной размерности - Assembler
Формулировка задачи:
Здравствуйте! Каким образом можно сложить два операнда, если оба они могут быть словами, оба - байтами или один - слово, а другой байт. Спасибо!
model small stack 256 .data a dw 32767 b db -128 x dw ? y dw ? sum dw 0 .code main: mov ax, @data mov ds, ax mov cx, 2 cmp cx, type a je m1 mov al, byte ptr a cbw m1: mov x, ax mov cx, 2 cmp cx, type b je m2 mov al, byte ptr b cbw m2: mov y, ax mov al, byte ptr x add al, byte ptr y mov byte ptr sum, al mov al, byte ptr [x + 2] adc al, byte ptr [y + 2] mov byte ptr [sum + 2], al exit: mov ax, 4c00h int 21h end main
Решение задачи: «Сложение операндов разной размерности»
textual
Листинг программы
mov al,num1 cbw add ax,num2
Объяснение кода листинга программы
- Переменная
num1
сохраняется в регистреal
(16-битный регистр для операндов). - Функция
cbw
используется для увеличения значения регистраax
до 16-битного регистраeax
. - Переменная
num2
сохраняется в регистреax
. - Операция сложения выполняется между регистрами
ax
иal
. - Результат сохраняется в регистре
ax
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д