assembly - 我可以在汇编语言中使用注册变量作为被乘数吗?
问题描述
我想在我的程序中使用一个变量作为被乘数,下面是其中一个变量,我不确定它是否声明正确
chickenPrice db 19
这是为了声明鸡肉的价格是 19 美元。另外,我了解到AX:DX
它是 16 位寄存器
我想将用户输入作为乘数,但我不确定mul ax, chickenPrice
这样做是否正确。
我想知道有没有办法以 3 位数字显示答案?我为此有多个变量,变量相乘的总和可能需要我以 3 位数字显示。
解决方案
chickenPrice db 19
chickenPrice的声明很好。
然而,对于上述声明,mul ax, chickenPrice
由于几个原因,使用是错误的。
该mul
指令只需要 1 个操作数。该指令暗示使用累加器AX
(或AL
)。我们不需要明确提及。
而且我们必须知道该mul
指令可以在 2 种不同的大小上运行。要么将字节 inAL
与任何字节大小的操作数相乘,要么将字 inAX
与任何字大小的操作数相乘。选择是你的,但由于你定义了chickenPrice一个字节,字节大小的乘法将是正确的。
mov al, ... <-- Here the number gotten from user input
mul chickenPrice
两个数字的乘积现在在AX
寄存器中
使用 DOS 显示数字详细说明了如何显示多位数字。在答案的方法 2段落中查找代码片段。
推荐阅读
- javascript - 为什么“脚本”中的代码在 html 中不起作用?
- google-chrome - 在 ubuntu 上以隐身模式以编程方式启用扩展
- r - 是否有用于重命名列变量的 R 函数?
- jquery - jQuery 可拖动全屏图像
- javascript - 让 CSS loader 输出 ES 模块?
- c# - Parallel.ForEach:当记录数变高时保存集合的最佳方法是什么?
- oracle11g - 需要使用数据库名称为动态的数据库链接从表中获取数据
- ios - 停止将空白应用上传到商店,将完整应用上传到 testflight?
- javascript - 在 python 和电子应用程序之间进行通信
- node.js - 用于 Lambda NodeJS 10.x 的正确 CircleCI 图像是什么?