美文网首页
初学汇编

初学汇编

作者: 木子李_af14 | 来源:发表于2017-07-22 23:59 被阅读13次

今天第一次接触汇编,从进制转换开始复习。
其实这些东西在大学的时候就应该打好基础。

常见的进制

  • 二进制,由0、1组成,逢二进一
  • 八进制,由0-7八个数字组成,逢八进一
  • 十进制,由0-9十个数字组成,逢十进一
  • 十六进制,由0-9,A-F十六个字符组成逢十六进一

只要理解每个进制的进一规则,那运算起来就了如指掌。
以八进制举例:
逢八进一,当数字大于等于8时,进一位,如果10进制的逢十进一。
以下均为八进制数:
4 + 6 = 12
6 + 6 = 14
277 + 333 = 632

位、字节、原码、反码、补码:

计算机最小运算单位是bit,位。
byte表示一个字节,1byte = 8bit
Java中是以补码来表示二进制
Java中声明一个byte类型的变量,其大小范围是-128 ~ 127

byte b = 127;   // ok
byte c = 128;   // error

原因是byte类变量只有一个字节,即上面声明的b变量,只在内存中占用8位,并且最高位是符号位。即:

//最高位符号位: 0表示整数,1表示负数
//最大正数
byte max = 127;  //内存:0111 1111(补码)

//最小负数
byte min = -128; //内存:1000 0000(补码)

//有一点需要注意的是,该二进制表示的是补码
//介绍一下原码、反码、补码
//原码:二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小
//反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外
//补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1,另外计算一个数的补码,可取其绝对值的原码,每一位取反并加1。

通用寄存机

编译器在运行过程中,生成的变量会存在三个地方:CPU(寄存器位于其中),内存,硬盘

32位CPU中(05年以后的电脑,大多都64位的)有3种寄存器:

  • 8位
  • 16位
  • 32位(包含8种通用寄存器,EIP不是通用寄存器
    1. EAX
    2. ECX
    3. EDX
    4. EBX
    5. ESP
    6. EBP
    7. ESI
    8. EDI

指令学习

MOV EAX,1 //将立即数(1)存到指定的寄存器(EAX)

相关文章

网友评论

      本文标题:初学汇编

      本文链接:https://www.haomeiwen.com/subject/dxpukxtx.html