Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2010, 18:29   #1
Федор777
 
Регистрация: 15.04.2010
Сообщений: 4
Плохо перенос сегмента кода за сегмент данных

Здравствуйте, подскажите пожалуйста, как мне перенести сегмент кода за сегмент данных , пишу в Turbo C, так же есть некоторые функции написанные на Assembler.


extern void OutString(int *b);
extern void DSP_Reg_MAC(int *a);

asm db 0eah
asm dw m1,0000h
asm db 0ffh

int a[3*6] = {-1,-2,0,0,0,0,-3,7,0,0,0,0};
int i,j,k,z,jj,M;
char temp,temp1;

char str[6];
int lp=0;


void itoa(int number)
{
if(number)
{
itoa(number/10);
str[lp]=(number%10+'0');
lp++;
}
}

void main()
{
asm m1 label word
asm push 0000
asm pop ds


for(j=0;j<=2;j++)

{
DSP_Reg_MAC(&a[j*6]);
}


for(j=0;j<=1;j++)
{

k=0x0A;
OutString(&k);
k=0x0D;
OutString(&k);
for(i=0;i<=2;i++)

{

if(a[6*j+i]<0)
{
k=0x2D;
OutString(&k);
k= - a [ 6*j+i ];
}
else
{
k=' ';
OutString(k);
k= a [ 6*j+i ];
}
lp=0;
itoa ( k ) ;
for(z=0;z<=4;z++)
{
k = (int)str[ z ];
OutString(&k);
}
k=0x20;
OutString(&k);
for(M=1;M<=5-lp;M++)
k=' ';
{
OutString(&k);
}

}


};

asm db 0eah
asm dw 0x00000,0x0ffff

}
некоторый код на Assembler, который используеться в данной программе:
.186
assume cs:CSEG,ds:CSEG,es:CSEG,ss:CSEG
;================================== =================================== =========
CSEG segment use16 para public 'Code'
locals
include PCB.asz
;------------------------------------------------------------------------------
Test_CA:
;------------------------------------------------------------------------------

; ЏҐаҐ¤*вм бЁ¬ў®«
; ===============
public _OutSym
_OutSym:
push ax
push dx
push bp
mov bp,sp
mov ax,[bp+8]

mov ah,al
mov dx,0FF66h

@@1: in al,dx
test al,20h
jz @@1

mov al,ah
mov dx,0FF6Ah
out dx,al

pop bp
pop dx
pop ax

ret
;------------------------------------------------------------------------------

; ЏҐаҐ¤*вм бва®Єг
; ===============
public _OutString
_OutString:
push ax
push si
push bp
mov bp,sp
mov si,[bp+8]

@@1: lods byte ptr[si]
cmp al,0
je @@0
call OutSym
jmp @@1

@@0: pop bp
pop si
pop ax
ret

; ЏҐаҐ¤*вм бЁ¬ў®« ў UART0
; -----------------------
; ‚室: al - бЁ¬ў®« ¤«п ЇҐаҐ¤*зЁ
OutSym: push ax
push dx
mov ah,al
mov dx,S0STS
@@1: in al,dx
test al,20h
; test al,08h
jz @@1
mov al,ah
mov dx,S0TBUF
out dx,al
pop dx
pop ax
ret

;------------------------------------------------------------------------------

; DSP_Reg_MAC
; ===========
public _DSP_Reg_MAC
_DSP_Reg_MAC:
;--------------------------------
push ax
push bx
push dx
push bp

mov bp,sp
mov bx,[bp+10]

mov dx,DSP_DCMD
mov ax,3
out dx,ax
mov dx,DSP_DCNT
mov ax,1
out dx,ax

mov dx,DSP_DA
mov ax,[bx+0]
out dx,ax
mov dx,DSP_DB
mov ax,[bx+2]
out dx,ax

mov dx,DSP_DRZ1
in ax,dx
mov [bx+4],ax
in ax,dx
mov [bx+6],ax
in ax,dx
mov [bx+8],ax
in ax,dx
mov [bx+10],ax

pop bp
pop dx
pop bx
pop ax
;--------------------------------
ret
;--------------------------------

;------------------------------------------------------------------------------
CSEG ends
;================================== =================================== =========
end Test_CA
Федор777 вне форума Ответить с цитированием
Старый 16.04.2010, 16:59   #2
Федор777
 
Регистрация: 15.04.2010
Сообщений: 4
По умолчанию

P.S. Программа проверяет работоспособность DSP модуля(цифровой сигнальный процессор(16-ти разрядный)) Перенос сегмента данных за сегмент кода необходим для того,чтобы программа начинала свою работу с 0-го адреса.Буду очень признателен за любой совет.
Федор777 вне форума Ответить с цитированием
Старый 20.04.2010, 18:43   #3
Федор777
 
Регистрация: 15.04.2010
Сообщений: 4
По умолчанию

Прошу прощения, Сегмент данных нужно расположит после сегмента кода
Федор777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос кода Builder 6 -->M.V.S. 6.0 bondik C++ Builder 2 29.11.2010 15:49
Перенос кода в памяти Canyon Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 28.02.2010 20:24
Как вынести объявление переменных в отдельный сегмент кода boris-blade Microsoft Office Word 1 16.01.2010 19:31
сортировка данных (пересчет возможных вариантов комбинаций, перенос данных в таблицу) Vitalik85 Microsoft Office Excel 4 12.08.2009 00:30
Сегмент стека Santilos Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 24.12.2008 18:47