Datenwechsel von Arraya nach Arrayb mit QBX und Turbo C/ASM funktioniert nicht.

OP #6224421
Lesenswert?

Hallo, guten Tag.

Ich möchte bitte 50 Daten umsetzen von Arraya nach Arrayb.
In ASM funktioniert es nicht.

QBX-Hauptprogramm:
1
DECLARE sub testadr CDECL (byval a%, byval b%,byval c%, byval d%)
2

3
rem $dynamic 
4
DIM Arraya%(2000)
5
DIM Arrayb%(2000)
6

7
FOR x% = 0 TO 50
8
  Arraya%(x%) = x%
9
NEXT
10

11
FOR x% = 0 TO 50
12
  Arrayb%(x%) = 0
13
NEXT
14
Arrayb%(51) = 777
15

16
segia%=varseg(arraya%(0))
17
ofsia%=varptr(arraya%(0))
18

19
segib%=varseg(arrayb%(0))
20
ofsib%=varptr(arrayb%(0))
21

22
call testadr(segia%,ofsia%,segib%,ofsib%)
23

24
for a%=0 to 51
25
  print arrayb%(a%)
26
next

Mit diesem Programm funktioniert es nicht, es werden nur "0" angezeigt. 
Wo liegt bitte der Fehler:
1
#include <dos.h>
2

3
void far testadr (int v_segment,int ofs,int v_segment1, int ofs1)
4
{
5
   int* losa;
6
   int* losb;
7
  
8
   losa=(int*)MK_FP( v_segment,ofs);
9
   losb=(int*)MK_FP( v_segment1,ofs1);
10
   
11
   asm Push DS;          
12
   asm Push SI; 
13
  
14
   asm lds sI,losa ; 
15
   asm les di,losb ;
16
   asm mov cx,50;  
17
 
18
   gehe:
19
   asm mov  Ax,[SI];
20
   asm mov  [di],ax;
21
   asm Add  SI,2; 
22
   asm Add  di,2; 
23
   asm loop gehe;
24
  
25
   asm Pop  SI;          
26
   asm Pop  DS;   
27
}
Danke.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren