if i need in assembler to use bigger varibles than the maximum i know

I KNOW THAT THE BIG REGISTER/VARIBLE THAT I CAN USE IN MY ASSEMBLER PROGRAMS IS 0FFFFH BUT IF I WNAT TO USE A BIGGER
REGISTER/VARIBLE IN ASSEMBLER WHAT I NEED??
 AND HOW CAN I PRINT ON THE SCREEN THE NUMBERS THAT IN THE REGISTERS??
SEND ME AN EXAMPLE!!
noamAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

OdieCommented:
For bigger registers variables you can
1 * Upgrade to 32-bit
2 * Split 2 16-bit vars up

like

mov ax, word ptr [xxxx]  // addr of first 32-bit var
mov bx, word ptr [xxxx + 2]
add ax, word ptr [yyyy] // addr of second 32-bit var
adc bx, word ptr [yyyy + 2]
mov word ptr [zzzz], ax // addr of third 32 -bit var
mov word ptr [zzzz + 2], bx

adds var at xxxx to yyyy and writes the result to zzzz
you can have similar code for substracting, xoring, ...

0
FuzzyLogicCommented:
Odie is right.
However, it is possible to write 32bit code under TP by using inline assembler.
If you want to make some calculation over big numbers, you can also use the FPU even if the numbers are integer.
0
OdieCommented:
That's true and multiplying on a Pentium in Floating Point can be faster.

If you want I can give you instructions on that too.
0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

fozyCommented:
For Printing  the content from a registry try assigning to a variable the content of the register
xc:=dx
and dx is declared as byte
ten print the variable.
If not convinced try to dl a program called XRAY who makes a tracing off line the program possible.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
OdieCommented:
If you want to use the Floating Point Unit:

It has 8 registers which are "stacked" - that means you can't access whatever register you like, but only the topmost.

Ex.: Add 64-bit int A at address xxxx to 64-bit int B at address yyyy
     and write it to 64-bit int C at address zzzz

fild QWord Ptr [xxxx] // Float Integer LoaD: A loaded to Register 0
                      // Reg0: A, Reg1: Empty, Reg2: Empty, ...
fild QWord Ptr [yyyy] // Float Integer LoaD: B loaded to Register 0
                      // A moved to register 1 (stack)
                      // Reg0: B, Reg1: A, Reg2: Empty, Reg3: Empty, ...    
faddp ST(1), ST // Add Reg1 (= ST(1)) (B) to Reg0 (= ST(0) or ST) (A)
                // Reg0: A + B, Reg1: Empty, Reg2: Empty, ...
                // the p means the source reg is emptied
fistp QWord Ptr [zzzz] // the contents of the topmost register (ST) or written to zzzz
    // Float Integere STore
    // Reg0: Empty, Reg1: Empty, Reg2: Empty, ...
    // if the p is left out Reg0 (ST) would still be A + B

Some other usefull instructions:
fmul(p) // Multiplying
fsub(p) // Substraction
fdiv(p) // Division
fld1 // Load a 1
fxch // exchanges the contents of two registers

You can of course also work with real floating point values (doubles, long doubles, ...) or 32-bit integers

For a complete reference search Intel's Literature Centre.
0
TheflyCommented:
You can use my routine to write the content of a 32 bit variable, put the desired value in mem (mov eax,1234h    mov mem,eax    call affiche), the affisub sub routine is not included but is easy to make using Bios or Direct memory write.
affiche:
      pusha
      mov flag,0
      mov cx,10
      reset:
      mov bx,cx
      dec bx
      mov number+bx,0
      loop reset
      mov eax,0
      mov ebx,0
      mov ecx,0
      mov edx,0
      mov eax,mem
      cmp mem,0
      je zero
      mov tempo,1000000000
      mov cx,10
      calculus:
      mov bx,cx
      neg bx
      add bx,10
      push bx
      push cx
      mov edx,tempo
      jump:
      cmp eax,edx
      jb finished
      mov flag,edx
      add edx,tempo
      inc number+bx
      jmp jump
      finished:
      sub eax,flag
      mov flag,0
      finit
      fild tempo
      fild cons
      fdiv
      fist tempo
      pop cx
      pop bx
      loop calculus
      mov flag,0
      mov cx,10
      display:
      mov bx,cx
      neg bx
      add bx,10
      mov dl,number+bx
      mov dh,0
      mov eax,flag
      cmp eax,1
      je noend
      cmp dx,0
      je dispend
      noend:
      call affisub
      mov flag,1
      dispend:
      loop display
      jmp nozero
      zero:
      mov dl,"0"
      call affi1
      nozero:
        mov flag,0
      popa
      ret


0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Pascal

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.