![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 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 |
![]() |
![]() |
![]() |
#2 |
Регистрация: 15.04.2010
Сообщений: 4
|
![]()
P.S. Программа проверяет работоспособность DSP модуля(цифровой сигнальный процессор(16-ти разрядный)) Перенос сегмента данных за сегмент кода необходим для того,чтобы программа начинала свою работу с 0-го адреса.Буду очень признателен за любой совет.
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 15.04.2010
Сообщений: 4
|
![]()
Прошу прощения, Сегмент данных нужно расположит после сегмента кода
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перенос кода 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 |