[Day 2] Get to Know Assembly
I was curious to know the relationship between Assembly (by NASM) and the generated binary.
Findings are summarized as follows, note: guidelines only, it seems not correct for one parameter takes 2 bytes at least.
- ORG generates no binary code. Actually like labels, it is only considered at compile time.
- One label in the operand takes 2 bytes.
- JMP takes 1 byte, 0xeb
- BD, DW, DD takes no bytes, but they generate space for holding 1, 2 and 4 bytes respectively
- MOV takes no bytes, but registers AX, pointers SP etc takes 1 byte each
- MOV AX,0; where parameter 0 take 2 bytes
- One register (e.g AX) can hold 32 bit (for 32-bit CPU) = 4 bytes. There are 8 registers (AX, BX, CX, DX, BP, SP, SI, DI), 4 bytes x 8 = 32 bytes in total, too little storage
- [SI] from memory takes 1 byte