Size suffix and destination or source size do not match - Assembler

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

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

Добрый день, возникла проблема. Говорю сразу в ассемблере ничего не понимаю, в гугле нашел только одну ссылку на свою проблему. Код пишу в Free Pascal через asm. Вот код ассемблера:
asm
mov al,zn1;
mov ah,zn2;
mul ax;
mov @result,ax;
Ругается на строчку mov al,zn1; и mov ah,zn2;. В них я добавляю данные типа integer. Ошибка:size suffix and destination or source size do not match. Мне кажется понимаю, в чем проблема, но из-за недостатка знаний в ассемблере не могу ее решить. Прошу помощи.

Решение задачи: «Size suffix and destination or source size do not match»

textual
Листинг программы
program ass;
var c1,c2:integer;
 
{$ASMMODE intel}
 
function add(c1:integer;c2:integer):integer;
begin
    asm
        mov ax,c1;
        mov dx,c2;
        add ax,dx;
        mov @result,ax;
    end;
end;
 
procedure umnzn(c1:integer;c2:integer);
begin
    asm
       mov al,c1;
       mov bl,c2;
       mul bl;
       mov @result,ax;
    end;
end;
 
begin
    readln(c1);
    readln(c2);
    writeln(umnzn(c1,c2));
    readln;
end.

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

  1. Создание двух переменных для хранения чисел: c1 и c2.
  2. Определение функции add с двумя параметрами c1 и c2, возвращающей целое число.
  3. Внутри функции add происходит использование инлайн-ассемблера, где значения переменных c1 и c2 загружаются в регистры, затем они складываются, и результат сохраняется в регистр ax, а затем возвращается в переменную @result.
  4. Определение процедуры umnzn с двумя параметрами c1 и c2, ничего не возвращающей.
  5. Внутри процедуры umnzn также используется инлайн-ассемблер, где значения переменных c1 и c2 загружаются в регистры al и bl, происходит умножение значений, и результат сохраняется в регистре ax, а затем возвращается в переменную @result.
  6. В основной части программы пользователь вводит значения для c1 и c2.
  7. Затем вызывается процедура umnzn с параметрами c1 и c2, возвращаемое значение выводится на экран.
  8. После этого программа ждет, пока пользователь нажмет клавишу, прежде чем завершить выполнение.

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


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

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

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