机器码的小端方式
2025-01-04 11:23:54
# 汇编
今天在看8086汇编时弹出了一个疑问:在以小端方式存储的cpu上,一条指令(操作码和地址码)的机器码也是直接以小端方式存放的吗?例如如下汇编代码:
1 | assume cs:code |
编译后的机器码如下:
对于mov cx,0008
,对应的机器码为B90800,可以发现0800为mov指令中的立即数,并且是以小端方式存储的,而前面的B9应该是操作码对应的机器码,如果指令也是小端方式存储的,那么指令格式应该是0800B9,但这与实际的机器码不一样。
再在内存中查看该指令的机器码:
发现B9是存储在低地址中的。通过查看其它指令也是如此。
所以可知8086 指令存储规则:
- 指令的操作码部分存储在低地址。
- 操作数的字节按照小端方式存储。
大端、小端方式是针对数据部分的,具体指数据的高位字节和低位字节在内存中的排列方式,不针对操作码。
参考: