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

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


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

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

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

Выпуск № 224
от 30.08.2005, 20:35

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


Вопрос № 25262: Уважаемые Эксперты, какие книги (бумажные) вы можете порекомендовать для изучения ассемблера. На данный момент у меня есть книги Юрова и "Ассемблер" Питера Абеля. Есть еще какие стоящие книги?...
Вопрос № 25278: Вопрос: MULTBY генирирует код умножения байта на байт. MULTWD генирирует код умножения словы на слово. Правильно я написал проограмму? ---------------------------------- CSEG segment assume cs:CSEG, ds:CSEG, ss:CSEG org 10...
Вопрос № 25303: Здравствуйте уважаемые эксперты! Я только начинаю изучать ассемблер и к сожалению много не понимаю. Сейчас я пишу программы под ДОС, который работает из под VMware 5.0.0. При запуске одной из программ у меня возникла ошибка : «Your program caused a d...
Вопрос № 25313: Вопрос экспертам. Предполагается, что программа MAINPRO должна вызывать подпрограмму SUBPRO. 1. какая директива в программе MAINPRO указывает Ассемблеру, что имя SUBPRO определенно вне ее собственного кода? 2. и какая директи...

Вопрос № 25.262
Уважаемые Эксперты, какие книги (бумажные) вы можете порекомендовать для изучения ассемблера. На данный момент у меня есть книги Юрова и "Ассемблер" Питера Абеля. Есть еще какие стоящие книги?
Отправлен: 24.08.2005, 21:06
Вопрос задал: NCy (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Вiктор
Здравствуйте, NCy!
посмотрите Пирогова, Зубкова. Вроде была ещё какая-то книга П. Нортона.
можете также посмотреть Кнута - книгу "Искуство программирования" :-)
---------
Turbodebugger - это вам не цацки-пецки...
Ответ отправил: Вiктор (статус: 4-ый класс)
Отправлен: 24.08.2005, 21:31
Оценка за ответ: 4

Отвечает: Виктория Путина
Здравствуйте, NCy!
я думаю начни именно сних не ошибешся
---------
Все сама
Ответ отправила: Виктория Путина (статус: 8-ой класс)
Отправлен: 25.08.2005, 16:43
Оценка за ответ: 4


Вопрос № 25.278
Вопрос:
MULTBY генирирует код умножения байта на байт.
MULTWD генирирует код умножения словы на слово.
Правильно я написал проограмму?
----------------------------------
CSEG segment
assume cs:CSEG, ds:CSEG, ss:CSEG
org 100h ;отступаем

MULTBY MACRO A1, B1
MOV AL,A1
MUL B1
ENDM

MULTWD MACRO A2, B2
MOV AX,A2
MUL B2
ENDM

BEGIN:
MULTBY A1 B1
XOR AX,AX
XOR DX,DX
MULTWD A2 B2

INT 20h
A1 db 255
B1 db 255
A2 dw 65535
B2 dw 65535
CSEG ends
end BEGIN
----------------------------------
Отправлен: 25.08.2005, 11:19
Вопрос задал: Терсков Алексей Николаевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: BOIL
Здравствуйте, Терсков Алексей Николаевич!

Очевидно Вы представили не весь текст программы, т.к. символы А1 и В1 неопределены перед их использованием (после метки begin)

Удачи!..
Ответ отправил: BOIL (статус: 3-ий класс)
Отправлен: 25.08.2005, 12:01

Отвечает: Евгений Иванов
Здравствуйте, Терсков Алексей Николаевич!
всё правильно.
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 25.08.2005, 22:40


Вопрос № 25.303
Здравствуйте уважаемые эксперты! Я только начинаю изучать ассемблер и к сожалению много не понимаю. Сейчас я пишу программы под ДОС, который работает из под VMware 5.0.0. При запуске одной из программ у меня возникла ошибка : «Your program caused a divide overflow error». При прогоне программы под отладчиком adfpro программа отрабатывает нормально. Объясните мне пожалуйста в чём может быть дело.

Приложение:

Отправлен: 25.08.2005, 17:05
Вопрос задал: Шурыгин В.В. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Вiктор
Здравствуйте, Шурыгин В.В.!
команда div работает с парой регистров dx:ax.
т.е. на bx делится не АХ, а 4-байтное число, старшие 2 байта которго содержатся в регистре DX. И елси у вас в DX есть какое-то значение, то может быть переполнение - divide overflow error
(из-за того что делится слишком большое число)
под отладчиком все регистры сначала содержат нули. (для удобства).
А в реальных условиях - там может быть что угодно.
Поэтому для того чтобы не возникало ошибки, обнуляйте регистр DX перед делением, например так
xor dx,dx (так лучше)
или так:
mov dx,0 (так понятнее для новичков)
удачи!
(P.S. команда div bl вроде должна делить 2-байтное число DL:AL на BL, но я не уверен, лучше уточните в справочнике.)
---------
Turbodebugger - это вам не цацки-пецки...
Ответ отправил: Вiктор (статус: 4-ый класс)
Отправлен: 25.08.2005, 17:36


Вопрос № 25.313
Вопрос экспертам.

Предполагается, что программа MAINPRO должна вызывать подпрограмму
SUBPRO.
1. какая директива в программе MAINPRO указывает Ассемблеру, что
имя SUBPRO определенно вне ее собственного кода?
2. и какая директива в подпрограмме SUBPRO необходима для того, чтобы имя
точки входа было доступно в основной программе MAINPRO?
3. Здесь под подпрограммай имеется в виду процедура?
4. Если можно, то напишите эту иерархию.
Отправлен: 25.08.2005, 19:40
Вопрос задал: Терсков Алексей Николаевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Вiктор
Здравствуйте, Терсков Алексей Николаевич!
1) extrn SUBPRO:near (или SUBPRO:far, по ситуации) (объявляется внешнее имя SUBPRO, которое будет вызываться из этого модуля, но находится в другом модуле)
2) public SUBPRO. (директива public указывает что SUBPRO будет вызываться из другого модуля).
3) я так понял что да. Хотя вам виднее, это ведь вы задаёте вопрос.
4) ? вы имеете в виду примеры модульных программ? Если да, то см. вложение (в работе не проверял, но вырезал куски из работавших программ)

есть также указания вроде
vfab proc c near
где с - указывает язык (язык си). Может быть ещё stdcall, pascal - не уверен, лучше посмотрите документацию.
( _vfab proc near И подчёркивание перед именем тоже играет роль для языка си.)

Приложение:

---------
Turbodebugger - это вам не цацки-пецки...

Ответ отправил: Вiктор (статус: 4-ый класс)
Отправлен: 25.08.2005, 23:16

Отвечает: Евгений Иванов
Здравствуйте, Терсков Алексей Николаевич!

  1. EXTRN
  2. PUBLIC
    также есть GLOBAL = PUBLIC + EXTRN


Обычно пишу все подпрограммы вот так

    Call proc0

то есть, с большой буквы. Этим я даю понять, что она внешняя.
У меня есть программа ASMH (сам создавал), которая разбирает листинг и если находит Call или Jmp с большой буквы, то записывает в другой файл GLOBAL имя:NEAR или PROC (зависит от ключей запуска).

Потом я этот файл подключаю и поэтому у меня всё автоматом проставляется.

include "asmh.e"

Ассемблирую через спец-BAT-файл.

ASMH.COM main.asw asmh.e /ey


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


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


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

В избранное