С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для newyork7776
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312

Как правильно вставить код Assembler в function?

10.04.2014, 00:21. Показов 2035. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как правельно вставить код Assembler в function
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
function qwe(a,b:Integer):integer;
begin
 asm
        xor bx,bx
        mov cx,5
    v1: mov al,a[bx]
        adc al,b[bx]
        mov result[bx],al
        inc bx
        loop v1
            adc result[bx],0
 end;
end;
begin
  Writeln(qwe(1,2));
  Readln;
end.
задание:+ двух 5-байтных чисел
Error
Delphi
1
2
3
4
5
6
[Warning] Project2.dpr(6): Unsafe code 'ASM'
[Error] Project2.dpr(9): Undeclared identifier: 'v1'
[Error] Project2.dpr(10): Operand size mismatch
[Error] Project2.dpr(11): Operand size mismatch
[Error] Project2.dpr(13): Invalid combination of opcode and operands
[Error] Project2.dpr(14): Operand size mismatch
Добавлено через 3 минуты
исправил 1 ошыбку
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
function qwe(a,b:Integer):integer;
label v1;
begin
 asm
        xor bx,bx
        mov cx,05
      v1:
        mov al,a[bx]
        adc al,b[bx]
        mov result[bx],al
        inc bx
        loop v1
            adc result[bx],0
 end;
end;
begin
  Writeln(qwe(1,2));
  Readln;
end.
Error
Delphi
1
2
3
4
5
[Warning] Project2.dpr(7): Unsafe code 'ASM'
[Error] Project2.dpr(11): Operand size mismatch
[Error] Project2.dpr(12): Operand size mismatch
[Error] Project2.dpr(13): Operand size mismatch
[Error] Project2.dpr(16): Operand size mismatch
Добавлено через 3 минуты
вот программа на асемб
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
; masm dos com #
.286
.model tiny
.code
org 100h
start:  mov cx,5
    xor bx,bx
@0: mov al,a[bx]
    adc al,b[bx]
    mov result[bx],al
    inc bx
    loop @0
        adc result[bx],0
exit:   ret     ; завершаем программу
a db 89h,76h,45h,23h,0A1h;a=A123457689
b db 0FEh,0DCh,0BAh,98h,75h;b=7598BADCFEh
result db 6 dup(0);A123457689+7598BADCFE=116BC005387h
end start
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2014, 00:21
Ответы с готовыми решениями:

Как правильно вставить jQuery код в код страницы сайта?
привет всем:) у меня возникла проблема, когда я свой jQuery код вставляю в код html главной страницы , у меня моя анимация оказывается в...

Как правильно вставить код на ассемблере?
Есть такой код: struct { unsigned long first_sect; unsigned nsect; void *buf; } cb; /** * getboot

Как правильно вставить код Google AdSense
Здравствуйте. Я вставил рекламный код гугла адсенсе вниз сайта , но его не видно на сайте???? Помогите правильно вставить код ...

8
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
10.04.2014, 00:36
Цитата Сообщение от newyork7776 Посмотреть сообщение
Как правельно вставить код Assembler в function
Сначала бы надо было установить Дельфи1 и в ней работать.
0
angstrom
10.04.2014, 00:37
Ну и где объявлен массив a, с которого так упорно идёт попытка чтения данных?
Assembler
1
a db 89h,76h,45h,23h,0A1h
 Аватар для newyork7776
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
10.04.2014, 00:48  [ТС]
angstrom, вот это я не могу и понять где нужно написать

Добавлено через 4 минуты
я нашел как записать на асемб но как запихнуть в делфи нет
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
10.04.2014, 00:56
Цитата Сообщение от newyork7776 Посмотреть сообщение
+ двух 5-байтных чисел
Допустим ты их сложишь.
А как в результат засунешь?
Интегер - 4 байта.
Да и в ф-цию ты Интегеры передаешь.
0
 Аватар для newyork7776
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
10.04.2014, 00:59  [ТС]
FIL, ну наверное не в integer а в int64(8 байт)
0
angstrom
10.04.2014, 00:59
Лучший ответ Сообщение было отмечено newyork7776 как решение

Решение

Вывода результата в ассемблерном коде не предусмотрено
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
program test1;
 
{$APPTYPE CONSOLE}
 
const
  a : array[0..4] of Byte = ($89, $76, $45, $23, $A1);  // a=A123457689
  b : array[0..4] of Byte = ($FE, $DC, $BA, $98, $75);  // b=7598BADCFEh
 
var
  res : array[0..5] of Byte;
 
procedure qwe;
begin
  asm
        push ebx
        xor  ebx, ebx
        mov  ecx, 5
@v1:
        mov  al, byte ptr a[ebx]
        adc  al, byte ptr b[ebx]
        mov  byte ptr res[ebx], al
        inc  ebx
        loop @v1
        adc  byte ptr res[bx], 0
        pop  ebx
        ret
  end;
end;
 
begin
  qwe;
  Readln;
end.
 Аватар для newyork7776
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
10.04.2014, 01:03  [ТС]
angstrom, я наверное нуб но зачем нам использовать стек?

Добавлено через 1 минуту
25 строка - удалить елмент стека
0
angstrom
10.04.2014, 01:07
А он не используется.

В 24 строке опечатка, нужно
Assembler
1
adc  byte ptr res[ebx], 0
Вывод результата
Delphi
1
2
3
4
5
6
begin
  qwe;
  for I := 0 to High(Res) do
    Write(Res[I]);
  Readln;
end.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.04.2014, 01:07
Помогаю со студенческими работами здесь

Как правильно вставить ассемблерный код в Делфи?
Как правило вставить ассемблер в делфи Примерно набросал А как правильно не знаю Условие задачи : найти минимальный и максимальный...

Как правильно вставить код (javascript) Google Analytics?
Я новичок в этой теме. Когда вставляю код Google Analytics (код взят без изменений со страницы Google Analytics) на страницу сайта...

Куда правильно вставить код для заднего фона в моём случае
Народ, у меня задача разместить картинку за этим салатовым квадратом: http://halvamaster.xhc.ru/#list1.html Есть код: <style>...

Реализовать функции strlen, strcmp, strcpy
здравствуйте помогите переделать код с С++ в Assembler здесь 4ри примеры кода которой надо переделать 1) int strlen(const char *str); ...

Как перевести код из Function () в Sub() ?
Как перевести код из Function () в Sub() ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru