Forum: PC-Programmierung Datenwechsel von Arraya nach Arrayb mit QBX und Turbo C/ASM funktioniert nicht.


von Peter B. (funkheld)


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.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.