Вопрос № 43978: Добрый день.
У меня имеется готовая программа на асме, ее нужно полностью использовать в Builder C++. Я поняла что нужно использовать функцию asm{}. Вот только компилятор все равно ругается. На асме программа так начинается:
.586P...Вопрос № 44034: Здраствуйте Уважаемые эксперты!
Помогите пожалусто!
Не знаю как реализовать код для решения Разности элементов матрицы размера N*1
Зарание благодарю всех кто ответит на мое сообщение. С увожением Виталик....
Вопрос № 43.978
Добрый день.
У меня имеется готовая программа на асме, ее нужно полностью использовать в Builder C++. Я поняла что нужно использовать функцию asm{}. Вот только компилятор все равно ругается. На асме программа так начинается:
.586P
DESCRIPTOR STRUC
limit dw 0
base_1 dw 0
base_2 db 0
attr db 0
lim_atr db 0
base_3 db 0
ENDS
Судя по коду, то эта программа для работы в защищенном режиме, в который обычно переходят из реального (чистый ДОС с отключенными драйверами памяти вроде himem.sys). А Builder как я знаю работает под Windows, что делает невозможным такого вида программирование.
Возможно, имелось ввиду: использовать функциональность программы, не привязанную к защ. реж.? Тогда это другой вопрос...
Кстати, по-поводу ключевого слова asm: "позволяет вставлять куски кода в программу", подробнее в описании компилятора, но как я знаю, обычно нет возможности объявлять сегменты... Вообще чтобы встроить полную программу существуют такие темы как "Связь с языками высокого уровня", для чего, обычно, объектный файл (полученный tasm32 в данном случае) линкуют с остальной частью программы.
Ответ отправил: Mihasic (статус: 1-ый класс)
Ответ отправлен: 24.05.2006, 00:38
Вопрос № 44.034
Здраствуйте Уважаемые эксперты!
Помогите пожалусто!
Не знаю как реализовать код для решения Разности элементов матрицы размера N*1
Зарание благодарю всех кто ответит на мое сообщение. С увожением Виталик.
Отправлен: 23.05.2006, 22:34
Вопрос задал: Malsh (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Пан Павел Константинович
Здравствуйте, Malsh!
Информацию которую вы дали не достаточно, но если это ориганал задачи то вот решение.
1. Допустим у нас матрица из четырёх элементов.
2. Каждый элемент размером в байт.
3. Элемент матрицы может содержать значение от -128 до 127 ("знаковый байт")
4. Результат должен вместиться в регистор.
Так как задача, ИМХО является Лабораторной работой, комментарии к командам и основные принцепы я не буду излогать так же, код не является лучшим решением ИМХО.
Ниже идёт код:
CSEG segment
assume cs:CSEG,ds:CSEG,ss:CSEG,es:CSEG
org 100h
Begin:
;N = 4 elements
;size Matrix = N * 1 = 4 byte
;=============================
xor ax,ax
mov bx,ax
;=============================
mov cx,03h
lea si,Matrix
lodsb
cbw
xchg bx,ax
;=============================
@1:
lodsb
cbw
sub bx,ax
loop @@1
;=============================
ret ;exit
;=============================
Matrix db -128,127
db 127,127
;=============================
CSEG ends
end Begin
С, Уважением MnEm0n!C.
--------- Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 9-ый класс)
Ответ отправлен: 24.05.2006, 12:09