Assembly language pseudo-op conversion: interpret “.BYTE h#F8” and give the resulting machine byte in hexadecimal.
-
A0111EF
-
B03 16
-
CF8
-
D42 65 61 72
-
EF8 16
Answer
Correct Answer: F8
Explanation
Introduction / Context:Assemblers support pseudo-operations (pseudo-ops) that direct data placement without generating CPU opcodes. The “.BYTE” directive reserves one byte and initializes it with a specified value. Understanding numeric bases in assembler syntax is crucial for correct binary images.
Given Data / Assumptions:
- “.BYTE” places a single 8-bit value into the object.
- “h#F8” denotes a hexadecimal constant F8.
- No endianness issue arises for a single byte.
Concept / Approach:Translate the constant exactly as written. Hexadecimal F8 corresponds to decimal 248 and binary 11111000. The assembler emits this one byte into the output at the current location counter.
Step-by-Step Solution:1) Recognize directive: “.BYTE” → allocate 1 byte.2) Read constant: “h#F8” → hexadecimal F8.3) Emit value: the generated machine data is 0xF8.4) Present in hex form as required: “F8”.
Verification / Alternative check:Convert F8 hex to decimal: 15*16 + 8 = 248. In binary: 11111000 (8 bits), matching a single byte size.
Why Other Options Are Wrong:“0111EF” and “F8 16” are malformed or multi-byte sequences. “03 16” represents two bytes. “42 65 61 72” are ASCII for “Bear,” unrelated to the directive.
Common Pitfalls:Confusing directives that emit multiple bytes (e.g., .WORD) with .BYTE, or misreading the base prefix leading to an incorrect numeric value.
Final Answer:F8