|
|
|
| Нужно мне вывести на экран введённую ранее с клавиатуры строку.
Assume cs:code, ds:code
Code Segment
org 100h
start: mov ax,cs
mov ds,ax
; установка видеорежима
mov ah, 0
mov al, 3
int 10h
; ввод строки
mov ah, 0ah
lea dx, string
int 21h
; перевод строки
mov ah, 9
lea dx, crlf
int 21h
; вывод строки
mov ah, 9
lea dx, string
int 21h
; выход из программы
exit: mov ah, 4ch
int 21h
string db 255, 255 dup(0)
crlf db 0ah, 0dh, '$'
code ends
end start
|
Выполняю, ввожу строку, а выводится какой-то мусор. Как вывести ровно то, что ввёл ранее? | |
|
|
|
|
|
|
|
для: Саня
(07.04.2008 в 14:01)
| | извиняюсь за флуд,
не пойму почему у меня ник Здравствуйте, q\\\'n\\\'d!
зарегестрировался как q'n'd а тут оно обзывается , и проверить кто-же я , q'n'd или q\\\'n\\\'d
:)
кстати тоже интересно увидеть немного кода на asm. | |
|
|
|
|
|
|
|
для: q'n'd
(07.04.2008 в 21:20)
| | (Здравствуйте, q\'n\'d!)
уже лучше :) | |
|
|
|
|
|
|
|
для: q'n'd
(07.04.2008 в 21:22)
| | ; ввод строки
mov ah, 0Ah
int 21h
lea dx, string
int 21h | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(09.04.2008 в 10:37)
| | И какой смысл этой махинации? Только хуже стало. | |
|
|
|
|
|
|
|
для: Саня
(10.04.2008 в 06:28)
| | Ты кинул в регистр десятую функцию,
mov al, 0Ah
а приказ на выполнение кто даст?
Операционка догадается что-ли?
Ладно сейчас компильну то что ты наваял посмотрю
И почему у тебя такой странный буфер?
В буфере зачем-то число 255 (FF), а потом ещё 255 нулей?
Всего выходит 257 символов. В чём хитрость?
Один ведь хрен строку буфера обрежет до 256 байт.
Напиши просто
string db 256 dup (?) ;Резервируем место под 256 любых символов.
Или ты хочешь во второй байт буфера поймать длину строки? | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(10.04.2008 в 20:56)
| | У меня всё работает.
И зачем тебе вообще эта ДОС?
Она же давным-давно умeрла!
Переходи на Винду. | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(10.04.2008 в 23:04)
| | Может и умерла, но консоль ещё ой как долго жить будет. | |
|
|
|
|
|
|
|
для: Саня
(11.04.2008 в 14:08)
| | Хм... для консоли сейчас надёжнее в Windows стиле программировать. | |
|
|
|
|
|
|
|
для: cheops
(11.04.2008 в 14:31)
| | Что это за windows и dos стили? | |
|
|
|
|
|
|
|
для: Саня
(11.04.2008 в 14:47)
| | Не удачно выразился, имел в виду, что в основу программы лучше класть Windows, а не DOS-основу - всё-равно большинство современных ASM-программ задействуют множество ресурсов операционной системы - лучше сразу ориентироваться на Windows. | |
|
|
|
|
|
|
|
для: cheops
(11.04.2008 в 16:36)
| | Что вы подразумеваете под dos и windows основой? Какая разница, консоль она и в африке консоль? А оконные приложения на асме — это несерьёзно. Вам ли не знать, что асм зависит от процессора, а не от ОС. | |
|
|
|
|
|
|
|
для: Саня
(11.04.2008 в 16:42)
| | В DOS главной функцией является main() взаимодействие с операционной системой через прерывания. В Windows главная функция WinMian() - взаимодействие с операционной системой через события - вывод в консоль, через WinAPI-функции и или аналоги их использующие. Ну соответственно, никаких сегментов кроме flat. | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(10.04.2008 в 20:56)
| | Ну вообще, я с этим асмом только третий день вожусь, так что я не знаю зачем там 255 нулей.
> Или ты хочешь во второй байт буфера поймать длину строки?
Как говорит препод, первое число обозначает максимальное количество вводимых символов, а второе — число реально введённых символов.
> а приказ на выполнение кто даст?
Ну вообще-то я сначала загружаю в регистр ah номер функции, в регистр dx указатель на переменную, куда запишутся введённые символы, а потом уже вызываю прерывание.
А с string db 256 dup (?) программа сразу приходит к завершению.
TASM 2.0 | |
|
|
|
|
|
|
|
для: Саня
(11.04.2008 в 14:06)
| | Тогда поставь
string db 256 dup (0)
на Тасме никогда не работал.
Использую masm32. Ну и поневоле пришлось освоить быстропрогрессирующий фасм.
Причина понятна - Хоть на masm море исходников - но он мёртв. (Не обновляется). А фасм постоянно обновляет автор.
Что за бред о трудности оконных приложений на асме?
Писать их легче лёгкого - есть в помощь отличные IDE
(Лично я использую MASM BUILDER. Автор программы - Российский парнишка. Качай на его сайте)
Это среда визуальной разработки на ассемблере.
Рисуешь программу почти с такой же лёгкостью как в Делфи.
Куча контролов - от кнопок и диалогов до битмапов. И всё это на твоём многооконном приложении.
Вот только должен немного разочаровать - ни один контрол не имеет кода.
Но для понимающих это просто наслаждение.
Потому что после создания каркаса начинается самое увлекательное - процесс творчества. Открываешь проект в MASM и начинаешь кодить.
Консольные программы... Гм... Есть ещё такие... Но на перспективу - рулят только удобные и понятные населению, хорошо оформленые приложения.
ASM зависит от процессора.
:-)
А какая по большому разница между пентиумом и AMD ?
Те же самые директивы. Ну есть микроскопические отличия. Это надо очень специфическую программу написать, чтобы она не пошла и на пентиуме и пошла на AMD
Я ещё никогда не попадал в такую ситуацию. Всегда есть возможность использовать
конструкцию выбора
CMP
И переложить код на общие для обеих процессоров директивы.
Вот подобные твоему программы очень напоминают старые досовские туториалы по асму. Ты не их штудируешь? | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(11.04.2008 в 20:50)
| | > Тогда поставь
> string db 256 dup (0)
Программа сразу завершает работу.
> Что за бред о трудности оконных приложений на асме?
> Писать их легче лёгкого - есть в помощь отличные IDE
Я же не знаю, что существует WYSIWYG-конструктор форм... просто я представил как будет выглядеть код оконного приложения, если писать его исключительно ручками.
> Консольные программы... Гм... Есть ещё такие...
> Но на перспективу - рулят только удобные и понятные населению,
> хорошо оформленые приложения.
В серверном сегменте рулят как раз консольные приложения.
> А какая по большому разница между пентиумом и AMD ?
Я наверное не так выразился. Я имел ввиду разные архитектуры процессоров: RISC (DEC Alpha, Power), CISC (VAX, x86), Гарвардская архитектура (микроконтроллеры).
> Вот подобные твоему программы очень напоминают старые
> досовские туториалы по асму. Ты не их штудируешь?
Преподаватель в университете так учит. И шаги влево-вправо от разработанной в бородатые годы учебной программы воспринимаются им ооочень болезненно. Поэтому iczelion'овские туториалы для меня пока недоступны и нужно сделать работу именно в таком древнем стиле. | |
|
|
|