Сложение 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
Объяснение кода листинга программы
- ORG 0100h — устанавливает точку начала выполнения кода в 0100h
- MODEL TINY — устанавливает модель памяти для программы
- STACK 256 - определяет размер стека в 256 байт
- CODESEG — указывает на код сегмента
- start: — обозначает точку входа в программу
- x dw 1194h — определяет 16-битное слово, содержащее значение 1194h
- star dw 545h — определяет 16-битное слово, содержащее значение 545h
- mlad dw 6584h — определяет 16-битное слово, содержащее значение 6584h
- result dw ? — определяет 16-битное слово, которое будет содержать результат сложения
- mov ax,0 — устанавливает значение регистра AX в 0
- mov bx,[mlad] — перемещает значение из регистра BX в память по адресу mlad (6584h)
- add bx,[x] — складывает значение из регистра BX с значением из памяти по адресу x (7718h)
- adc ax,[star] — складывает значение из регистра AX с значением из памяти по адресу star (545h)
- mov [result],bx — перемещает значение из регистра BX в память по адресу result
- mov [result+2],ax — перемещает значение из регистра AX в память по адресу result+2
- mov ax, word ptr [result] — перемещает значение из памяти по адресу result в регистр AX
- mov bx, word ptr [result+2] — перемещает значение из памяти по адресу result+2 в регистр BX
- RET — завершает выполнение программы и возвращает управление операционной системе
- end start — указывает на конец программы
- start: — точка входа в программу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д