Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
blaro
а ты установи точку внутри своей процедуры...

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 23:27 27-06-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а вообще лучше отлаживать интеррапты сначала как обычные процедуры прежде чем делать их интерраптами :)

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 01:55 28-06-2012
blaro



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
akaGM

Цитата:
а ты установи точку внутри своей процедуры...

Установил. Не помогает. Прога проходит дальше как будто это простая операция.

Цитата:
а вообще лучше отлаживать интеррапты сначала как обычные процедуры прежде чем делать их интерраптами

А по моему это не самое лучшее решение. Потому что в этом случае процедура может работать а интеррапт нет.
Я лучше выложу код который написал. Уже скажите мне что я неправильно сделал.
Краткое объяснение: процедура сначала печатает свою строку, а потом принимает через регист bx другую строку, копирует ее во внутреннюю строку самой процедуры, и печатает. Кста, печатает синие буквы на белом фоне.
isr90h


----------
Оптимистично смотрю на мир глазами убийцы.

Всего записей: 311 | Зарегистр. 29-01-2006 | Отправлено: 14:43 28-06-2012
pkbasu



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Эмм.. Я что-то не понял, а кто в обработчике прерываний будет предварительно каждый раз при новом вызове обработчика регистор DI устанавливать ? Или же его нужно только один раз проинициализировать, но и этого нет.
Куда указывает DI ?

Всего записей: 36 | Зарегистр. 18-06-2009 | Отправлено: 15:16 28-06-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
blaro

Цитата:
Потому что в этом случае процедура может работать а интеррапт нет

согласен...
но надо быть увереным, что что твоя инт-процедура работает...
 
я не знаю, что это за int90, какой-то юзерский что ли?
и как ты его "зовёшь"?

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 15:19 28-06-2012
blaro



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
akaGM

Цитата:
я не знаю, что это за int90, какой-то юзерский что ли?

Да.

Цитата:
и как ты его "зовёшь"?

Так и зову int 90h

----------
Оптимистично смотрю на мир глазами убийцы.

Всего записей: 311 | Зарегистр. 29-01-2006 | Отправлено: 15:50 28-06-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
blaro
ну так покажи...
 
кстати, пользовательским интам отведён диапазон 60-67, а 90 где-то для кого-то зарезервирован...

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 16:30 28-06-2012 | Исправлено: akaGM, 17:51 28-06-2012
blaro



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
 
.model small
.stack 64
.data
msg db "Hello ugly world$"
 
.code
start:
    mov ax,@data
    mov ds,ax
    lea bx,msg
    int 90h
    int 90h
    mov ah,4ch
    int 21h
end start
 

 
Добавлено:
akaGM

Цитата:
кстати, пользовательским интам отведён диапазон 60-67, а 90 где-то для кого-то зарезервирован...

Ну не знаю. В задании было написать для 90Н

----------
Оптимистично смотрю на мир глазами убийцы.

Всего записей: 311 | Зарегистр. 29-01-2006 | Отправлено: 18:15 28-06-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
blaro
прям так два раза? с первого не вызвалось :)
 
а в качестве isr что-нибудь примитивное (без регистров и вообще без ни фига), типа напечатать '*' в первом знакоместе b800 не пробовал?

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 18:22 28-06-2012
blaro



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
пробовал. печатает на ура

----------
Оптимистично смотрю на мир глазами убийцы.

Всего записей: 311 | Зарегистр. 29-01-2006 | Отправлено: 18:25 28-06-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну тогда разбирайся с регистрами, однозначно...
pusha/popa :) тебе в помощь...
 
наверняка при оформлении в виде отдельной процедуры
...
call isr90
call isr90
...
тоже сломается...

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 18:32 28-06-2012
Prober

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
blaro
Перед вызовом прерывания строка не просто в BX, а в DS:BX. А в обработчике один BX остался. Плюс при обработке прерываний принято все регистры восстанавливать перед выходом (понятно, кроме тех, которые что-то должны возвращать).

Всего записей: 681 | Зарегистр. 01-11-2006 | Отправлено: 18:40 28-06-2012
SevereK20

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят, а при использовании различных моделей памяти программный код будет сильно отличаться? мы в институте всегда плоскую использовали, в большинстве книг small...

Всего записей: 7699 | Зарегистр. 07-05-2010 | Отправлено: 22:43 05-07-2012 | Исправлено: SevereK20, 22:44 05-07-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SevereK20
tiny, small, medium, large, huge -- трудное наследие 16-битной жизни, в реальностии ты процентов на 99 с этим не столкнёшься...
flat -- 32-разрядная

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 23:29 05-07-2012
SevereK20

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
tiny, small, medium, large, huge -- трудное наследие 16-битной жизни, в реальностии ты процентов на 99 с этим не столкнёшься...
flat -- 32-разрядная

спасибо. но код отличаться сильно будет?  
в книгах в основном small...

Всего записей: 7699 | Зарегистр. 07-05-2010 | Отправлено: 23:31 05-07-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SevereK20
я не понимаю чего ты спрашиваешь? что такое отличия кода?
 
mov ax, 10
 
будет одинаково выглядеть и выполняться во всех моделях...
вообще, модель -- это способ адресации и организации данных/кода в памяти, связанных с сегментной организацией адресации 16-битного режима 8088/8086/80286

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 23:54 05-07-2012
Yvaliko

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SevereK20
Код отличатся не будет вообще.
Модель памяти указывается что бы компилятор знал какой формат ехешника ему собирать. Например в tiny нет сегмента данных.

Всего записей: 770 | Зарегистр. 13-05-2008 | Отправлено: 00:08 06-07-2012
SevereK20

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
все понял, спасибо.
значит то, что я видел в книгах - просто недоученное мною
Спасибо большое за разъяснения

Всего записей: 7699 | Зарегистр. 07-05-2010 | Отправлено: 00:26 06-07-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я вчера когда прочитал так и не нашелся с ходу что сказать.
 
tiny и small это отношение к памяти не имеет, это команды компилятору какой исполняемый файл  создавать. это COM файл, который еще можно было объявит так
 
CSEG segment
assume cs:CSEG
org 100h
Begin:
 
ret
CSEG ends
end Begin
 
что тоже самое
 
.model tiny
.code
org 100h
start:
 
end start
 
а может быть еще EXE. COM файл начинается с служебного заголовка 100h (256 байт) из PSP командной строки и занимает один сегмент 64 кбайта.
 
а к типу памяти скорее вот это команда компилятору имеетт
 
.model flat, stdcall

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 06:59 06-07-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
.model tiny ;на всё про всё один сегмент
.model small ;один сегмент данных/стека и один кода
.model medium ;один сегмент данных и сколько угодно сегментов кода
.model compact ;один код и много данных
.model large ;много кода и много данный и всё 1МБ и каждый struct может занимать свой сегмент
.model huge ;как large и всё ограничено только набортной памятью
.model flat ;как tiny, но для 32-разрядной адресации

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 11:53 06-07-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru