Расширить два первых числа до формата слова и записать следом за исходными числами - Assembler
Формулировка задачи:
Помогите пожалуйста,только начинаю разбираться, был вроде как не правильный код, я исправил. И tlink начал выдавать ошибку.
Вот само задание и код-
В сегменте данных размещены последовательно числа:-1, 2,+128,129,+32769 в минимально необходимом для них формате. Расширить два первых числа до формата слова и записать следом за исходными числами. НА МЕСТО СТАРШЕГО БАЙТА ТРЕТЬЕГО ЧИСЛА ЗАПИСАТЬ СИМВОЛ '#',НА МЕСТО МЛАДШЕГО ЕГО БАЙТА - СИМВОЛ '1'.
.386 dseg segment use16 a db -1 b db 2 с dw +128 d dd +32769 dseg ends ;ЗАПИСАЛ eseg segment use16 ea dw ? eb dd ? ec dd ? ed dd ? eseg ends cseg segment use16 assume ds:dseg, cs:cseg ; загрузка регистров-указателй сегментов ds и es m1: mov cx, dseg mov ds, cx mov cx, cseg mov es, cx ; расширим первые два числа до формата слова, запишем в es:ea movzx ax, ds:a movzx bx, ds:b mov es:ea, ax mov es:eb, bx ; Заменим 3 число максимум на решетку, минимум на 1 lea esi,d mov [esi], byte ptr '1' add esi,3 mov [esi], byte ptr '#' ; Завершение исполнения mov ah, 4ch int 21h cseg ends
Решение задачи: «Расширить два первых числа до формата слова и записать следом за исходными числами»
textual
Листинг программы
movzx ax, ds:[a] movzx bx, ds:[b] mov word ptr es:[ea], ax mov word ptr es:[eb], bx
Объяснение кода листинга программы
ax
- аккумулятор, используется для хранения данных и выполнения операцийbx
- регистр, используется для хранения данных и выполнения операцийa
- смещение в памяти, используется для доступа к даннымb
- смещение в памяти, используется для доступа к даннымea
- эффективный адрес, используется для доступа к памятиeb
- эффективный адрес, используется для доступа к памятиes
- сегментный регистр, используется для доступа к памяти- Результат выполнения кода будет записан в память по адресу
ea
иeb
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д