汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)
</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位。 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中)。
- assume cs:code, ds:data, ss:stack
- data segment
- dd 0
- data ends
- stack segment stack
- db 128 dup(0)
- stack ends
- code segment
- start: mov ax, stack
- mov ss, ax
- mov sp, 128
- mov di, 0
- call init_reg
- mov bx, 5 ; 参数
- call get_cube ; 对参数进行处理
- mov es:[di+0], ax ;call程序的返回值
- mov es:[di+2], dx
- mov ax, 4C00H
- int 21H
- ;================================ 切割逻辑
- get_cube: push bx
- mov ax, bx
- mul bx
- mul bx
- pop bx
- ret
- ;=================================
- init_reg: mov ax, data
- mov ds, ax
- mov es, ax
- ret
- code ends
- end start
- assume cs:code, ds:data, ss:stack
- data segment
- dw 11,22,33,44,55,66,77,88
- dd 0,0,0,0,0,0,0,0
- data ends
- stack segment stack
- db 128 dup(0)
- stack ends
- code segment
- start: mov ax, stack
- mov ss, ax
- mov sp, 128
- call init_reg
- call number_cube
- mov ax, 4C00H
- int 21H
- ;================================
- number_cube:
- mov cx, 8
- mov si, 0
- mov di, 16
- cube: mov bx, ds:[si]
- call get_cube
- mov es:[di], ax
- mov es:[di+2], dx
- add si, 2
- add di, 4
- loop cube
- ret
- ;================================ 切割逻辑
- get_cube: push bx
- mov ax, bx
- mul bx
- mul bx
- pop bx
- ret
- ;=================================
- init_reg: mov ax, data
- mov ds, ax
- mov es, ax
- ret
- code ends
- end start
汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)相关推荐
- 8086汇编寄存器及指令汇总
1 寄存器的分类 通用寄存器: ax,bx,cx,dx,(ah,al,bh,bl,ch,cl,dh,dl): sp,bp,si,di 指令寄存器: ip 标志寄存器: FR 段寄存器: cs,ds ...
- 8086汇编之乘法指令MUL
2023年4月22日,周六晚上. 今天写汇编作业的时候,碰到了MUL指令,于是把学习到的MUL指令知识记录下来,也可以通过写这篇博客彻底理清MUL指令. 当被乘数和乘数都是8位时: 怎么判断被乘数和乘 ...
- 汇编: mul乘法指令
两个相乘数,要么都是8位,要么都是16位. 8位乘法,16位乘法. 如果是8位,一个数字默认存放在al中,另外一个数字存放在其他8位寄存器中或者字节型内存单元中. mul 8位寄存器 ...
- c语言中mul的用法,MUL指令(无符号数的乘法指令)
1.MUL指令(无符号数的乘法指令) 指令格式: MUL OPS :OPS可以是reg和mem操作数. 被乘数先放在AX或AL.EAX中,再将乘数给OPS. 字节乘法: (AL)*(OPS8)→AX ...
- [计算机组成原理]2-8、定点数原码一位乘法
前言 在学习定点数的原码一位乘法之前,我们要知道我们在学的是什么,定点数的原码乘法其实完全用十进制的乘法规则来计算,只需要将逢十进一改为逢二进一即可: 既然我们都知道定点数的原码乘法了,我们为什么还要 ...
- 2.2.2 .6定点数的乘法运算-1原码一位乘法
XYXZNB哈哈哈哈(๑•̀ㅂ•́)و✧买!୧(﹒︠ᴗ﹒︡)୨ 加法移位运算如何实现,那这小节中我们要学习定点数的源码乘法如何实现,那由于今天窗外的雨下的很大,所以可能会有一些雨声的录入好的,那这个小 ...
- ARM(IMX6U)裸机汇编LED驱动实验——驱动编写、编译链接起始地址、烧写bin文件到SD卡中并运行
参考:Linux之ARM(IMX6U)裸机汇编LED驱动实验–驱动编写 作者:一只青木呀 发布时间: 2020-08-07 09:13:48 网址:https://blog.csdn.net/weix ...
- 贺利坚老师汇编课程51笔记:MUL乘法指令
指路老师的博客 MUL 寄存器 MUL 内存单元 8位乘法 16位乘法 被乘数(默认) AL AX 乘数 8位寄存器或内存字节单元 16位寄存器或内存字节单元 结果 AX DX(高位)AX(低位) M ...
- 汇编总结:无符号除法,有符号除法,取余,无符号乘法,有符号乘法指令
2019独角兽企业重金招聘Python工程师标准>>> 本文分为3个模块. 示例---该指令的示例 解释---为指令不好理解的地方 练习---为了更熟悉该指令 1.1 有符号除法指令 ...
最新文章
- mysql 字段授权_mysql授权管理
- php javascript wav波形绘制,PHP分析.wav文件并绘制png格式的波形图
- oracle 12c安装psu,Oracle 12C数据库PSU补丁安装方式的变化---新增datapatch
- 工业交换机是什么?矿用交换机采用的是工业级交换机吗?
- python sort怎么用,Linux Sort命令详细用法(有实例)
- raml2html 安装,Raml实践
- 美团技术:交易平台建设实践(视频+胶片)
- Python+OpenCV:特征匹配(Feature Matching)
- 【钢铁缺陷检测算法】数据探索
- 上海市二级c语言软件环境,上海市2019年9月计算机二级考试复习教程:(C语言)上机考试新版题库+全真模拟试卷(2本装)...
- 【SQL注入-01】SQL语句基础及SQL注入漏洞原理及分类
- Neo4j Louvain算法
- 单片机c语言与汇编语言转换,浅谈单片机中C语言与汇编语言的转换
- Swift,任重而道远!
- 记《浪潮之巅》-第一版-6.IT业的罗马帝国--微软,Microsoft
- day51 列表、表格、form标签
- 为老婆准备的200000余条笑话,天天开心…
- 医疗行业容灾备份解决方案
- 联想小新 Pad Pro 12.6评测
- 调试多线程 查死锁的bug gcore命令 gdb对多线程的调试 gcore pstack 调试常用命令...
热门文章
- Linq 入门系列 [OfType,ToArray,ToList,ToDictionary]
- MySQl的库操作、表操作和数据操作
- hdu-1029 Ignatius and the Princess IV
- 利用iconv进行文件编码批量原地转换
- 关于Redis的数据迁移(三种方法)
- POJ3322滚箱子游戏(不错)
- 【Android WebSocket】Android 端 WebSocket 基本用法 ( 下载 Java-WebSocket源码 | 导入 Java-WebSocket-1.5.2 工程作为依赖 )
- 【数字信号处理】序列傅里叶变换 ( 序列傅里叶变换与反变换 | 序列绝对可和 与 存在傅里叶变换之间的关系 | 序列傅里叶变换性质 )
- 【Groovy】map 集合 ( map 集合操作符重载 | *. 展开操作符 | 代码示例 )
- 【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )