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
- 32位二进制数与16位二进制数相乘,在屏幕上输出结果
- 32位二进制数转BCD码
- 给出一个16位的二进制数
- 二进制数、位和字节
- 二进制数、位和字节
- 穷举n位二进制数
- 穷举n位二进制数
- 穷举n位二进制数
- 穷举n位二进制数
- 穷举n位二进制数
- 一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- C/C++ 位操作实例:输出一个数的二进制
- 倒序输出一个无符号二进制数的所有位
- 位操作输出二进制数1的个数
- 把一个十进制转化为二进制数并且把二进制数的奇数位偶数位分别输出
- 汇编实现16位有符号二进制数排序并输出
- 从键盘输入不多于四位的16进制数,以十六位二进制数形式输出
- 汇编求补8位二进制数
- 单片机32串流水灯程序
- 51单片机对两位 BCD拨盘 的读出程序
- 单片机外部RAM的数据传送
- 流水灯与闪烁同时实现
- 51单片机驱动喇叭
- 32位二进制数与16位二进制数相乘,在屏幕上输出结果
- 求1到100的累加和,51单片机,keil软件
- 常用delphi funtion
- 怎么实现iMindMap中演示视图的导出
- OC浮点数是否需要加上f后缀
- 片外RAM数据排序
- block的循环引用
- 按键控制计数,用两个数码管显示0到99。十位数为0的时候,显示为空白
- CentOS6.5网络配置出错:Device not managed by NetworkManager or unavailable