Assembly 将多个变量连接到一个字符串中
我有几个变量,这些变量存储计时器中一个数字的ASCII码,我需要将所有变量合并成一个字符串,以便在宏上打印它们 范例Assembly 将多个变量连接到一个字符串中,assembly,emu8086,Assembly,Emu8086,我有几个变量,这些变量存储计时器中一个数字的ASCII码,我需要将所有变量合并成一个字符串,以便在宏上打印它们 范例 mov number_1, 30h mov number_2,31h mov number_3,32h 加入他们 mov time, number_1 mov time, number_2 mov time, number_3 为了加入它们,如果您将所有这些*number_u*变量连续定义为字节大小的变量,则根本不必执行任何操作。它们的存储将是相邻的,因此引用第一个数字_1
mov number_1, 30h
mov number_2,31h
mov number_3,32h
加入他们
mov time, number_1
mov time, number_2
mov time, number_3
为了加入它们,如果您将所有这些*number_u*变量连续定义为字节大小的变量,则根本不必执行任何操作。它们的存储将是相邻的,因此引用第一个数字_1变量等同于引用字符串。如有必要,可以附加字符串终止符
number_1 db ?
number_2 db ?
number_3 db ?
db 0
如果坚持要复制到单独的字符串,则可以这样做:
number_1 db ?
number_2 db ?
number_3 db ?
...
time db 3 dup (?), '$' ; With $-terminator this time, you choose
...
cld ; You need this only once (most of the time)
lea si, number_1 ; Source
lea di, time ; Destination
movsw ; number_1 and number_2 together
movsb ; number_3
或
1) 你不能像那样移动记忆。您需要使用寄存器作为中间层。2) 将所有字符存储在同一地址(时间
)将毫无意义。您想使用时间
,时间+1
等。
number_1 db ?
number_2 db ?
number_3 db ?
...
time db 3 dup (?), '$' ; With $-terminator this time, you choose
...
cld ; You need this only once (most of the time)
lea si, number_1 ; Source
lea di, time ; Destination
movsw ; number_1 and number_2 together
movsb ; number_3
mov ax, number_1 ; number_1 and number_2 together
mov time, ax ; number_1 and number_2 together
mov al, number_3 ; number_3
mov time+2, al ; number_3