delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/07/31/01:45:17

Xref: news2.mv.net comp.os.msdos.djgpp:6587
From: 004277a AT dragon DOT acadiau DOT ca (Hafiz Awang Pon)
Newsgroups: comp.os.msdos.djgpp
Subject: inline assmebly problem
Date: 31 Jul 1996 03:39:20 GMT
Organization: Your Organization
Lines: 36
Message-ID: <4tmkh8$2t3@News.Dal.Ca>
NNTP-Posting-Host: slip-34.acadiau.ca
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

I am attempting to write an assembly equivalent
of this c code

           tmaploop = x1;
           do {
              arrvstep[tmaploop] = vstep;
              vstep = vstep + vvar;
              tmaploop++;
              }while (tmaploop <= x2);

where vstep, vvar is long, arrvstep is an array of long
and tmaploop, x1 and x2 is int. 

here is the code below

           asm ("movw %0,%%cx":: "g" (x1):"%cx");
           asm ("movw %0,%%dx":: "g" (x2):"%dx");
           asm ("movl %0,%%esi":: "g" (&(arrvstep[x1])):"%esi");
           asm ("movl %0,%%eax":: "g" (vstep):"%eax");
           asm ("movl %0,%%ebx":: "g" (vvar):"%ebx");
           asm ("prc1: movl %eax, (%esi)");
           asm ("addl $0x4, %edi");
           asm ("addl %ebx, %eax");
           asm ("inc %cx");
           asm ("cmp %dx, %cx");
           asm ("jbe prc1");

the problem i'm encoutering is that the value inside the 
array is not what i expected. After putting some test
variables into the program, I suspect some values
in the registers has been altered not in the manner
dictated by my code above. can someone help?

004277a AT dragon DOT acadiau DOT ca


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019