【问题标题】:More Assembly Language Multiplication更多汇编语言乘法
【发布时间】:2011-10-11 06:41:25
【问题描述】:

我对如何处理汇编乘法感到困惑。我正在解决一些这样描述的问题:

Given these hex values for the 8086 registers
AX = E204    BX = 30C2    CX = 5C08    DX = 38F1
What are the hex values in DX and AX after executing this instruction:
mul  cl

对于 mul 运算,我们是否只使用 al 和乘数进行相乘?例如,这个乘法是否只是 4 * 8 = 32(十进制),结果存储在 ax 中?

当使用 imul 时,我们会将 ax 中的整个值与乘数相乘,然后将结果存储在 dx:ax 中,对吗?

对于这个问题,如果我确实以正确的方式接近它,al * cl = 4 * 8 = 32。那么:

al = 20

我是保持 ah 相同 (E2) 还是将其归零以获得答案?

【问题讨论】:

  • 看起来像家庭作业。为什么不仔细阅读英特尔指令参考?

标签: assembly hex multiplication


【解决方案1】:

请从here 下载完整的 Intel x86 CPU 文档。

有关这一条指令的详细信息,您可以阅读here

【讨论】:

    【解决方案2】:

    你为什么不试试?没关系,我为你做了:

    Microsoft Windows XP [Versione 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
    
    C:\Documents and Settings\db>debug
    -a
    15AB:0100 mov ax, e204
    15AB:0103 mov bx, 30c2
    15AB:0106 mov cx, 5c08
    15AB:0109 mov dx, 38f1
    15AB:010C mul cl
    15AB:010E
    -g=0100,010e
    
    AX=0020  BX=30C2  CX=5C08  DX=38F1  SP=FFEE  BP=0000  SI=0000  DI=0000
    DS=15AB  ES=15AB  SS=15AB  CS=15AB  IP=010E   NV UP EI PL NZ NA PO NC
    15AB:010E 0000          ADD     [BX+SI],AL                         DS:30C2=00
    -q
    
    C:\DOCUME~1\db>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 2015-05-04
      • 2013-01-22
      • 2016-02-29
      • 1970-01-01
      • 2015-07-05
      相关资源
      最近更新 更多