Сложение 32-х разрядных чисел на 16 разрядных регистрах - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Нужно написать программу для сложение двух чисел: одно 16разрядное, другое 32разрядное. При этом нельзя использовать регистры EAX и т.д... А только AX, BX, CX, DX. Я совсем не понимаю, как это можно реализовать. Поместить старшие и младшие разряды отдельно? ну и вот моя, какая-никакая попытка
org 0100h
MODEL TINY
STACK 256
CODESEG
start:
x dw 1194h
star dw 545h
mlad dw 6584h
mov ax,star
mov bx,mlad
mov cx,x
add bx,cx
RET
end start

Решение задачи: «Сложение 32-х разрядных чисел на 16 разрядных регистрах»

textual
Листинг программы
org 0100h
MODEL TINY
STACK 256
CODESEG
start:
x dw 1194h
star dw 545h
mlad dw 6584h
result dw ?
mov ax,0
mov bx,[mlad]
add bx,[x]; bx=7718h
adc ax,[star]; ax=545h
mov [result],bx
mov [result+2],ax; [result]=5457718h
mov ax, word ptr [result];
mov bx, word ptr [result+2];
 
RET
end start

Объяснение кода листинга программы

  1. ORG 0100h — устанавливает точку начала выполнения кода в 0100h
  2. MODEL TINY — устанавливает модель памяти для программы
  3. STACK 256 - определяет размер стека в 256 байт
  4. CODESEG — указывает на код сегмента
  5. start: — обозначает точку входа в программу
  6. x dw 1194h — определяет 16-битное слово, содержащее значение 1194h
  7. star dw 545h — определяет 16-битное слово, содержащее значение 545h
  8. mlad dw 6584h — определяет 16-битное слово, содержащее значение 6584h
  9. result dw ? — определяет 16-битное слово, которое будет содержать результат сложения
  10. mov ax,0 — устанавливает значение регистра AX в 0
  11. mov bx,[mlad] — перемещает значение из регистра BX в память по адресу mlad (6584h)
  12. add bx,[x] — складывает значение из регистра BX с значением из памяти по адресу x (7718h)
  13. adc ax,[star] — складывает значение из регистра AX с значением из памяти по адресу star (545h)
  14. mov [result],bx — перемещает значение из регистра BX в память по адресу result
  15. mov [result+2],ax — перемещает значение из регистра AX в память по адресу result+2
  16. mov ax, word ptr [result] — перемещает значение из памяти по адресу result в регистр AX
  17. mov bx, word ptr [result+2] — перемещает значение из памяти по адресу result+2 в регистр BX
  18. RET — завершает выполнение программы и возвращает управление операционной системе
  19. end start — указывает на конец программы
  20. start: — точка входа в программу

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы