Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2012, 01:12   #1
Robson_
Новичок
Джуниор
 
Регистрация: 20.02.2012
Сообщений: 2
По умолчанию Изучение Ассемблера

Я начал изучение Ассемблера, до этого никогда не программировал. Изучение начал с прочтения книги Калашникова "Ассемблер? это просто..."
По ходу прочтения первой книги появляются вопросы. В этой теме я хотел бы консультироваться у знающих людей, по поводу моих трудностей.

Сразу начну с вопроса:
В книге написано:
Код:
(01) CSEG segment
(02) org 100h
(03) _beg:
(04)	mov ax,0B800h
(05)	mov es,ax
(06)	mov di,0
(07)
(08)	mov ah,31
(09)	mov al,1
(10)	mov es:[di],ax
(11)
(12)	mov ah,10h
(13)	int 16h
(14)
(15)	int 20h
(16)
(17) CSEG ends
(18) end _beg
....
В строке (06) загружаем в регистр DI нуль. Это будет смещение относительно сегмента 0B800h...
....

Я правильно понял, что DI отвечает за место положения моего граф. объекта. Т.е. если я пропишу DI 1, то мой граф. объект перейдет на след символ? Но прописав mov di,01h я получил перемещение на один символ, но рожица пропала и появился указатель (стрелка, направленная вниз). Я несколько раз перечитывал, что я не так делаю?

Последний раз редактировалось Stilet; 20.02.2012 в 08:12.
Robson_ вне форума Ответить с цитированием
Старый 20.02.2012, 08:19   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

попробуйте смещение на два делать - если мне память не изменяет, там каждый символ на экране представлен словом.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 20.02.2012, 08:20   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В строке (06) загружаем в регистр DI нуль. Это будет смещение относительно сегмента 0B800h...
Судя по программе - да.
Цитата:
Т.е. если я пропишу DI 1, то мой граф. объект перейдет на след символ?
Графический??? Может быть символьный? Или даже псевдографический?.
Видеопамять в текстовом режиме устроена из массива двубайтных элементов - первый байт код символа второй стиль (цвет и фон, бликование...). Инструкция mov di,01h перескочит тебе на ячейку где будет указан стиль первого символа экрана, но эта инструкция не повлияет на изменения на экране.
А вот инструкция mov es:[di],ax после этой запишет в видеопамять стиль первого символа.
Почитай книги Питера Нортона, он классно о ЭВМ писал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.02.2012, 11:09   #4
Robson_
Новичок
Джуниор
 
Регистрация: 20.02.2012
Сообщений: 2
По умолчанию

Спасибо, я въехал в тему Т.е. что бы переместить изображение на 1 символ, нужно DI задать 2, если на 2, то 4 и т.д.
Robson_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код ассемблера MaRtOvSkiI_KoT Помощь студентам 3 20.10.2011 17:25
Вставка ассемблера в Си Влодимир Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 18.02.2011 05:05
Изучение ассемблера, начало Lich Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 18.06.2008 14:16
вставки из ассемблера макс07 Общие вопросы C/C++ 7 13.05.2008 19:19
Сравнение Си и Ассемблера... Sota Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 25.07.2007 16:15