0

Hello everyone.
I'm trying to do this in nasm under linux :

cmp eax,ebx
jng .loop

and also

test eax,ebx
jng .loop

and yet also

%if eax < ebx
jmp .loop
%endif

I want to loop while eax is lesser than ebx and non of the 3 methods work!
First 2 execute once and then hit for the exit code
the last one gives error:
error: `<': operands differ by a non-scalar

Can someone help me? I've been banging my head against the wall for some hours now!

2
Contributors
2
Replies
3
Views
8 Years
Discussion Span
Last Post by Alex_
0

Sorry for the late response been really busy lately.
From the code you've posted I don't really see a problem.

Here's the best and most useful time to open up gdb.
And I'll attempt to explain an easy way to do so!

so in my linux asm code I usually have a main label. So I would do this.

gdb myprog
gdb> break main
breakpoint set
gdb> display /x $eax
gdb> display /x $ebx
gdb> display /x $eflags
gdb> run
breakpoint reached

Now here gdb is hanging out at the main label in myprog which happens for me to be the begging of my code!
So I do 'stepi' while watching my registers until I get to the instruction that I want to watch then I'll usually do a 'info all-reg'

If you're going to programming in assembly you're going to NEED to become familiar with a debugger. What do other languages do for you? By writing in assembly you're saying "I'm smart enough that I can get down into the hardware and interact with it directly". There's no type safety or any standard or a compiler to tell you that what you're doing is unsafe. Actually the only thing keeping your program in check from obliterating the machine is the O/S (assuming you're in a protected mode O/S such as linux).

0

Sorry i don't understand how to get it work... :(
I try running: gdb lab4a
it gives : (no debugging symbols found)
Then i try: - files lab4a
But it says:
exec No process In: Line: ?? PC: 0x0
Invalid window specified.
The window name specified must be valid and visible.

What am i doing wrong? Please bare with me. )

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.