Вопрос № 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 ;отступаем
Отвечает: 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 программа отрабатывает нормально. Объясните мне пожалуйста в чём может быть дело.
Отвечает: В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. Если можно, то напишите эту иерархию.
Отвечает: В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
Отвечает: Евгений Иванов
Здравствуйте, Терсков Алексей Николаевич!
EXTRN
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