I'm trying to analyze a MS-DOS COM file that I wrote a few years ago with IDA Free 5.0, I've since renamed the segment to code_and_data
and named constants and set data types correctly. However, when looking at the disassembly, I get db
pseudo-instructions in the listing, like this:
code_and_data:0106 replacement_irq_handler: ; DATA XREF: start+81o code_and_data:0106 cli code_and_data:0107 push bx code_and_data:0108 db 3Eh code_and_data:0108 cmp byte ptr ds:3BEh, 'C' code_and_data:010E jnz short call_original_dos_interrupt_handler code_and_data:0110 db 3Eh code_and_data:0110 cmp byte ptr ds:3C0h, 'A' code_and_data:0116 jnz short call_original_dos_interrupt_handler code_and_data:0118 db 3Eh code_and_data:0118 cmp byte ptr ds:3C2h, 'K' code_and_data:011E jnz short call_original_dos_interrupt_handler code_and_data:0120 db 3Eh code_and_data:0120 cmp byte ptr ds:3C4h, 'O' code_and_data:0126 jnz short call_original_dos_interrupt_handler code_and_data:0128 db 3Eh code_and_data:0128 cmp byte ptr ds:3C6h, 'N' code_and_data:012E jnz short call_original_dos_interrupt_handler code_and_data:0130 push StartOfIndexTable code_and_data:0133 pop bx
I understand that there are no additional bytes there, since the db
and the cmp
instruction after it start at the same address (see left column). Why does IDA show/add those db
pseudo-instructions?
Is there any way to tell it to not show those, or is there a reason why it might be useful (I could only guess that since the same segment is both used for code and data, it tries to be "helpful" and show the code as data as well)?
But if so, why does it only show the first byte of the instruction (if you look at the addresses on the left again, these instructions are longer than 1 byte).