程序集 8086:仅对 MOV 和 LEA 的 2 个寄存器求和

Assembly 8086: Summing 2 registers with MOV and LEA only

我的任务是将 AX 和 BX 求和为 AX,而不使用 "MOV" 或 "LEA" 操作数。 我有点卡在这里,你能帮帮我吗?

; AX need to be 15, using ONLY 'mov' and 'lea'. 
; Do NOT use arithmetic instrutions (add, inc, mul, etc.)

    mov     ax,10
    mov     bx,4

    lea cx,ax
    lea cx, [cx+bx]  

我做错了什么?抱歉我的错误,我是新手。

在今天的 16 位寻址模式中,关于 lea 的不那么明显的事情是没有任何寄存器可以用作 src 操作数。如果我没记错的话,您只能将基址指针 (bp) 或索引 (bx) 添加到源或目标索引 (sidi) 寄存器。 dest 操作数可以是任何通用寄存器。

允许以下内容:

lea ax, [si + bx]
lea ax, [di + bx]
lea ax, [si + bp]
lea ax, [di + bp]

至此我相信你已经掌握了如何完成任务:

mov si, ax        ; si = ax
lea ax, [si + bx] ; ax = ax + bx