Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод на экран. Как им овладеть 
:(
    Опции темы
BCworm
Дата 24.1.2008, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 23.8.2007

Репутация: нет
Всего: нет




Привет всем

Я только начал изучать ассемблер. Возникла вот такая проблема вызванная
как обчно отсутствием нормальной литературы. 
Это программка должна выполнять простенькое сложение
переменной в памяти и конастаны типа слово. 
Я пытался сделать так чтобы сначало вывелась строка What is it
Затем мне нужно чтобы выводились значения переменных x1 x2. а после результат их сложения
Написав просто MOV    DX,OFFSET X1 я естественно полчил абзац крякозблов с очень недвусмысленными намеками
что такие фокусы не проходят. Как не искал литературу как выводить бональные значения переменных
везде натыкался то на программу Hello то на программу Привет и т.д. 
Вот к примеру я запихнул Х1 в Al а Х2 в Bl а что дальше. В книгах все та же ситуация. Куча примеров
как прибавить 1+1 но что дальше с этим делать,как вывести результат
на экран. Та же ситуация с константами - везде про них написано но нигде нет нормального примера чтоб просто посмотреть синтаксис о выводе на экран я уже молчу. Вот и развлекаюсь тем что вывожу разные текстовые сообщения
на экран а то что мне нужно вывести не могу. Я уже и для начинающих книжки читал, и для чайников, а вот для даунов пока не нашел.

Может кто объяснит как?
1. Взять любую подходящую переменную
2. Сложить её с константой типа слово
3. Вывести на экран значения переменных
4. Вывести на экран сумму

Код

Data     SEGMENT
Greet    DB    'What is it',13,10,'$'
a1     DB    24d
b2     DB    32d
Data     ENDS
Stacksg  SEGMENT     'Stack'
DB 100H DUP(?)            ;стек размером 256 байтов.
Stacksg     ENDS

ASSUME      CS:Code, DS:Data, SS:Stacksg

     Code      SEGMENT
BEGIN:

MOV    AX,DATA            ; загрузка номера сегмента
MOV    DS,AX            ; в регистр DS.
MOV    DX,OFFSET Greet        ; загрузка в DX адреса симв. строки.
MOV    AH,9            ; задание функции вывода строки.    (4)
INT    21H            ; вывод строки.                (5)
MOV    AL,X1
MOV    BL,X2
ADD    Al,BL
MOV    DX,OFFSET X1        ; загрузка в DX адреса симв. строки.
INT    21H




MOV    AL,0            ; завершение программы через        (6)
MOV    AH,4CH            ; системную функцию возврата        (7)
INT    21H            ; в диспетчер MS DOS.            (8)
     Code     ENDS
     END      BEGIN        ;адрес начала программы.

PM MAIL   Вверх
MAKCim
Дата 24.1.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Код
              
    MOV    AL, X1
    ADD    AL, X2
    XOR    CX, CX
    MOV    DL, 10
START:
    XOR    AH, AH
    DIV    DL
    PUSH    AX
    INC    CX
    TEST    AL, AL
    JNZ    START
    MOV    AH, 2
OUTPUT:
    POP    DX
    ADD    DL, 48
    INT    21H
    DEC    CX
    JNZ    OUTPUT



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Loginanton
Дата 22.2.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Здраствуйте. Подскажите пожалуйста в какой регист надо записывать инфу, чтоб по команде int   021 она вывелась на экран?
PM   Вверх
QueueZip
Дата 22.2.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 29.8.2007

Репутация: нет
Всего: нет



Можно подобный пример под линукс (nasm)?



Это сообщение отредактировал(а) QueueZip - 22.2.2008, 20:17
PM MAIL   Вверх
anwe
Дата 22.2.2008, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Цитата(Loginanton @  22.2.2008,  15:03 Найти цитируемый пост)
надо записывать инфу

в dx. Но саму ее, а адресее (первого байта)
PM MAIL   Вверх
Loginanton
Дата 23.2.2008, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



anwe спасибо! Ща попробую  smile 

Это сообщение отредактировал(а) Loginanton - 23.2.2008, 10:40
PM   Вверх
Loginanton
  Дата 23.2.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Обьясните пожалуйста мне.
Вот код проги:
Код

mov bx,00133
mov d,[bx],000003435
mov dx,bx
mov ah,009
int 021
mov ah,010
int 016
int 020

Писал я её в hiew32, это ком - программа (*.com)
Так вот, вместо того чтоб выводить в дос-окне число 45 и ждать нажатия клавиши, она выводит кракозяблы и ждёт нажатия smile Пожалуйста гляньте код и подскажите что не так.
PM   Вверх
anwe
Дата 23.2.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Если тебе надо вывести символ, то используется, кажется, функция 2 ДОС (точно не помню). И тогда в dl заносится код символа:
Код

mov ah,2;кажется
mov dl 34
int 21h

PM MAIL   Вверх
Loginanton
Дата 23.2.2008, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Вот пример проги(опять же ком-прога):
Код

mov     bx,00133         ;" 3"
mov     d,[bx],004030201 ;"    "
add     d,[bx],030303030 ;"0000"
mov     dx,bx
mov     ah,009           ;"    "
int     021
mov     ah,010           ;"    "
int     016
mov     d,[bx],050505050 ;"PPPP"
sub     d,[bx],018191A1B ;"    "
mov     ah,009           ;"    "
int     021
mov     ah,010           ;"    "
int     016
int     020
add     [bx][si],al
add     [bx][si],al
and     al,000

Прога правда сложная довольно, но тут тоже выводится текст. Так вот тут такого как ты говоришь нету)
Вот такой вопрос: а в ассемблере ваще можно так сделать чтоб какому то регистру присвоить какую то инфу и потом её через прерывание биос вывести?
PM   Вверх
anwe
Дата 23.2.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



С начала Вы писали про int 21h, а это ДОС'овское прерывание. Вот пример его использования (Ваш синтаксис мне не известен, это, наврено, fasm?) для masm'а, смысл понять можно:
Код

mov ah,9
mov dx,offset info
int 21h
ret
info db 'info$'

Если же 
Цитата(Loginanton @  23.2.2008,  13:15 Найти цитируемый пост)
через прерывание биос вывести

то почитайте про int 10h. Она выводит и отдельные символы и строки символов. Но и там если выводится символ, то надо поместить его код в регистр al, если строка - то ее адрес.
PM MAIL   Вверх
fish9370
Дата 27.2.2008, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: нет
Всего: 1



пиши прямо в видеобуфер, он находится по адресу [0B800h:0000h].. 
формат данных - [<byte ascii_symbol><byte color>][<byte ascii_symbol><byte color>] и т.д. пока страница не закончится (размер страницы 4000 байт (25*80*2))..
тебе будут доступны 4 видеостраницы, которые можно переключать..

эх, какие были времена..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.1342 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.