8086汇编:MOV部分字符串变为变量

use*_*388 1 x86 assembly addressing mov

假设我有一串ascii字符,例如"652 + 346*779 =",我想将一些字符从这个变量移到另一个变量......

缓冲区是字符串(在本例中为"652 + 346*779 =")lengthofnum是有问题的数字的长度(在这种情况下,346的长度为3)A_ascii是我正在尝试传输字符串的变量" 346" .

我有一个根本不起作用的循环,我无法弄清楚我应该使用什么寻址模式.emu8086讨厌到目前为止我尝试过的所有内容,并且使用MOV指令给出了关于语法的错误

mov cx,lengthofnum
dumploop1:
    mov bx, offset buffer
    ;dump the number from buffer into A_ascii
    mov A_ascii[cx],[bx]+cx
loop dumploop1:
Run Code Online (Sandbox Code Playgroud)

我收到以下错误代码:

(672) wrong parameters: MOV  A_ascii[cx],[bx]+cx

(672) probably it's an undefined var: A_ascii[cx] 
Run Code Online (Sandbox Code Playgroud)

Jer*_*fin 6

与(显然)流行的看法相反,您可以在x86上执行直接mem-> mem移动,而无需(明确地)移动到寄存器或从寄存器移动.由于您已经拥有CX的长度,因此您已经开始朝着正确的方向前进:

mov si, offset A_ascii
mov di, offset B_ascii
rep movsb    ; automatically uses length from CX
Run Code Online (Sandbox Code Playgroud)