汇编程序代码,错误 C2443:操作数大小冲突
Assembler code, error C2443: operand size conflict
我正在尝试编写一些简单的asm代码,但出现此错误:错误 C2443:操作数大小冲突
我想将 2 个数字相乘,然后将结果移动到另一个变量......
我的老师写了这样一段代码:
int main()
{unsigned char x,y;
_asm{
mov ax,3
mov bx,5
mul bx
mov y,ax
}
cout<<y<<"n";
}
据我了解,ax 仅使用 16 位...但是无符号字符的大小是 8 位?如果我使用 ah 或 al(8 位(,它根本不会做 3*5,但我没有错误。我很困惑...如何使用 ax 和 bx 并将结果移动到 y 而不会出错?
你是对的。声明应为:
unsigned short x,y;
cout
会将unsigned short
转换为十进制数 (ASCII(,而unsigned char
将被解释为 ASCII 字符并且未转换(至少在我的系统上(。
您也可以在 8 位寄存器上 mul
mov al, '3'
sub al, '0'
mov bl, '5'
sub bl, '0'
mul bl
如果您低于"0"ASCII 代码,则您的寄存器中将有 3(与"5"相同(。否则,您可以使用short
变量。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 最小硬币更换问题(自上而下方法)
- Qt VTK交互风格的信号到小部件
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 使用递归的数组的最小值.这是怎么回事
- 写入位置0x0000000C时发生访问冲突
- 为什么在浮点中从大到小会引入更多的误差
- 找到两对数字,使它们的乘积的绝对差最小化
- 控制允许动态运行c++的并发操作数
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 删除/最小化GIT合并冲突
- 我的程序中有一个关于冲突的小错误
- 汇编程序代码,错误 C2443:操作数大小冲突
- 如何避免shift/reduce与多个操作数产生的冲突