zoukankan      html  css  js  c++  java
  • 汇编 运算介绍

    算术运算符

    加法:

    Add ax, bx     ;bx+ax => ax   加法运算

    带进位加法指令 adc 32位加法

    Mov  ax , 0fffh 假设第一个数低位

    Mov  dx, 0 假设第一个数高位 0ffffh

    Mov bx, 1 假设第二个数低位

    Mov cx, 0 假设第二个数高位    00001h

    Add ax, bx 先低位相加得到      0000h

    Adc dx, cx 高位相加 在加进位   0001h

    输出需要将axdx拼接起来输出

    自增加法  3个指令周期

    INC  ax       Inc  byte ptr [bx]

    减法

    带进位减法 sbb 32位减法

    Sub  ax, bx 低位相减

    Sbb  dx, bx 高位借位

    自减

    Dec ax

    补码  neg   0 - n 可以得到补码(不是取反加一)  3个指令周期

    Mov ax-1

    Neg ax

    比较指令 cmp

    只比较,不改变操作数    cmp axbx

    乘法指令 170个指令周期

    分有无符号

    无符号  mul      有符号  imul

    8位 相乘     ah <- al  ah <- al 高位放ah mul  alal

    16位相乘     dx <- ax  dx <- ax 高位放dx imul ax ax

    除法指令 184个指令周期

    也是分有无符号

    无符号  div      有符号  idiv

    8位 相除     al <- ax  al <- ax ax相除结果放在al div axbl

    16位相除     ax <- dx ax <- dx dxax相除结果放在axidiv ax bx

    8位相除  ah放余数  al放除数

    16位相除  dx放余数 ax放除数

    符号扩展  2个指令周期

    Cbwal的符号扩展到ah   al  ffh    cbw后  ax ffffh

    Cwdax的符号扩展到dx ax ffffh   cwb后  dx ffffh

    十进制调整指令

    八进制 155+166 =343     看做十进制计算为 321    前面进位后面加差值2

    进制调整指令就是计算方式用十进制计算方式转为八进制

    Bcd码  4位表示十进制 0001  0000   表示十进制的10

    Daa  :  bcd

    Mov al19h

    Add al1 al  ==  1ah

    Daa al == 20h

      

    Aaa :非bcd

    Mov ax0109h

    Add ax1 ; ax  ==  010fh

    Aaa ax ==  020h

    Daa  :  bcd

    Mov al19h

    Add al1 al  ==  1fh

    Daa   al  ==  19h

      

    Aas :非bcd

    Mov ax0200h

    Add ax1 ; ax  ==  01ffh

    Aas ax  ==  0109h

    乘法 aam   触发 aad

    位操作指令

    And     &取位  置零

    Mov al ,1111 1111 B b表示2进制

    And al, 1000 0000 B al == 1000 0000b   80h

    Mov al ,1111 1111 B

    And al, 0111 1111 B al ==0111 1111b  7fh

    Or  al 1 ;置1

    Not  al ;取反

    Xor al 0fh ;异或  安位取反  或者清零 al   ==  00h

    Xor  alal

    位移需要8个指令周期  

    Mov al ffh 1111 1111h

    Shl al 1  ;逻辑左移《 feh  1111 1110 b 相当于乘法

    Shr al 1  ;逻辑右移》 7fh  0111 1111 b

    Sal  al 1 ;算术左移《 feh 1111 1110 b     和逻辑左移没有区别 完全等价

    Sal  al 1  ;算术右移》  ffh 1111 1111 b 相当于除法

    学如逆水行舟,不进则退。 博客园技术交流群 群 号:1073255314 (本群没人,刚刚建立 -_-!!! )
  • 相关阅读:
    Python3安装和虚拟环境配置
    CentOS中nginx安装部署
    CRM项目的整理---第一篇
    软件代码的发布
    ansible的roles使用
    ansible中的playbook脚本的介绍与使用
    ansible模块的介绍与使用
    Ansible的参数介绍
    ansible的介绍与安装
    linux网络配置,查看IP地址
  • 原文地址:https://www.cnblogs.com/Mj-NaijAm/p/13618673.html
Copyright © 2011-2022 走看看