|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.02.2011, 18:58 | #1 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
первая программа в MASM32
Читаю книжку Олега Калашникова. В принципе автор все хорошо объясняет, за исключением того, как скомпилировать ехе-файл!!!!
Я скачал MASM32. Был создан MASM32 Editor. Захожу в него, пишу код Код:
Ну сохраняю я файл под названием ww Далее жму Project/ASSEMBLE ASM File Открывается окошко, в котором написано Код:
В хэндле окна написано \masm32\bin\asmbl.txt и еще командная строка открылась. Иду дальше. Жму Project/Link OBJ File открылось окошко с хэндлом \masm32\bin\link.txt Код:
Но вот в этот раз в открывшемся cmd написано: LINK: fatal error LINK1181: cannot open imput file "C:\Users\Dimarik\Desctop\ww.ob j" Кто может, объясните, пожалуйста, как надо правильно создавать в этой программе exe файлы и что я вообще делаю не так? После языков высокого уровня ооооочень трудно assembler учить...... |
09.02.2011, 21:02 | #2 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
|
|
09.02.2011, 21:33 | #3 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
qeditor.exe
Именно он. Так что я неправильно делаю? Поясните кто что знает, пожалуйста. |
10.02.2011, 00:19 | #4 |
Пользователь
Регистрация: 21.10.2010
Сообщений: 87
|
може , int 20h , после вывода строки поставить ?
мы все врём , скомпилированный исходник - нет !
|
10.02.2011, 10:30 | #5 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Dimarik
ml.exe из пакета masm32 не создает COM-файлов, тебе нужен ml версии 6.14 и линкер к нему не старше 6 версии, в сети найдешь |
10.02.2011, 20:19 | #6 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
разбираю пример из книги .....
Код:
dx - это ссылка на функцию Message, так? Но где мы именно выводим эту ссылку на экран? |
11.02.2011, 08:37 | #7 | |||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
Цитата:
Цитата:
|
|||
11.02.2011, 10:25 | #8 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
9h это номер функции, для того чтобы обработчик прерывания знал на какой адрес передать управление в зависимости от этого номера, в dx - аргумент данной функции(адрес строки в данном случае)
получив прерывание int 21, процессор смотрит таблицу IDT куда передать управление для обработки данного прерывания, передает управление, далее анализируется ah, чтобы понять куда передать управление далее, передается управление на функу вывода информации в адреса отведенные под видеопамять, информация же берется начиная с адреса в dx, или же вообще сразу передается управление сервисам биос, я не в курсе ибо AC/DC про трассировку интов ничего не пели
Нет, ну правда..
|
12.02.2011, 18:00 | #9 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
пока что только начинаю изучать ассемблер... непонятны несколько вещей:
1. В регистрах записывается информация. То есть они как бы - переменные в языках высокого уровня. То есть при написании программ на asm у нас ограниченное число перменных? 2. mov ah,9; загружаем в регистр ah число 9 mov dx,offset Message; загружаем в регистр dx адрес сообщения для вывода вот мы выводим сообщение на экран. Со второй строкой всё понятно. А что делает первая строка? Почему мы именно 9 загружаем и именно в регистр ah И вывод сообщения заканчивается вызовом прерывания 21h. Оно что делает? Завершает вывод информации на экран? или просто функция Message db 'Hello, world!$' пользуется значением регистра ahи в зависимости от этого значения по-разному выполняется? 3. Аналогично, если не трудно, подобно первому вопросу, объясните пожалуйста, что построчно делают эти строки mov ah, 10h;???? int 16h P.S. мой второй и третий вопрос свидетельствует что у меня конкретный пробел в фундаментальных знаниях ассемблера. Только я не совсем понимаю что мне надо прочитать чтоб его ликвидировать. Где понятно написано про то, какими функциями прерывания пользуются, каждая за что отвечает и какими регистрами пользуются функции? |
12.02.2011, 18:25 | #10 | |||
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Цитата:
Цитата:
Цитата:
Изходя из этого по поводу третьего вопроса - идем на вышеназванный ральф браун лист, выбираем номер прерывания - 16h: http://www.ctyme.com/intr/int-16.htm Находим функцию AH=10h: http://www.ctyme.com/intr/rb-1771.htm и читаем описание. Если кратко - это функция чтения одного символа (его скан кода) с клавиатуры. После выполнения команды int 16 в регистре AL вернется ASCII символ, а в регистре AH его скан код/.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
|||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Первая программа на Java | JokerWCC | Помощь студентам | 4 | 28.11.2010 17:08 |
Первая программа... | ViJey | Помощь студентам | 6 | 27.09.2010 20:49 |
Моя первая программа. | fragment | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 11.05.2010 11:46 |
Первая программа на WINAPI | Syltan | Win Api | 8 | 27.02.2010 22:38 |
Первая программа, C++ Bulder | edmynt | Помощь студентам | 2 | 31.01.2010 15:12 |