Ассемблер Как я могу получить доступ к элементам массива? - PullRequest
0 голосов
/ 23 ноября 2018

У меня проблема с ассемблером (16 бит). Когда я набираю 'abc', он также возвращает мне abc.Вопрос в том, как я могу получить доступ к «а» (первый элемент)?Могу ли я использовать стек (для символов)?

org 100h

Start:
mov ah,0ah
mov dx,input
int 21h

mov ah,9
mov dx,label
int 21h
mov ah,9
mov dx,input+2
int 21h

End:
mov ax,4c00h
int 21h

label db 10,13,"Your characters: $"
input db 6
db 0
times 8 db "$"

1 Ответ

0 голосов
/ 23 ноября 2018

Да, конечно.
Ваша строка - это просто последовательность байтов.

Более простой способ - фактически назвать всю часть структуры, используемую службой Int 21h/AH=0ah:

label db 10,13,"Your characters: $"

input    db 6
str_len  db 0
string:  times 8 db "$"

, тогда:

mov al, BYTE [str_len] можно использоватьдля загрузки длины строки в al (подойдет любой 8-битный регистр).
mov al, BYTE [string + X] загрузит символ (X + 1)th строки в al (для X, известного во время сборки - т.е.static).
mov bx, X + mov al, BYTE [string + bx] загрузит символ (X + 1)th строки в al (для X, известного во время выполнения - то есть динамического).

...