| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > ввод с клавиатуры - РАЗЪЯСНИТЕ!!! |
| Автор: darkness 10.12.2006, 16:49 | ||
| Хочу: чтобы я ввёл строку и она отобразилась Что я делаю:
Здесь для ввода строки используется функция AH = 0Ah, для которой DS:DX - адрес буфера выход: буфер содрежит введённую строку... Как я понимаю это происходит так: по адресу DX хранится введдённая строка и мы можем спокойно значение DX присвоить какой-нибудь перменной той же viv (у меня в коде), чтобы потом сторку вывести... В чём я не прав? |
| Автор: anwe 10.12.2006, 20:38 |
| Почитай-ка поподробнее описание функций 0Ah и 09h. Относительно первой почитай что содержится в первых двух байтах буфера. Относительно второй почитай чем ограничивается выводимая строка. |
| Автор: darkness 11.12.2006, 00:22 | ||
| Про 0Ah: в первый байт что записывается не нашёл, зато про второй- туда загоняется длина строки, а сама строка записывается начиная с третьего байта..... Про 09h подробного описания не нашёл.... Значит мне надо:
|
| Автор: anwe 11.12.2006, 01:09 |
| 09 выводит строку до первого встеченного "$". Либо заполни свой буфер знаком. |
| Автор: darkness 11.12.2006, 01:40 | ||||
| anwe, это я понял... а что касается ввода: Правильно ли я понимаю, что в DX хранится адрес начала буфера? И следовательно чтобы выйти на введённую строку нужно мы делаем
а после того чтобы вывести эту строку делаем:
Так? |
| Автор: anwe 11.12.2006, 02:03 |
| Да так. Только оптимизируй его. Ты перегоняешь из viv в dx туда-сюда. |
| Автор: darkness 11.12.2006, 02:38 | ||||
| anwe, ругается TASM на строку mov viv, [dx+2] говорит что illegal memmory reference. В чём ошибка?
|
| Автор: anwe 11.12.2006, 19:54 |
| Эту ошибку он выдает потому, что из ячейки в памяти заносишь значение из ячейки в памяти. Команда mov этого не позваляет: должен быть один из операндов регистр. Но после этого выдаст еще ошибку адрессации. До процессора 386 в качестве базы можно использовать только регистры bx, di, si и bp. |
| Автор: darkness 12.12.2006, 09:53 |
| anwe, и какая альтернатива? |
| Автор: anwe 12.12.2006, 21:26 |
| Как какая? Считывай переменную в регистр (любой), а после, если надо - в любую переменную. |