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

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

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

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10929
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 4107
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1933
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1533
Дата выхода:05.12.2012, 14:00
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:68 / 25
Вопросов / ответов:3 / 5

Консультация # 44451: Еще один вопрос... Что неверно в этой программе (открытие текстового документа), возможно я что то не так понял, помогите плз.....


Консультация # 23918: Здраствуйте. Я пытаюсь изучать асамблер по руководству Калашникова. И когда я компилирую вот етот текст: CSEG segment org 100h Begin: mov ax,0B800h mov es,ax mov di,0 mov al,1 mov ah,31 mov cx,2000 Next_face: mov es:[di],ax add di,2 loop Next_face mov ah,10hКонсультация # 127192: Здравствуйте уважаемые эксперты!!я приобрел книгу О.Калашникова "Ассемблер это просто!!" и у меня появились проблемы с компиляцией .asm файлов!!Набираю программу в блокноте либо в edit.com, сохраняю в файл с ASM расширением и копилирую путем запуска с командной строки C:MASM611BINML.EXE PROG001.asm /AT . Как я понимаю, в каталоге BIN (где...

Консультация # 44451:

Еще один вопрос... Что неверно в этой программе (открытие текстового документа), возможно я что то не так понял, помогите плз..

Дата отправки: 28.05.2006, 05:30
Вопрос задал: Бородин Евгений Викторович / k
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Пан Павел Константинович:

Здравствуйте, Бородин Евгений Викторович / kain!

Если вы решаете такую задачу то я вам рекомендую делать это через модель памяти TINY т.е. формат файла *.COM, где все сегментные Регистры равны между собой, это уменьшит код программы и упростит сопровождение.

Далее идёт код который демонстрирует только Открытие и Закрытие файла.

CSEG segment
assume cs:CSEG,ds:CSEG,ss:CSEG,es:CSEG
org 100h
Begin:
;====================
;Open file
;OUT: ax = handle
mov ax,3D00h
lea dx,filename
int 21h
;====================
xchg ax,bx ;bx = handle
;====================
;Close file
mov ah,3Eh
int 21h
;====================
ret ;exit
;====================
filename db \'1.txt\',0
CSEG ends
end Begin

У вас в коде есть отрывок:

mov [numb],ax ;Здесь вы сохраняете Handle

mov ah,3Fh ;Номер функции Чтения из Файла
mov cx,0FF00h ;Колличество считываемых байт
mov dx,offset Buffer ;Адрес буфера куда будут читаться данные
int 21h

Этот отрывок предназначен для чтения из файла. В данном отрывке не хватает загрузки в регистор BX, хэндла файла т.е. правельная версия выглядит так:

mov [numb],ax ;Здесь вы сохраняете Handle

mov bx,ax ;bx = HANDLE FILE

mov ah,3Fh ;Номер функции Чтения из Файла
mov cx,0FF00h ;Колличество считываемых байт
mov dx,offset Buffer ;Адрес буфера куда будут читаться данные
int 21h

С, Уважением MnEm0n!C.

Консультировал: Пан Павел Константинович
Дата отправки: 28.05.2006, 14:45
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 23918:

Здраствуйте.
Я пытаюсь изучать асамблер по руководству Калашникова. И когда я компилирую вот етот текст:

CSEG segment
org 100h

Begin:
mov ax,0B800h
mov es,ax
mov di,0
mov al,1
mov ah,31
mov cx,2000

Next_face:
mov es:[di],ax
add di,2
loop Next_face

mov ah,10h
int 16h
int 20h

CSEG ends
end Begin
с помощю TASM виплывает ошибка:

**Error** 1.asm<15> Near jump or call to different CS.

Што мне делать?

Зарание блогодарен.

Дата отправки: 23.07.2005, 19:00
Вопрос задал: D.O.O.
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Стас (Специалист):

Здравствуйте, D.O.O.!
Дело в том что ассемблер не знает чему у тебя равен CS, поэтому укажи ему, поставь после CSEG segment строку
assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG
и все заработает.

Консультировал: Стас (Специалист)
Дата отправки: 24.07.2005, 00:42
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Ayl:

Здравствуйте, D.O.O.!

Поставь ASSUME cs:CSEG после CSEG segment

Консультировал: Ayl
Дата отправки: 25.07.2005, 11:50
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Евгений Иванов (Специалист):

Здравствуйте, D.O.O.!
добавь директивы ASSUME и MODEl.

Консультировал: Евгений Иванов (Специалист)
Дата отправки: 27.07.2005, 20:36
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 127192:

Здравствуйте уважаемые эксперты!!я приобрел книгу О.Калашникова "Ассемблер это просто!!" и у меня появились проблемы с компиляцией .asm файлов!!Набираю программу в блокноте либо в edit.com, сохраняю в файл с ASM расширением и копилирую путем запуска с командной строки C:MASM611BINML.EXE PROG001.asm /AT . Как я понимаю, в каталоге BIN (где и находится компилятор) должны появиться 2 файла с расширениями .com и .obj, но не появляется ничего!!Разъясните пожалуйста !! заранее благодарен

Дата отправки: 13.03.2008, 18:52
Вопрос задал: -andrey1984-
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Zetasm:

Здравствуйте, -andrey1984-!

Многие уроки по Ассемблеру (например, "Рассылка Калашникова") основаны на DOS-примерах в формате com.

Чтобы компилировать такие исходники, понадобятся:

Segmented Executable Linker (допустим v5.60.339)
ссылка

и ml.exe (обязательно младше 7-й версии).

Использовать линкер можно примерно с такой командной строкой:

LINK /TINY имя.obj,имя.com;

; - обрывает строку

ключ /TINY - определяет мини-модели, то есть обычный формат com-файла для DOS.
Для облегчения компиляции com-программ можно сделать следующее:
Переименовать Segmented Executable Linker LINK.EXE в LINKDOS.EXE
Поместить его в папку MASM32\BIN
Создать в той же папке файл BCOM.BAT с таким содержанием:

@echo off
if exist "%1.obj" del "%1.obj"
if exist "%1.exe" del "%1.ex e"
\masm32\bin\ml /c /AT "%1.asm"
if errorlevel 1 goto errasm
\masm32\bin\LINKDOS /TINY "%1.obj","%1.com";
if errorlevel 1 goto errlink
dir "%1.*"
goto TheEnd
:errlink
echo _
echo Link error
goto TheEnd
:errasm
echo _
echo Assembly Error
goto TheEnd
:TheEnd
pause

Линк по теме: http://bitfry.narod.ru/17.htm

Исправлена длинная ссылка.
-----
∙ Отредактировал: Николай Владимирович / Н.В. (Профессионал)
∙ Дата редактирования: 13.03.2008, 23:40

Консультировал: Zetasm
Дата отправки: 13.03.2008, 23:25
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное