【发布时间】:2020-04-18 01:39:31
【问题描述】:
我有一个关于将一字节数组求和到 ax 的问题,这是我的代码:
IDEAL
MODEL small
STACK 100h
DATASEG
; --------------------------
arr db 6 dup (200)
; --------------------------
CODESEG
start:
mov ax, @data
mov ds, ax
; --------------------------
xor ax, ax
add ax, [arr]
add ax, [arr + 1]
add ax, [arr + 2]
add ax, [arr + 3]
add ax, [arr + 4]
add ax, [arr + 5]
; --------------------------
exit:
mov ax, 4c00h
int 21h
END start
汇编器返回“操作数类型不匹配” 我是组装新手,我该如何克服呢? 谢谢
【问题讨论】:
-
MASM 将您从自己手中拯救出来:您编写了一个带有 16 位内存源操作数的加法,该操作数将 2 个数组元素作为一个 16 位整数。做一个零扩展加载(如
movzx cx, [arr])并将其添加到AX。 -
当我执行 movzx 时,它显示“当前选定处理器的非法指令”(我在 8086 上工作)
标签: arrays assembly x86 cpu-registers tasm