Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 309
от 07.12.2005, 22:18

Администратор:Калашников О.А.
В рассылке:Подписчиков: 267, Экспертов: 22
В номере:Вопросов: 4, Ответов: 5


Вопрос № 30612: Ассемблер знаю очень плохо, поэтому прошу помочь! В книге П.Абеля есть фрагмент программы, заменяющей один символ в строке на другой. В общем при запуске bat-файла компиляция и компоновка проходят успешно, ошибок в коде нет, но вылетает такое исключе...
Вопрос № 30615: Здравствуйте уважаемые эксперты. Установил себе TASM, создал в папке BIN файл с расширением .asm. Дальше застрял. Ввожу в командную строку tasm xxx.asm, ругается. Захожу в B32TOOLS, прописываю то же самое, опять безрезультатно. Подскажит...
Вопрос № 30627: ;Как и просили Иходник в студию! В чём же тут дело????? ;??????????? .286 .model tiny CODSEG segment assume cs:CODSEG org 100h _start: jmp _Init ;######################################## Chars db '-|/'...
Вопрос № 30631: Доброго времени суток! Мне необходимо сделать часы на асме, не в графическом режиме. Как это можно организовать с помощью портов? или может с помощью прерываний? Буду очень благодарен если дадите ссылочку где про это почитать....

Вопрос № 30.612
Ассемблер знаю очень плохо, поэтому прошу помочь! В книге П.Абеля есть фрагмент программы, заменяющей один символ в строке на другой. В общем при запуске bat-файла компиляция и компоновка проходят успешно, ошибок в коде нет, но вылетает такое исключение:
"C:/win/System32/cmd.exe
Процессор NTVDM обнаружил недопустимую инструкцию". Подскажите, что это такое и как от него избавиться, пожалуйста!

Приложение:

Отправлен: 02.12.2005, 00:03
Вопрос задала: Ximera (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгений Иванов
Здравствуйте, Ximera!
по моему, не настроен DS.
и ES

mov ax, @data
mov ds, ax
mov es, ax
вначале
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 02.12.2005, 10:03


Вопрос № 30.615
Здравствуйте уважаемые эксперты.
Установил себе TASM, создал в папке BIN файл с расширением .asm. Дальше застрял. Ввожу в командную строку tasm xxx.asm, ругается. Захожу в B32TOOLS, прописываю то же самое, опять безрезультатно.

Подскажите пожалуйста в чем моя ошибка?
Заранее всем благодарен.
Отправлен: 02.12.2005, 04:08
Вопрос задал: Юра (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sager
Здравствуйте, Юра!
Ты бы хоть иходник привел и как именно ругается tasm. Скорее всего у тебя ошибка в исходнике. И еще - в каком виде оформлен исходник(com или exe). Если exe - то параметры такие:
tasm file.asm
tlink /x file.obj

Ответ отправил: Sager (статус: Студент)
Отправлен: 02.12.2005, 09:34

Отвечает: Евгений Иванов
Здравствуйте, Юра!
а вот что он именно пишет - это и нужно знать!
приведи сюда текст

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 02.12.2005, 09:57


Вопрос № 30.627
;Как и просили Иходник в студию! В чём же тут дело?????
;???????????

.286
.model tiny
CODSEG segment
assume cs:CODSEG
org 100h
_start:
jmp _Init
;########################################
Chars db '-|/' ; выводимые символы
Nomer dw 0
Count db 1 ; счетчик числа прерываний. Устанавливаем в 1, чтобы сработало в самый первый раз
;#######################################

_Int08 proc
; вызвать старый обработчик 8-го прерывания
pushf
db 9ah ; код команды CALL FAR
Old_Int08 dd ?

pusha ; сохранить используемые регистры
push es

; установить ES на видеопамять
push 0b800h
pop es
xor di, di ; обнулить DI (теперь ES:DI указывает на левый верхний угол экрана)

dec cs:[Count] ; уменьшить счетчик вызовов
jnz @@Exit ; если не достигли 0 - ничего не делаем

@Time:
mov si,cs:[Nomer]
mov al,cs:Chars[si] ; прочитать выводимый символ
mov ah,0fh ; аттрибут: белые символы на черном фоне
stosb ; вывести на экран
inc si ; перейти к следующему символу
cmp si,4 ; дошли до конца списка символов?
jne @@SaveIndex ; нет - просто сохранить

xor si,si ; обнулить индекс очередного символа

@SaveIndex:
mov cs:[Nomer],si
mov cs:[Count],9

@Exit:
; восстанавливаем регистры и выходим
; сбрасывать контроллер прерываний не нужно, т.к. это делается в старом обработчике прерывания
pop es
popa
iret
_Int08 endp

_Init:
mov ax,0003
int 10h

mov ax,3508h ;Сохраняем
int 21h ;
;
mov word ptr cs:[Old_Int08],bx ;
mov word ptr cs:[Old_Int08+2],es

push cs ;Заменяем
pop ds ;
;
mov dx,offset _Int08 ;
mov ax,2508h ;
int 21h ;

xor ax,ax ;Ждём нажатия клавиши
int 16h ;

mov dx,offset Old_Int08 ;Востанавливаем
mov ax,2508h ;
int 21h ;
.exit ;Выход

CODSEG ends
end _start
;
;
;пробовал напрямую заменять и потом востанавливать вектор прерывания типа
;mov ax,word ptr es:[22h]
;...................
;тот же результат
;
;P.S.Обработчик написал один из экспертов RusFaq
Отправлен: 02.12.2005, 11:11
Вопрос задал: Яковлев Сергей Павлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгений Иванов
Здравствуйте, Яковлев Сергей Павлович!
mov dx,offset Old_Int08 ;Востанавливаем
mov ax,2508h ;
int 21h ;
.exit ;Выход

вот эта гадость неправильна.. :)

вот так кури
push ds
mov dx, word ptr cs:[Old_Int08]
mov ds, word ptr cs:[Old_Int08+2]
mov ax,2508h ;
int 21h ;
pop ds

удачи!
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 02.12.2005, 11:35
Оценка за ответ: 5


Вопрос № 30.631
Доброго времени суток! Мне необходимо сделать часы на асме, не в графическом режиме. Как это можно организовать с помощью портов? или может с помощью прерываний?
Буду очень благодарен если дадите ссылочку где про это почитать.
Отправлен: 02.12.2005, 12:07
Вопрос задал: Ohitmano (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sager
Здравствуйте, Ohitmano!
Например, так:
mov ah,2ch
int 21h
ch - часы
cl - минуты
dh - секунды
dl - сотые доли секунды
А чтобы вывести вот тебе процедура перевода чисел в ascii-код.

Приложение:

Ответ отправил: Sager (статус: Студент)
Отправлен: 02.12.2005, 12:55
Оценка за ответ: 5
Комментарий оценки:
сэнкс, помогло


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное