MOV [BX][SI],2 指令是否合法

将作业题询问了一下new bing,做个记录方便查阅

MOV [BX][SI],2这个指令合法吗?

指令MOV [BX][SI],2是不合法的,因为目的操作数的长度未指定

你说的目的操作数的长度未指定什么意思?

目的操作数的长度指的是目的操作数所占用的字节数。在x86汇编语言中,操作数可以是字节(8位)或字(16位)。在指令中,如果目的操作数是内存地址,那么必须明确指定其长度。例如,MOV BYTE PTR [BX][SI], 2 或 MOV WORD PTR [BX][SI], 2。这样,处理器才能知道应该将多少个字节的数据写入内存。

这里的[BX][SI]是什么意思?

[BX][SI]是一种基址变址寻址方式。它表示的是一个内存地址,该地址由BXSI寄存器的值相加得到。例如,如果BX的值为0x1000,而SI的值为0x200,则[BX][SI]表示内存地址0x1200

那[BX][SI]是一个字节类型的存储单元吧?为什么2不会默认为字节存储进去,而要MOV BYTE PTR [BX][SI], 2 或 MOV WORD PTR [BX][SI], 2

[BX][SI]表示的内存地址可以指向一个字节或一个字,具体取决于指令中指定的操作数长度。在x86汇编语言中,立即数2可以表示为一个字节或一个字,具体取决于指令中指定的操作数长度。因此,必须使用BYTE PTRWORD PTR来明确指定操作数的长度。例如,如果您想将立即数2作为一个字节存储到内存地址[BX][SI]处,则应使用指令MOV BYTE PTR [BX][SI], 2。如果您想将立即数2作为一个字存储到内存地址[BX][SI]处,则应使用指令MOV WORD PTR [BX][SI], 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值