![]() |
|
|
![]()
|
|
| Evilpc |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 15.6.2005 Репутация: нет Всего: нет |
ктонить может построчно прокоментировать сию прогу??очень нужно, а самя в Ассемблере 0!
TEXT SEGMEHT 'CODE' assume cs:text,ds:data; begin: mov ax,data; mov ds,ax; mov ah,08h; int 21h; mov stro,al; mov ah,08h; int 21h; mov stro+1,al; mov ah,08h; int 21h; mov stb,al; mov ah,08h; int 21h; mov stb+1,al; mov ah,08h; int 21h; mov color,al; mov ah,08h; int 21h; mov color+1,al; mov ah,09h; mov dx,offset message; int 21h; mov ah,4oh; mov al,00h; int 21h; text ends; data segment 'data'; message db 27,'[2J',27,'[' stro db ' 00 ' , ';' stb db '00','H',27,'[' color db '00','m','churik kaban$ data ends end begin заранее спасибо! если что о пишите на [email protected] |
|||
|
||||
| Payne |
|
||||
![]() Детектив ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 6.4.2005 Где: Петербург Репутация: нет Всего: 10 |
Блин, ты бы только видел, сколько ошибок компилятор понавыдавал, когда я просто через буфер обмена прогу копирнул в "Блокнот" и откомпилил!!!
В общем, как видишь, прогу я несколько видоизменил. Не знаю, как тебе это - понравится или нет, но ничего тут не поделаешь, потому что та, которую ты запостил, была довольно корява... Как я понял, должен получиться .exe-файл. Следовательно, в проге должен быть сегмент стэка (строки 2 - 4). Далее, сегмент данных определяется до сегмента кода (7 - 14). Я добавил туда, как видишь, новые элементы. Во-первых, выделил место для имени файла; во-вторых, сделал переменную, которая будет содержать номер файла (хэндл). Далее объясню, зачем это... Ну, теперь, собсно, сегмент кода. Думаю, здесь несложно разобраться по приведенным комментариям. Но пожалуй поясню пару моментов. В сегменте данных определены места для следующих элементов: stro, stb, color и message. При запуске проги она будет ждать нажатия шести клавиш. Их символы, помещаемые в регистр al, будут перемещаться из al в выделенные под вышеуказанные переменные области памяти. После этого функцией 09h прерывания 21h будут выведены на экран символы, которые пользователь ввел. Выводиться они будут со смещения Message и до первого встретившегося символа $, а встретится он после строки 'churik kaban'. Когда разбирал текст твоей проги, наткнулся на функцию 40h прерывания 21h. Она предназначена для записи в файл. Я подумал: "Это неспроста" и решил дополнить записью того, что выводится на экран, в файл. На этот счет там я все прокомментировал: используются функции 3Dh (открытие файла), 40h (запись в файл) и 3Eh (закрытие файла) прерывания 21h. Теперь создай в папке, где у тебя будет прога, файл file.txt, и после выполнения проги ты увидишь в файле примерно то, что ты видел на экране. И напоследок, я добавил ожидание нажатия клавиши перед выходом из программы, чтобы результат ее выполнения был хотя бы заметен:
Если тебе не понравится то, что я добавил, можешь смело это удалить. Главное, оставь сегмент стэка и не изменяй заголовки и расположение других сегментов. |
||||
|
|||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |