Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 459
от 29.05.2006, 03:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 336, Экспертов: 22
В номере:Вопросов: 2, Ответов: 2


Вопрос № 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

GDT segment use16
empty dq 0
_code descriptor <0,0,0,0,0,0>
_temp descriptor <0,0,0,0,0,0>
GDT ends

ну и т.д. Ну builder на все это и ругается. как правильно делать вставку с такими дескрипторами.
Простые куски, типа

mov eax, [a]
mov ebx,
add eax, ebx
mov [c], eax

нормально отрабатывают (a, b, c переменные builder).

Извините за глупость и повторяемость вопроса и заранее спасибо!
Отправлен: 23.05.2006, 13:57
Вопрос задала: Кирьянова Екатерина (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Mihasic
Здравствуйте, Кирьянова Екатерина!

Судя по коду, то эта программа для работы в защищенном режиме, в который обычно переходят из реального (чистый ДОС с отключенными драйверами памяти вроде 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.33 от 25.05.2006
Яндекс Rambler's Top100

В избранное