汇编程序:32位无符号数乘法

简介: 【任务】用十六位乘法指令完成三十二位无符号数乘法(结果64位),数据用下面的内存单元提供:ddata segment x1 dw 5678H x2 dw 1234H...

【任务】用十六位乘法指令完成三十二位无符号数乘法(结果64位),数据用下面的内存单元提供:

ddata segment
      x1 dw 5678H
      x2 dw 1234H
      y1 dw 0DEF0H
      y2 dw 9ABCH
      xy dw 4 dup (?)
ddata ends

其中,被乘数x=((x2)*2^16)+(x1),即x2是高16位,x1是低16位;乘数y=((y2)*2^16)+(y1),即y2是高16位,y1是低16位。
【分析】
将把32位的被乘数的乘法分别分割成2个16位的数,分别对其进行16位的乘法,然后将得到的4个16位乘法的乘积,按照各自的位相加的最终乘积,如下图:
这里写图片描述
【参考解答】

assume cs:ccode, ds:ddata
ddata segment
      x1 dw 5678H
      x2 dw 1234H
      y1 dw 0DEF0H
      y2 dw 9ABCH
      xy dw 4 dup (?)
ddata ends
ccode segment
start:mov ax,ddata
      mov ds,ax

      mov ax,x1
      mov dx,y1
      mul dx
      mov [xy],ax
      mov [xy+2],dx     ;被乘数低位4字符x1和乘数低位4字符y1相乘结果低位存入xy,高位存入xy+2

      mov ax,x2
      mov dx,y1
      mul dx
      add [xy+2],ax
      adc [xy+4],dx      ; 被乘数高位4字符x2和乘数低位4字符y1相乘结果低位存入xy+2,高位存入xy+4

      mov ax,x1
      mov dx,y2
      mul dx
      add [xy+2],ax
      adc [xy+4],dx
      adc [xy+6],0       ; 被乘数低位4个字符x1和乘数高位4个字符y2相乘结果低位存入xy+2,高位存入xy+4

      mov ax,x2
      mov dx,y2
      mul dx
      add [xy+4],ax
      adc [xy+6],dx      ; 被乘数高位4个字符x2和乘数高位4个字符y2相乘结果低位存入xy+4,高位存入xy+6

      mov ah,4ch
      int 21h

ccode ends
end start
目录
相关文章
|
人工智能 自然语言处理 测试技术
嵌入式开发者的灵魂拷问:通义灵码2.0能否Hold住51单片机竞赛级开发?
通义灵码2.0嵌入式开发专项评测,基于蓝桥杯第十二届单片机赛题(NE555频率检测),验证多文件代码生成及单元测试智能体能力。评测结果显示,AI在基础场景中具备实用性,但存在硬件抽象层缺陷和图像识别局限。原始得分58.1/70,主要问题为LED状态异常。完整代码已开源。
705 13
|
NoSQL C++ 开发者
【C/C++ 调试 GDB指南 】GDB中的‘info’命令:一次全面的探索
【C/C++ 调试 GDB指南 】GDB中的‘info’命令:一次全面的探索
1028 0
|
NoSQL Linux C++
用gdb分析core文件及常见gdb命令操作示例
本文以一个实际的程序为例,介绍了用gdb分析core文件的方法和步骤,同时演示了常见gdb命令的操作方法。
4313 0
|
编解码 网络协议 API
CicadaPlayer实现多屏同步播放介绍
# 1. 多屏同步的使用场景 此功能来自于一个需求:在同一个屏幕上同步显示同一个内容的四个不同码率的画面,用来展示不同的分辨率和码率最终被播放出来的画质的差异。 抽象一下此需求的场景,其实就是要多个播放器之间进行同步的需求,这些播放器之间可以不一定是同一个app内,甚至可以是互联网上的任何两个播放器实例。 ## 使用场景一 一个App中多个播放器间同步,如同最原始的需求。 ## 使用场景
3531 0
|
Dragonfly 人工智能 安全
Dragonfly 发布 v2.1.0 版本!
Dragonfly 最新正式版本 v2.1.0 已经发布! 欢迎使用!
Dragonfly 发布 v2.1.0 版本!
【Multisim 14.0】信号发生器和示波器的使用---方波、三角波、正弦波
【Multisim 14.0】信号发生器和示波器的使用---方波、三角波、正弦波
5236 0
|
存储 人工智能 自然语言处理
LangChain RAG入门教程:构建基于私有文档的智能问答助手
本文介绍如何利用检索增强生成(RAG)技术与LangChain框架构建基于特定文档集合的AI问答系统。通过结合检索系统和生成机制,RAG能有效降低传统语言模型的知识局限与幻觉问题,提升回答准确性。文章详细展示了从环境配置、知识库构建到系统集成的全流程,并提供优化策略以改进检索与响应质量。此技术适用于专业领域信息检索与生成,为定制化AI应用奠定了基础。
4409 5
LangChain RAG入门教程:构建基于私有文档的智能问答助手
|
存储 编解码 弹性计算
阿里云4核8G云服务器CPU内存网络性能及价格表收费标准
阿里云4核8G云服务器CPU内存网络性能及价格表收费标准
1540 0
阿里云4核8G云服务器CPU内存网络性能及价格表收费标准
|
传感器 机器学习/深度学习 人工智能
基于可穿戴设备的跌倒检测
跌倒是老年人发生意外事故甚至死亡的重要危险因素。因此,对跌倒风险准确预估,及时有效地实现跌倒检测非常重要。随着物联网技术和人工智能的迅速发展,可穿戴设备在跌倒检测中的应用得到越来越广泛的关注。
1348 0

热门文章

最新文章