zoukankan      html  css  js  c++  java
  • 80X86汇编 mul 乘法指令

    使用 mul 做乘法的时候, 注意以下两点:

    • 两个相乘的数: 两个相乘的数, 要么都是 8 位, 要么都是 16 位. 如果是 8 位, 一个默认放在 AL 中, 另一个放在 8 位 reg 或内存字节单元中; 如果是 16 位, 一个默认再 AX 中, 另一个放在 16 位 reg 或内存子单元中.
    • 结果: 如果是 8 位乘法, 结果默认放在 AX 中; 如果是 16 位乘法, 结果高位默认在 DX 中存放, 低位在 AX 中存放.

    格式如下:

    mul reg
    mul 内存单元
    

    内存单元可以用不同的寻址方式给出, 比如:

    mul byte ptr ds:[0]
    

    含义: (ax) = (al) * ((ds) * 16 + 0);

    mul word ptr [bx+si+8]
    

    含义: (ax) = (ax) * ((ds) * 16 + (bx) + (si) + 8) 的结果的低 16 位.
    (dx) = (ax) * ((ds) * 16 + (bx) + (si) + 8) 的结果的高 16 位.

    例:

    (1) 计算 100 * 10.

    100 和 10 小于 255, 可以做 8 位乘法, 程序如下.

    mov al,100
    mov bl,10
    mul bl
    

    结果: (ax) = 1000(03E8H)

    (2) 计算 100 * 10000

    100 小于 255, 可 10000 大于 255, 所以必须做 16 位乘法, 程序如下.

    mov ax,100
    mov bx,10000
    mul bx
    

    结果: (ax) = 4240H, (dx) = 000FH    (F4240H = 1000000)

    参考: 节选自王爽汇编语言

  • 相关阅读:
    ZZ 一些有意思的算法代码
    ff 怎样让新打开的标签就放在当前页面的右边
    111
    Windows平台下GO语言编译器(GOwindows)
    My Bookmarks
    使用googleperftools的tcmalloc
    memcached安装及测试
    erlang 入门(1)
    MS UI Automation
    twisted: echo server
  • 原文地址:https://www.cnblogs.com/fanlumaster/p/13971974.html
Copyright © 2011-2022 走看看