The MASM Forum Archive 2004 to 2012

General Forums => The Campus => Topic started by: taco.de.tripa on January 16, 2008, 11:59:06 PM

Title: opcode or Address? How to know it
Post by: taco.de.tripa on January 16, 2008, 11:59:06 PM
Hi folks,
this a N00B question, how I can be able to distinguish between an opcode and an address, for example, imagine that I find out the following hex numbers in an EEPROM Map: F4 34 08 35 0B.

The book writer saids it means: Copy the byte on the address $3408 to the address $350B.  But the question is how I know that F4 means a opcode and not an address?

I hope I have explained this clearly.  :red

Thanks in advance,
taco.de.trip
Title: Re: opcode or Address? How to know it
Post by: raymond on January 17, 2008, 01:37:42 AM
QuoteBut the question is how I know that F4 means a opcode and not an address?

In simple words, you CAN'T just by looking at that byte. At least not until you have disassembled all the code prior to that and studied those prior instructions to make sure that none of that prior "code" was junk which could have "overflowed" into that specific coded instruction. Only then would you be sure that the F4 (or any other byte) is an actual microop having a specific meaning.

You don't have to do that disassembling manually. Use a debugger or other disassemblers to prepare that listing.

Raymond
Title: Re: opcode or Address? How to know it
Post by: MichaelW on January 17, 2008, 05:00:51 AM
For the x86, F4h is the opcode for HLT, which takes no operands and has nothing to do with moving bytes. I think BIOS code is one of the few places where you are likely to encounter HLT, and even there I think most instances of F4h will probably be an address or binary data.