Я попытался сделать сам строку ввода, но у меня ничерта не вышло.
Копаясь в исходниках, я тоже ничего непонял, так что пожалуйста, если
вам не влом, помогите, покажите что надо добавить или исправить.
Вопрос:
Как сделать так, чтобы не просто выводился вводимый символ,
а строка вводимых символов. В чём ошибка я понимаю, но исправить её немогу. Я ассемблер знаю очень даже плохо, поэтому
приходится спрашивать. Так что заранее спасибо!
use32
org 0x0
db 'MENUET01'
dd 0x01
dd START
dd I_END
dd 0x1000
dd 0x1000
dd 0x0
dd 0x0
START:
draw_window:
call window
still:
mov eax,10
int 0x40
cmp eax,1
je draw_window
cmp eax,2
je key
cmp eax,3
je button
jmp still
key:
mov eax,2 ;Получаем символ в ah
int 0x40
shl [kbr],8 ;сдвигаем на 8 бит
mov [kbr],ah ;копируем значение ah в переменную
jmp draw_window ;бежим отрисовывать окно
button:
mov eax,17
int 0x40
cmp ah,1
je quit
jmp still
quit:
mov eax,-1
int 0x40
window:
mov eax,12
mov ebx,1
int 0x40
mov eax,0
mov ebx,200*65536+200
mov ecx,200*65536+100
mov edx,0x03ffffff
mov esi,0
mov edi,0
int 0x40
call draw_text_input ;вызываем отрисовку "строки ввода"
mov eax,12
mov ebx,2
int 0x40
ret
draw_text_input:
mov eax,4
mov ebx,8*65536+8
mov ecx,0
mov edx,kbr ;отображаем переменную
mov esi,kbs
int 0x40
ret
kbs dd ?
kbr db ?
I_END:
Помощь ассемблерному ламеру
to lamers by lamers
ошибка здесь:
shl [kbr],8 ;сдвигаем на 8 бит сдвиг работает так (не знаю как объяснить : shl(00110101)==01101010
Надо делать вроде:
mov ebx,kbr ;копируем адрес начала строки в ebx
add ebx,[kbs]; добавляем длину==текущий символ
mov [ebx],ah; копируем в память по адрему, что в ebx ah
inc [kbs]; увеличиваем длину строки на 1
jmp draw_window
bottom:
kbs dd 0; фасм помоему обнуляет dx ? объявления, но с чем чёрт
Должно работать, проверить негде...
ошибка здесь:
shl [kbr],8 ;сдвигаем на 8 бит сдвиг работает так (не знаю как объяснить : shl(00110101)==01101010
Надо делать вроде:
mov ebx,kbr ;копируем адрес начала строки в ebx
add ebx,[kbs]; добавляем длину==текущий символ
mov [ebx],ah; копируем в память по адрему, что в ebx ah
inc [kbs]; увеличиваем длину строки на 1
jmp draw_window
bottom:
kbs dd 0; фасм помоему обнуляет dx ? объявления, но с чем чёрт
Должно работать, проверить негде...
и ещё фикс:
draw_text_input:
mov eax,4
mov ebx,8*65536+8
mov ecx,0
mov edx,kbr ;отображаем переменную
;mov esi,kbs ;копируется адрес переменной
mov esi,[kbs]; копируется значение
int 0x40
ret
draw_text_input:
mov eax,4
mov ebx,8*65536+8
mov ecx,0
mov edx,kbr ;отображаем переменную
;mov esi,kbs ;копируется адрес переменной
mov esi,[kbs]; копируется значение
int 0x40
ret
Menuet обнуляет неинициализированные переменные. А FASM, если они попадают в код, также полагает равными нулю.
О спасибо, с каждым таким советом я становлюсь ассемблерщиком всё больше и больше!...
ipr,а ты какие языки программирования знаеш,сколько лет программируеш(какой опыт),как долго изучаеш ассемблер ?
(просто мне интересно узнать участников форума)
(просто мне интересно узнать участников форума)
в лет 10 первый раз познакомился с компьютером, правда со спеутрумом, и почти сразу учил его
бейсик. Затем был писюк, изучал сиснтаксис Qbasic'a. Потом C, C++. С тех времён прошло 8 лет, то бишь
мне 18. Вот... А, да, сейчас учу ассемблер... А из планов следуюющее выучить Pascal/Delphi,Pithon и т.п. и т.д.
В общем знать побольше языков.
бейсик. Затем был писюк, изучал сиснтаксис Qbasic'a. Потом C, C++. С тех времён прошло 8 лет, то бишь
мне 18. Вот... А, да, сейчас учу ассемблер... А из планов следуюющее выучить Pascal/Delphi,Pithon и т.п. и т.д.
В общем знать побольше языков.
Мне тоже 18,только мне так не повезло с компьютером.Впервые я увидел компьютер в 12 лет в школе(а что вы хотите- в селе ведь жил) - это был советский компьютер "ЭЛЕКТРОНИКА БК 0010-01".Программ к нему совершенно небыло и я учился программировать на бейсике.А через два года я увидел современный компьютер(но так как он был не моим,то на этом все и закончилось).Потом чудом мне удалось раздобыть книгу по DEC- овскому ассемблеру для электроники.Электроника была с 16!!! разрядным процессором частотой 3 мегагерца.Процессор содержал 64 команды(конечно там были mov,shr,shl,add,inc и другие команды).Я получал удовольствие от программировании(оптимизации) на ASM такого слабого(по современным меркам) процессора.Он был моим компьютером вплоть до 2003 года.В 2003 году,когда я стал учиться в университете,за пол года я освоил все устройство современного компьютера(до этого я ничего не знал об операционных системах и прочих элементарных вещах) и выучил Pascal.(а также узнал-что такое интернет и "с чем его едят")Начал изучать C++ - честно скажу он мне непонравился(я та и не закончил его изучение).Летом 2004 года мне купили компьютер,вот тогда я и попробовал ASM для х86 машин.Я быстро освоил этот ассемблер(сказался опыт DEC-овского асма).Ну вот собственно говоря и на этом пока заканчивается мое развитие в области языков программирования.(после асма изучать языки высокого уровня мне совсем не хочется)
andrew_programmer
А мне тоже C++ не нравится... А вот когда я попробовал кодить на асме оказалось прикольно!
Первый шок был тогда, когда я сделал hello world на basic'e и на asm'e. На бейсике это чудо программерской
мысли весило 33,6 КБ, а на асме (для доса) 16 байт.
А мне тоже C++ не нравится... А вот когда я попробовал кодить на асме оказалось прикольно!
Первый шок был тогда, когда я сделал hello world на basic'e и на asm'e. На бейсике это чудо программерской
мысли весило 33,6 КБ, а на асме (для доса) 16 байт.
VASA
Да знаю я как shl/shr работает!
По крайней мере так у меня вводимый символ отображался!
Да знаю я как shl/shr работает!
По крайней мере так у меня вводимый символ отображался!
ламерки... хы хы
ipr, если б ты был немного повнимательнее, то прочитал бы мои посты на счёт GUI компонент под МеОС, и прочитав внимательно
ты понял бы что данной задачей (вводимая строка и т.п.) уже давно решается многими людьми (не только мною ))
так же на сайте тов. Хекса mestack.narod.ru ты бы нашёл исходники моих компонент, в которых кстати применён ООП подход...
также присутствуют понятные комментарии и разобраться в работе было бы не сложно... а уж потом бы задавал такие вопросы...
все мы начинали с бейсиков на спектрумах и паскакалей на 386... так что кто круче в этом плане тут как то спрашивать не стоит
ipr, если б ты был немного повнимательнее, то прочитал бы мои посты на счёт GUI компонент под МеОС, и прочитав внимательно
ты понял бы что данной задачей (вводимая строка и т.п.) уже давно решается многими людьми (не только мною ))
так же на сайте тов. Хекса mestack.narod.ru ты бы нашёл исходники моих компонент, в которых кстати применён ООП подход...
также присутствуют понятные комментарии и разобраться в работе было бы не сложно... а уж потом бы задавал такие вопросы...
все мы начинали с бейсиков на спектрумах и паскакалей на 386... так что кто круче в этом плане тут как то спрашивать не стоит
FreGL
Я уже много раз говорил:
Я изучаю асм, я пытаюсь реализовать всё сам. А когда
вхожу в тупик, я задаю вопросы, потому что в исходниках путаюсь и теряюсь.
А если я буду использовать библиотеки, то это будет ужас! Я буду знать
что оно работает, а как не знаю. Вот...
Я уже много раз говорил:
Я изучаю асм, я пытаюсь реализовать всё сам. А когда
вхожу в тупик, я задаю вопросы, потому что в исходниках путаюсь и теряюсь.
А если я буду использовать библиотеки, то это будет ужас! Я буду знать
что оно работает, а как не знаю. Вот...
Дедовщину разводим?Я те дам!ламерки... хы хы
Все были такими...Для меня ламер - человек, который не хочет познавать новое, т.е. остаёться на одном и том-же уровне.
Ты внимательно читал его предыдущий пост?Он же говорил, что ещё не изучал Паскаль и Дельфи, а ты хочешь, чтобы он реализовал ООП подход... Вот когда ipr подучиться немного, то уж точно поможет с реализацией многих программ и фичь .ipr, если б ты был немного повнимательнее, то прочитал бы мои посты на счёт GUI компонент под МеОС, и прочитав внимательно
ты понял бы что данной задачей (вводимая строка и т.п.) уже давно решается многими людьми (не только мною ))
так же на сайте тов. Хекса mestack.narod.ru ты бы нашёл исходники моих компонент, в которых кстати применён ООП подход...
Бррр...Как вспомню те годы и QBasic, то страшно становиться... А вообще ностальгия по тем временам мучает частовсе мы начинали с бейсиков на спектрумах и паскакалей на 386... так что кто круче в этом плане тут как то спрашивать не стоит
Да, Хекс ты всё правильно понял. Я собираюсь серьёзно кодить под МеОСь.
Да... а я ведь тоже начинал с БК-0010. Классная была машина для своего времени. Хоть и слизана с PDP-11, но несовместима с ней, потому программное обеспечение и вся документация написана програмистами любителями исключительно на русском языке.
Свою первую программу на асме я написал именно для БК. Типа фонографа - запись и воспроизведение звука с однобитным разрешением + ограничение памяти, я использовал экранную область ОЗУ, итого паршивенький звук на 16 секунд. Но! Какое приятное чувство удовольствия от реализации задуманного дела.
Кстати DEC’овская система команд гораздо удобней и гибче чем x86. Одних только способов адрессации не меньше 16 видов, вот простор для полёта программерской мысли.
А как вам ассемблер + дизассемблер + отладчик + текстовый редактор и всё это вмещается в 10 КБ! Даже Менует отдыхает!
Дальше у меня был немного ZX-spectrum48, а дальше почти год ZX-128-Дельта с дисководом, правда, я на Спектрумах больше играл. Очень сложно переходить с одного ассемблера на другой, особенно если мнемоническое обозначение команд отличается.
Ну, а дальше появился Cyrix233/32+Trident+HDD-800M за который я закончил выплачивать кредит 1 апреля этого года.
Хотя этот комп давно уже стоит у меня под столом, был бы монитор организовал бы локалку.
Свою первую программу на асме я написал именно для БК. Типа фонографа - запись и воспроизведение звука с однобитным разрешением + ограничение памяти, я использовал экранную область ОЗУ, итого паршивенький звук на 16 секунд. Но! Какое приятное чувство удовольствия от реализации задуманного дела.
Кстати DEC’овская система команд гораздо удобней и гибче чем x86. Одних только способов адрессации не меньше 16 видов, вот простор для полёта программерской мысли.
А как вам ассемблер + дизассемблер + отладчик + текстовый редактор и всё это вмещается в 10 КБ! Даже Менует отдыхает!
Дальше у меня был немного ZX-spectrum48, а дальше почти год ZX-128-Дельта с дисководом, правда, я на Спектрумах больше играл. Очень сложно переходить с одного ассемблера на другой, особенно если мнемоническое обозначение команд отличается.
Ну, а дальше появился Cyrix233/32+Trident+HDD-800M за который я закончил выплачивать кредит 1 апреля этого года.
Хотя этот комп давно уже стоит у меня под столом, был бы монитор организовал бы локалку.
Who is online
Users browsing this forum: No registered users and 7 guests