码迷,mamicode.com
首页 > 其他好文 > 详细

计算机字节的大小端判断

时间:2016-04-18 20:48:51      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

最近在学习微机接口技术和网络编程基础,在这两门学科里都提到计算机字节的大小端判断问题

什么是大小端呢?

如果在连续的两个地址空a,a+1面存入一个占用这两个空间的整数。以十六位数为例 0x0102   如果a里面是01 则说明是大端存储  如果a里面是02则说明是小端存储

c语言代码:

#include <stdio.h>
union {
  short num;
  char num1[sizeof(short)];
} un;

int main(int argc,char **argv)

{
  un.num = 0x0102;
  if (sizeof(short)==2)
  {
    if(un.num1[0] == 1 && un.num1[1] == 2)
      printf("big-endian");
    else if(un.num1[0] == 2 && un.num1[1] == 1)
        printf("little-andian");
      else
        printf("erro!");
  }
  else
    printf("erro!");

return 0;

}

汇编代码实现:

include io32.inc
.data
  msg1 byte ‘big-endian‘,13,10,0
  msg2 byte ‘little-endian‘,13,10,0

  num word 1234h
.code
start:
  xor ebx,ebx
  mov bl,byte ptr num
              ;mov eax,ebx
              ;call dispuid
  cmp bl,12h
  je loop1
  mov eax,offset msg2

  jmp loop2

  loop1:
  mov eax,offset msg1
  loop2:
  call dispmsg

  exit 0
end start

计算机字节的大小端判断

标签:

原文地址:http://www.cnblogs.com/oreu/p/5405711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!