程序集 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
) 添加到源或目标索引 (si
或 di
) 寄存器。 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
我的任务是将 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
) 添加到源或目标索引 (si
或 di
) 寄存器。 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