![]() |
|
![]() ![]() ![]() |
|
BCworm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Привет всем Я только начал изучать ассемблер. Возникла вот такая проблема вызванная как обчно отсутствием нормальной литературы. Это программка должна выполнять простенькое сложение переменной в памяти и конастаны типа слово. Я пытался сделать так чтобы сначало вывелась строка What is it Затем мне нужно чтобы выводились значения переменных x1 x2. а после результат их сложения Написав просто MOV DX,OFFSET X1 я естественно полчил абзац крякозблов с очень недвусмысленными намеками что такие фокусы не проходят. Как не искал литературу как выводить бональные значения переменных везде натыкался то на программу Hello то на программу Привет и т.д. Вот к примеру я запихнул Х1 в Al а Х2 в Bl а что дальше. В книгах все та же ситуация. Куча примеров как прибавить 1+1 но что дальше с этим делать,как вывести результат на экран. Та же ситуация с константами - везде про них написано но нигде нет нормального примера чтоб просто посмотреть синтаксис о выводе на экран я уже молчу. Вот и развлекаюсь тем что вывожу разные текстовые сообщения на экран а то что мне нужно вывести не могу. Я уже и для начинающих книжки читал, и для чайников, а вот для даунов пока не нашел. Может кто объяснит как? 1. Взять любую подходящую переменную 2. Сложить её с константой типа слово 3. Вывести на экран значения переменных 4. Вывести на экран сумму
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Loginanton |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 8.11.2007 Репутация: нет Всего: нет |
Здраствуйте. Подскажите пожалуйста в какой регист надо записывать инфу, чтоб по команде int 021 она вывелась на экран?
|
|||
|
||||
QueueZip |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 29.8.2007 Репутация: нет Всего: нет |
Можно подобный пример под линукс (nasm)?
Это сообщение отредактировал(а) QueueZip - 22.2.2008, 20:17 |
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 8 Всего: 23 |
||||
|
||||
Loginanton |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 8.11.2007 Репутация: нет Всего: нет |
anwe спасибо! Ща попробую
![]() Это сообщение отредактировал(а) Loginanton - 23.2.2008, 10:40 |
|||
|
||||
Loginanton |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 8.11.2007 Репутация: нет Всего: нет |
Обьясните пожалуйста мне.
Вот код проги:
Писал я её в hiew32, это ком - программа (*.com) Так вот, вместо того чтоб выводить в дос-окне число 45 и ждать нажатия клавиши, она выводит кракозяблы и ждёт нажатия ![]() |
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 8 Всего: 23 |
Если тебе надо вывести символ, то используется, кажется, функция 2 ДОС (точно не помню). И тогда в dl заносится код символа:
|
|||
|
||||
Loginanton |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 8.11.2007 Репутация: нет Всего: нет |
Вот пример проги(опять же ком-прога):
Прога правда сложная довольно, но тут тоже выводится текст. Так вот тут такого как ты говоришь нету) Вот такой вопрос: а в ассемблере ваще можно так сделать чтоб какому то регистру присвоить какую то инфу и потом её через прерывание биос вывести? |
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 8 Всего: 23 |
С начала Вы писали про int 21h, а это ДОС'овское прерывание. Вот пример его использования (Ваш синтаксис мне не известен, это, наврено, fasm?) для masm'а, смысл понять можно:
Если же то почитайте про int 10h. Она выводит и отдельные символы и строки символов. Но и там если выводится символ, то надо поместить его код в регистр al, если строка - то ее адрес. |
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
пиши прямо в видеобуфер, он находится по адресу [0B800h:0000h]..
формат данных - [<byte ascii_symbol><byte color>][<byte ascii_symbol><byte color>] и т.д. пока страница не закончится (размер страницы 4000 байт (25*80*2)).. тебе будут доступны 4 видеостраницы, которые можно переключать.. эх, какие были времена.. -------------------- undefined |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |