Omega. 发表于 2022-5-29 06:17:07

汇编指令入门求助

mov 0020:,ds:

这条指令合法吗?

竹逸 发表于 2022-5-29 08:51:04

段地址不是说不能用立即数赋值的么,你这里用立即数当段地址,相当于 段寄存器=立即数 这种赋值操作是不合法的

jackz007 发表于 2022-5-29 09:12:26

本帖最后由 jackz007 于 2022-5-29 09:16 编辑

      汇编指令不允许两个操作数同时是内存地址。再者,段地址必须使用 cs、ds、es、ss 段寄存器来进行表达,不允许使用立即数。你可以先为 es 寄存器赋值 20h,然后,用 es 替换段前缀 20。

Omega. 发表于 2022-5-29 13:40:56

竹逸 发表于 2022-5-29 08:51
段地址不是说不能用立即数赋值的么,你这里用立即数当段地址,相当于 段寄存器=立即数 这种赋值操作是不合 ...

懂了谢谢!

Omega. 发表于 2022-5-29 13:41:28

jackz007 发表于 2022-5-29 09:12
汇编指令不允许两个操作数同时是内存地址。再者,段地址必须使用 cs、ds、es、ss 段寄存器来进行表 ...

感谢!

Omega. 发表于 2022-5-29 13:44:58

jackz007 发表于 2022-5-29 09:12
汇编指令不允许两个操作数同时是内存地址。再者,段地址必须使用 cs、ds、es、ss 段寄存器来进行表 ...

另外对于这条指令来说,用es换段前缀后,因为两个操作数仍是内存地址,所以还是不合法的吧?

jackz007 发表于 2022-5-29 14:32:56

Omega. 发表于 2022-5-29 13:44
另外对于这条指令来说,用es换段前缀后,因为两个操作数仍是内存地址,所以还是不合法的吧?

      当然,你可以借用一个通用寄存器中转一下。

Omega. 发表于 2022-5-29 17:42:00

jackz007 发表于 2022-5-29 14:32
当然,你可以借用一个通用寄存器中转一下。
ok
页: [1]
查看完整版本: 汇编指令入门求助