zoukankan      html  css  js  c++  java
  • 汇编语言个人笔记

    汇编程序员就是通过汇编指令来修改寄存器中的内容,来控制CPU

    CS:IP    和指令有关

    DS:[0]    和数据有关

    SS:IP    临时性数据

    地址总线:

    一个CPU有N根地址线,这样的CPU最多可以寻找2的N次方个内存单元

    一个内存单元的大小是一字节       (内存中最小单元——字节)      1个字节=2个16进制  (00)

    20根总线   220=1024(KB)x1024  =1(MB)  

    32根总线   4GB

    数据总线:

    1根数据总线可传送1个二进制数据

    8根数据总线可传送1个字节   16根数据总线可传送1个字

    进制缩写:

    • B,Binary(二进制);
    • O,Octal(八进制);
    • D,Decimal(十进制);
    • H,Hex(十六进制);

    16进制与2进制:       (4个二进制表示1个16进制)

    1111 (B) =   F (H)     24 = 16         8个2进制可以表示1个字节或字母    16个2进制可表示1个字或2个字母。  (4个二进制表示半个字母)

    16进制00可表示一个字节     16进制0000可表示一个字    

    8bit(位)=1Byte(字节)
    1024Byte(字节)=1KB

    转移指令的原理:

    CPU在执行jmp指令的时候并不需要转移目的地址

    对IP的修改是根据转移目的地址和转移起始地址之间的位移来进行的。(机器码中包含目的地址的位移距离)

    CPU中存放段地址信息的寄存器: ds es ss cs

    CPU中存放偏移地址信息的寄存器: bp ip sp id si bx

    ;ds    数据从哪里来      ds:[si]

    ;es    数据放到哪里去  es:[di]

    栈:  临时性保存数据

    栈都是我们自己安排的    注意栈越界

    and和or命令:

    and   0   有0就变为0      转化为大写:and al,11011111B

    or   1   有1就变为1      转化为小写:or al,00100000B

    div指令:

    除数8位(小于255) AH余数  AL商

    除数16位       DX余数       AX商

    标志寄存器:

    OF <---Overflow--> OV(1) ; NV(0)  1为溢出  0为不溢出
    DF <--Direction-> DN(1) ; UP(0)  1——si,di递减  0——si,di递增
    IF <-----> EI(1) ; DI(0)
    SF <--Sign-> NG(1) ; PL(0)  1为负    0为非负
    ZF <--Zero---> ZR(1) ; NZ(0)  1为结果为0  0为结果不为0
    AF <-----> AC(1) ; NA(0)
    PF <-Parity-> PE(1) ; PO(0)  1为结果为奇数  0为结果为偶数
    CF <--Carry---> CY(1) ; NC(0)  1进位  0不进位

  • 相关阅读:
    nodejs事件和事件循环详解
    keycloak集群化的思考
    Python解释器和IPython
    IndexedDB详解
    在onelogin中使用OpenId Connect Implicit Flow
    在onelogin中使用OpenId Connect Authentication Flow
    SAML和OAuth2这两种SSO协议的区别
    wildfly 21的配置文件和资源管理
    【老孟Flutter】2021 年 Flutter 官方路线图
    【老孟Flutter】为什么 build 方法放在 State 中而不是在 StatefulWidget 中
  • 原文地址:https://www.cnblogs.com/zhang1422749310/p/10975863.html
Copyright © 2011-2022 走看看