更多汇编语言乘法

时间:2011-10-11 06:41:25

标签: assembly hex multiplication

我对如何处理程序集乘法感到困惑。我正在研究如下所述的一些问题:

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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>