Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

How access 286 extended registers via Turbo Pascal 6.5 Inlines?

Posted on 2000-03-26
11
Medium Priority
?
375 Views
Last Modified: 2008-03-10
Anyone left who still uses the Turbo Pascal 6.5 compiler? I need some inline code to move the 286+ extended Registers into some kind of variable ...

Anyone who can help?

Armin.Linder@Adlon.de
0
Comment
Question by:arminl
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
11 Comments
 
LVL 12

Expert Comment

by:Hypo
ID: 2658750
Hello,
I'm not familiar with the Turbo Pascal 6.5 compiler, though I'm very used to assembler programming in BP 7.

I'm not sure if it is the EAX,EBX,ECX,EDX etc. registers you are speaking of... though if you are, I'm sure I can help you!

regards Hypo.
0
 
LVL 49

Expert Comment

by:dbrunton
ID: 2660169
Surely you mean the 386 chip?
0
 
LVL 1

Expert Comment

by:nrico
ID: 2660247
You can't just use the register name EAX under the inline assembler. Instead, I believe you do to move 0 into EAX:

  DB $60; MOV AX,0

but I could be wrong.

And yep, those registers, and FS and GS are 386+.
0
On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

 
LVL 5

Expert Comment

by:scrapdog
ID: 2661852
EAX,EBX,ECX,EDX are not available in the 286...but I think that the 286 had some extra registers for protected mode...
0
 
LVL 12

Expert Comment

by:Hypo
ID: 2661915
True, EAX,EBX,ECX,EDX... which is the 32bit versions of AX,BX,CX,DX... was first introduced with the 80386CPU.

Also "DB $60; MOV AX,0" will most probably crash your computer or generate an illegal oppcode exception.

The correct oppcode should be (in this case) "DB $66; MOV AX,0; DW 0"

The preceeding byte you should put infront of _MOST_ 16bit register instructions to make them 32bit reg. instructions are 66h.

Here's an old question about 32bit instructions in pascal:
   http://www.experts-exchange.com/jsp/qShow.jsp?ta=pascal&qid=10168326


Yet, I still don't know if these are the extended registers you want to use... Could you please reply?
0
 
LVL 4

Author Comment

by:arminl
ID: 2669188
Hello Turbo veterans,

it's good news that there are still some left out there ...

I mean the extended registers of the 386+, of course.

What I need to do is move the contents of EAX into a variable.

Armin.Linder@Adlon.de
0
 
LVL 12

Accepted Solution

by:
Hypo earned 600 total points
ID: 2670246
Hi, I'm not sure if this works with Turbo Pascal 6.5 (since I have 7.0)
But try my example.

What you need to do is put DB $66; infront of the instruction "MOV AnyVar,AX"
If "AnyVar" is of type longint, you have to make the compiler beleive that it is a 16bit variable, that's done by putting, "word ptr" infront of the variable name (see example).

The example simulates a "MOV AnyVar,AX" and then converts it to "MOV AnyVar,EAX" by putting "db $66" as a prefix to the instruction.

Program RegIntoVar;
uses crt;

var A,B : longint;

begin
 A := 123456789;
 B := 0;
 asm
  DB $66; MOV AX,word ptr A { Move A into EAX }
  DB $66; MOV word ptr B,AX { Move EAX into B }
 end;
 Writeln(B);
end.

Is it clear?
0
 
LVL 12

Expert Comment

by:Hypo
ID: 2683838
yo! did it work?
0
 
LVL 12

Expert Comment

by:Hypo
ID: 2697609
Always the same thing...
0
 
LVL 4

Author Comment

by:arminl
ID: 2699424
Hi Hypo,

thanks for your response. unfortunately I am busy with another project right now and won't be able to check that out for the next 2 weeks.

I do, however, assume that this is exactly what I was looking for, and that it will work like intended.

Thanks for your help, and beg your pardon for beeing silent so long (have no regular access to my e-mails right now as well).

....Armin
0
 
LVL 12

Expert Comment

by:Hypo
ID: 2700155
oh... tha's ok,
I thought you'd just left it to autograde... (tha's happend me before)
0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

We live in a world of interfaces like the one in the title picture. VBA also allows to use interfaces which offers a lot of possibilities. This article describes how to use interfaces in VBA and how to work around their bugs.
In this article, I’ll show how research, determination, and use of modern technology helped me solve a DNA mystery.
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question