Size suffix and destination or source size do not match - Assembler
Формулировка задачи:
Добрый день, возникла проблема. Говорю сразу в ассемблере ничего не понимаю, в гугле нашел только одну ссылку на свою проблему. Код пишу в Free Pascal через asm. Вот код ассемблера:
Ругается на строчку mov al,zn1; и mov ah,zn2;. В них я добавляю данные типа integer. Ошибка:size suffix and destination or source size do not match. Мне кажется понимаю, в чем проблема, но из-за недостатка знаний в ассемблере не могу ее решить. Прошу помощи.
asm mov al,zn1; mov ah,zn2; mul ax; mov @result,ax;
Решение задачи: «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.
Объяснение кода листинга программы
- Создание двух переменных для хранения чисел:
c1
иc2
. - Определение функции
add
с двумя параметрамиc1
иc2
, возвращающей целое число. - Внутри функции
add
происходит использование инлайн-ассемблера, где значения переменныхc1
иc2
загружаются в регистры, затем они складываются, и результат сохраняется в регистрax
, а затем возвращается в переменную @result. - Определение процедуры
umnzn
с двумя параметрамиc1
иc2
, ничего не возвращающей. - Внутри процедуры
umnzn
также используется инлайн-ассемблер, где значения переменныхc1
иc2
загружаются в регистрыal
иbl
, происходит умножение значений, и результат сохраняется в регистреax
, а затем возвращается в переменную @result. - В основной части программы пользователь вводит значения для
c1
иc2
. - Затем вызывается процедура
umnzn
с параметрамиc1
иc2
, возвращаемое значение выводится на экран. - После этого программа ждет, пока пользователь нажмет клавишу, прежде чем завершить выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д