32位二进制数与16位二进制数相乘,在屏幕上输出结果

来源:互联网 发布:JAVA http 多附件报文 编辑:程序博客网 时间:2024/06/17 00:58

用乘法指令实现32位二进制数与16位二进制数相乘,最后在屏幕上输出结果。

悬赏分:50 - 解决时间:2009-12-14 09:23

最佳答案:

;--------------------

完整的程序如下。

DATA SEGMENT

;A中第一个字存高16位被乘数,第二个字存低16位被乘数

;B中存16位乘数

;CDE存结果,C存32位到47位,D存16位到31位,E存0位到15位

    A DW 1111H, 2222H

    B DW 3333H

    C DW ?

    D DW ?

    E DW ?

    F DB 0, 0, 0, 0, 0, 0, 0, 0    ;存放BCD码

DATA ENDS

;--------------------

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START:

      MOV AX, DATA

       MOV DS, AX

       MOV AX, [A+2]

       MOV BX, [B]

       MUL BX

       MOV [D], DX

       MOV [E], AX

       MOV AX, [A]

       MUL BX

       MOV [C], DX

       ADD [D], AX

       ADC [C], 0

;---------------以上是“一般般拉风”编写的乘法部分------------

;---------------------------以下是做而论道编写的输出部分-----

       MOV CX, 48              ; 48位数变换成BCD码

_L1_:

       XOR AX, AX

       MOV AX, [E]

       ADD AX, AX

       MOV [E], AX

       MOV AX, [D]

       ADC AX, AX

       MOV [D], AX

       MOV AX, [C]

       ADC AX, AX

       MOV [C], AX

       LEA SI, F+7

       PUSH CX

       MOV CX, 8

_L2_:

       MOV AL, [SI]

       ADC AL, AL

       DAA

       MOV [SI], AL

       DEC SI

       LOOP _L2_

       POP CX

       LOOP _L1_

;---------------------------以下是显示BCD码------------

       LEA SI, F

       MOV CX, 8

_L3_:

       MOV AL, [SI]

       MOV AH, 0

       MOV DL, 16

       DIV DL

       MOV DL, AL

       AND DL, 0FH

       ADD DL, 30H

       MOV AH, 02H

       INT 21H

       MOV DL, [SI]

       AND DL, 0FH

       ADD DL, 30H

       MOV AH, 02H

       INT 21H

       INC SI

       LOOP _L3_

       MOV AH, 4CH

       INT 21H

CODE ENDS

END START

;------------------------------------------------

;本程序进行了如下乘法:

;11112222H × 3333H = 0369 D036 92C6H

;应该显示如下结果:

;00 03 75 29 99 68 68 54

;------------------------------------------------

参考资料:一般般拉风 的回答。

回答者:    做而论道 - 十一级   2009-12-14 01:38

;------------------------------------------------

提问者对于答案的评价:相当感谢

;------------------------------------------------

其他回答    共 2 条

程序(略)

回答者: 一般般拉风 - 三级   2009-12-13 13:33

此题难点,恰在输出结果。

回答者: -------- 十四级 2009-12-13 17:45

;------------------------------------------------

原文网址:http://zhidao.baidu.com/question/129169219.html

0 0
原创粉丝点击