1、须知:
大端模式(Big-endian)
高位字节排放在内存的低地址端,低位字节排放在内存的高地址端,即正序排列,高尾端;
小端模式(Little-endian)
低位字节排放在内存的低地址端,高位字节排放在内存的高地址端,即逆序排列,低尾端;
LSB
英文 least significant bit,中文义最低有效位。
MSB
Most Significant Bit的缩写,指最高有效位。
2、课本例题
1 、LSB存放的地址即最低有效字节地址,由于小端方案,最低有效字节存储在最小地址位置。
2 根据基址寻址,该地址为基址寄存器内容+形式地址。
基址寄存器内容:C000 0000H
内存:(我们先假设这个数据的LSB为00H)
低地址 | 00|数据低字节 ,
高地址 | XX| 数据低字节
LSB为00,这里形式地址FF00是负数,
补码操作如下:
C000 0000H+ FFFF FF00H=BFFF FF00H
换成原码操作,
C000 0000H - 0100H ( FF00的原码为 -0100H) = BFFF FF00H
3、类型题:
某计算机按字节编址,采用大端方式存储信息。其中,某指令的一个操作数的机器数为ABCD00FFH,该操作数采用基址寻址方式,指令中形式地址(用补码表示)为FF00H,当前基址寄存器的内容为C000 0000H,则该操作数的LSB(即机器数的最后的FFH–低位在内存的高地址端)存放的地址是()。
问题1选项
A.C000 FF00H
B.C000 FF03H
C.BFFF FF00H
D.BFFF FF03H
-D
同理:
基址寄存器内容:C000 0000H
内存:
低地址 | AB|数据高字节 ,
| CD|
| 00|
高地址 | FF| 数据低字节
LSB为FF,这里形式地址FF00是负数,
补码操纵如下:
C000 0000h+ FFFF FF00=BFFF FF00H
上一道题实际上求到的地址是我们这道题的ABH(MSB)存放位置,还要再移动3次字节的位置才到达LSB。
数据每次移动1个字节(相当于AB->CD),在内存中的地址是移动1,
所以需要移动3,也就是在上一题的基础上,再加上3
即是BFFF FF03H
这2道题刚好来分辨大小端存储信息的不同。