Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2011, 01:27   #1
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию Запись в строку.

Сделал функцию записи в строку. Но почему-то прога пишет все считываемые символы в одну и ту же ячейку строки
Код:
.model  small
.stack  100h
.data
    string  db  200 dup (?)
    len equ 200
                         
.code
                        
input proc
    mov cx, len ;установка длины строки
    mov bh, 0dh ; запись кода enter
    xor bl, bl  
    inputcycle: 
        mov ah, 01h
        int 21h
        cmp bh, al  ;проверка на enter
        je  finish     ;выход по нажатию enter
        mov [offset string + bl], al ;запись в строку
        add bl,1   ; 
    loop inputcycle   
    finish
    ret                       
input endp 
           
start:
    mov ax, @data
    mov ds, ax
    call input    
end start
насколько я понимаю проблема со строкой mov [offset string + bl], al
но что там не так?
Farrel вне форума Ответить с цитированием
Старый 03.04.2011, 03:21   #2
Ibanez Wizard
Адский тунеядец
Форумчанин
 
Аватар для Ibanez Wizard
 
Регистрация: 11.06.2010
Сообщений: 164
По умолчанию

Ты не можешь прибавлять к адресу байт (сам не знаю почему, но когда я заменил это на ebx, то стало нормально. Но если ты заменишь на ebx, то ты не сможешь прибавить al, значит должно получится вот так?
mov [offset string+ebx], eax
Но по скольку ты ebx используешь как два регистра, придется один из них заменить на другой, к примеру edx.
Я учусь писать под 32bit, поэтому отбрось 'e' перед регистрами (чтобы 16-bit'ными стали).
Т.ж поставь после finish двоеточие и ret в конце программы.
Ibanez Wizard вне форума Ответить с цитированием
Старый 03.04.2011, 14:14   #3
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Для 16тибитной адресации
Код:
    xor bx, bx  
    ;....
        mov byte ptr[offset string + bx], al ;запись в строку
        inc bx
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировать строку фильтрованного списка в другую книгу, на последнюю пустую строку Gvaridos Microsoft Office Excel 11 24.11.2010 00:48
Запись в файл с переходом на другую строку Syltan Общие вопросы по Java, Java SE, Kotlin 3 29.07.2010 18:03
Запись в конкретную строку, позицию.... DasModelka Общие вопросы Delphi 6 15.06.2010 16:03
Вставить запись в нужную строку и колонку Inbox БД в Delphi 1 19.02.2009 19:50
Запись в одну строку Terran Общие вопросы Delphi 2 08.05.2008 23:35