版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/m0_37564426/article/details/85563170
            </div><!--一个博主专栏付费入口--><!--一个博主专栏付费入口结束--><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-4a3473df85.css"><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-4a3473df85.css"><div class="htmledit_views" id="content_views"><p class="cye-lm-tag">两个相乘数,要么都是8位,要么都是16位。 &nbsp; 8位乘法,16位乘法。</p>

如果是8位,一个数字默认存放在al中,另外一个数字存放在其他8位寄存器中或者字节型内存单元中。

mul 8位寄存器               ;结果存放在ax中

mul byte ptr ds:[0]         ;结果存放在ax中

如果是16位,一个数字默认存放在ax中,另外一个数字存放在其他16位寄存器中或者字型内存单元中。

mul 16位寄存器             ;结果存放在dx, ax中

mul word ptr ds:[0]        ;结果存放在dx, ax中

结果:  8位乘法,得到一个16位数,  结果存放在ax中

16位乘法,得到一个32位数,  低16位存放在ax中,高16位存放在dx中

注意:有时候虽然是字的乘法,但是已经明确地知道乘积比较小,肯定不会大于2^16=65536,那么此时,虽然是字乘法,可能就用不到乘积的高16位(在dx中)了,而只是对乘积的低16位进行处理(在ax中)。

  1. assume cs:code, ds:data, ss:stack
  2. data segment
  3. dd 0
  4. data ends
  5. stack segment stack
  6. db 128 dup(0)
  7. stack ends
  8. code segment
  9. start: mov ax, stack
  10. mov ss, ax
  11. mov sp, 128
  12. mov di, 0
  13. call init_reg
  14. mov bx, 5 ; 参数
  15. call get_cube ; 对参数进行处理
  16. mov es:[di+0], ax ;call程序的返回值
  17. mov es:[di+2], dx
  18. mov ax, 4C00H
  19. int 21H
  20. ;================================ 切割逻辑
  21. get_cube: push bx
  22. mov ax, bx
  23. mul bx
  24. mul bx
  25. pop bx
  26. ret
  27. ;=================================
  28. init_reg: mov ax, data
  29. mov ds, ax
  30. mov es, ax
  31. ret
  32. code ends
  33. end start
  1. assume cs:code, ds:data, ss:stack
  2. data segment
  3. dw 11,22,33,44,55,66,77,88
  4. dd 0,0,0,0,0,0,0,0
  5. data ends
  6. stack segment stack
  7. db 128 dup(0)
  8. stack ends
  9. code segment
  10. start: mov ax, stack
  11. mov ss, ax
  12. mov sp, 128
  13. call init_reg
  14. call number_cube
  15. mov ax, 4C00H
  16. int 21H
  17. ;================================
  18. number_cube:
  19. mov cx, 8
  20. mov si, 0
  21. mov di, 16
  22. cube: mov bx, ds:[si]
  23. call get_cube
  24. mov es:[di], ax
  25. mov es:[di+2], dx
  26. add si, 2
  27. add di, 4
  28. loop cube
  29. ret
  30. ;================================ 切割逻辑
  31. get_cube: push bx
  32. mov ax, bx
  33. mul bx
  34. mul bx
  35. pop bx
  36. ret
  37. ;=================================
  38. init_reg: mov ax, data
  39. mov ds, ax
  40. mov es, ax
  41. ret
  42. code ends
  43. end start

汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)相关推荐

  1. 8086汇编寄存器及指令汇总

    1   寄存器的分类 通用寄存器: ax,bx,cx,dx,(ah,al,bh,bl,ch,cl,dh,dl): sp,bp,si,di 指令寄存器: ip 标志寄存器: FR 段寄存器: cs,ds ...

  2. 8086汇编之乘法指令MUL

    2023年4月22日,周六晚上. 今天写汇编作业的时候,碰到了MUL指令,于是把学习到的MUL指令知识记录下来,也可以通过写这篇博客彻底理清MUL指令. 当被乘数和乘数都是8位时: 怎么判断被乘数和乘 ...

  3. 汇编: mul乘法指令

    两个相乘数,要么都是8位,要么都是16位.   8位乘法,16位乘法. 如果是8位,一个数字默认存放在al中,另外一个数字存放在其他8位寄存器中或者字节型内存单元中. mul 8位寄存器       ...

  4. c语言中mul的用法,MUL指令(无符号数的乘法指令)

    1.MUL指令(无符号数的乘法指令) 指令格式: MUL OPS :OPS可以是reg和mem操作数. 被乘数先放在AX或AL.EAX中,再将乘数给OPS. 字节乘法: (AL)*(OPS8)→AX ...

  5. [计算机组成原理]2-8、定点数原码一位乘法

    前言 在学习定点数的原码一位乘法之前,我们要知道我们在学的是什么,定点数的原码乘法其实完全用十进制的乘法规则来计算,只需要将逢十进一改为逢二进一即可: 既然我们都知道定点数的原码乘法了,我们为什么还要 ...

  6. 2.2.2 .6定点数的乘法运算-1原码一位乘法

    XYXZNB哈哈哈哈(๑•̀ㅂ•́)و✧买!୧(﹒︠ᴗ﹒︡)୨ 加法移位运算如何实现,那这小节中我们要学习定点数的源码乘法如何实现,那由于今天窗外的雨下的很大,所以可能会有一些雨声的录入好的,那这个小 ...

  7. ARM(IMX6U)裸机汇编LED驱动实验——驱动编写、编译链接起始地址、烧写bin文件到SD卡中并运行

    参考:Linux之ARM(IMX6U)裸机汇编LED驱动实验–驱动编写 作者:一只青木呀 发布时间: 2020-08-07 09:13:48 网址:https://blog.csdn.net/weix ...

  8. 贺利坚老师汇编课程51笔记:MUL乘法指令

    指路老师的博客 MUL 寄存器 MUL 内存单元 8位乘法 16位乘法 被乘数(默认) AL AX 乘数 8位寄存器或内存字节单元 16位寄存器或内存字节单元 结果 AX DX(高位)AX(低位) M ...

  9. 汇编总结:无符号除法,有符号除法,取余,无符号乘法,有符号乘法指令

    2019独角兽企业重金招聘Python工程师标准>>> 本文分为3个模块. 示例---该指令的示例 解释---为指令不好理解的地方 练习---为了更熟悉该指令 1.1 有符号除法指令 ...

最新文章

  1. mysql 字段授权_mysql授权管理
  2. php javascript wav波形绘制,PHP分析.wav文件并绘制png格式的波形图
  3. oracle 12c安装psu,Oracle 12C数据库PSU补丁安装方式的变化---新增datapatch
  4. 工业交换机是什么?矿用交换机采用的是工业级交换机吗?
  5. python sort怎么用,Linux Sort命令详细用法(有实例)
  6. raml2html 安装,Raml实践
  7. 美团技术:交易平台建设实践(视频+胶片)
  8. Python+OpenCV:特征匹配(Feature Matching)
  9. 【钢铁缺陷检测算法】数据探索
  10. 上海市二级c语言软件环境,上海市2019年9月计算机二级考试复习教程:(C语言)上机考试新版题库+全真模拟试卷(2本装)...
  11. 【SQL注入-01】SQL语句基础及SQL注入漏洞原理及分类
  12. Neo4j Louvain算法
  13. 单片机c语言与汇编语言转换,浅谈单片机中C语言与汇编语言的转换
  14. Swift,任重而道远!
  15. 记《浪潮之巅》-第一版-6.IT业的罗马帝国--微软,Microsoft
  16. day51 列表、表格、form标签
  17. 为老婆准备的200000余条笑话,天天开心…
  18. 医疗行业容灾备份解决方案
  19. 联想小新 Pad Pro 12.6评测
  20. 调试多线程 查死锁的bug gcore命令 gdb对多线程的调试 gcore pstack 调试常用命令...

热门文章

  1. Linq 入门系列 [OfType,ToArray,ToList,ToDictionary]
  2. MySQl的库操作、表操作和数据操作
  3. hdu-1029 Ignatius and the Princess IV
  4. 利用iconv进行文件编码批量原地转换
  5. 关于Redis的数据迁移(三种方法)
  6. POJ3322滚箱子游戏(不错)
  7. 【Android WebSocket】Android 端 WebSocket 基本用法 ( 下载 Java-WebSocket源码 | 导入 Java-WebSocket-1.5.2 工程作为依赖 )
  8. 【数字信号处理】序列傅里叶变换 ( 序列傅里叶变换与反变换 | 序列绝对可和 与 存在傅里叶变换之间的关系 | 序列傅里叶变换性质 )
  9. 【Groovy】map 集合 ( map 集合操作符重载 | *. 展开操作符 | 代码示例 )
  10. 【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )