Строка при посимвольном заполнении получается "перевернутой" - Assembler
Формулировка задачи:
не могу разобраться с адресацией. нужно сделать, чтобы в пустую строку можно было ввести 8 символов, причем заполнение строки должно происходить посимвольно. однако у меня запись символов в строку происходит в обратном порядке, т.е. если произвести ввод 11100011, то в строка будет иметь следующий вид: 11000111. что нужно исправить?
num1 db " ", 13, 10 mov cx, 08h r1: mov ah, 08h int 21h mov bx, cx sub bx, 1 mov byte ptr[num1+bx], al loop r1
Решение задачи: «Строка при посимвольном заполнении получается "перевернутой"»
textual
Листинг программы
num1 db " ", 13, 10 mov cx, 08h xor bx,bx mov si, offset num1 r1: xor ax,ax int 16h mov [bx+si], al inc bx loop r1
Объяснение кода листинга программы
- Переменная
num1
содержит строку - Цикл начинается с 8-итераций (08h=8).
- Переменные
cx
,bx
иsi
используются как счетчики для цикла. - На каждой итерации цикла, значение
ax
обнуляется (xor ax,ax), затем происходит ввод с клавиатуры (int 16h), и символ из строкиnum1
записывается по адресу, указанному вbx+si
(mov [bx+si], al). - После каждой итерации,
bx
увеличивается на 1 (inc bx). - Цикл продолжается до тех пор, пока
si
меньше 13 (loop si).