Объедините несколько переменных в одну строку - PullRequest
2 голосов
/ 29 апреля 2019

У меня есть несколько переменных, которые хранят 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 

1 Ответ

2 голосов
/ 01 мая 2019
mov number_1, 30h
mov number_2,31h
mov number_3,32h

Чтобы присоединиться к ним, вам не нужно делать что-либо вообще , если вы последовательно определили все эти * number_ * переменные как переменные байтового размера.Их хранилище будет смежным, и, следовательно, обращение к 1-й переменной number_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

или

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
...