Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Assembler] Перевод числа в строку, а затем вывод строки на экран 
:(
    Опции темы
Trishi
  Дата 5.5.2007, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Тут такое дело. Семестр уже к концу подходит, а ассемблер как был не понятен в начале, так и сейчас смутно с ним.  smile 
Вот задачка: "Задать целое число в регистре. Написать программу на ассемблере, которая преобразует данное число в текстовую строку (в десятичной системе) и выведет его на терминал. Число должно быть: целое 1 байт без знака." 
Если можно, напишите ее плиз, и с пояснениями, потому что разобраться все-таки хочется.   smile 
P.S. Теперь я тему правильно создала - надеюсь, кто-то поможет.

PM MAIL   Вверх
anwe
Дата 5.5.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

    .model  tiny
    .186
    .code
    org    100h
start:
    mov    dl,5    ;произвольное число
    add    dl,30h    ;код чисел начинается с 30h, то есть 30h - 0, значит 35h - 5, то есть надо добавить 30h
    mov    ah,02h    ;ДОСовская функция вывода, что находится в регистре dl символа на экран
    int    21h
    ret
end    start


Это сообщение отредактировал(а) anwe - 5.5.2007, 20:51
PM MAIL   Вверх
Trishi
Дата 5.5.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У меня при команде линк выдается ворнинг: no stack segment    и при запуске просто мигает и все.
PM MAIL   Вверх
anwe
Дата 5.5.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А как компилируешь. Это com-файл, не exe.
PM MAIL   Вверх
Trishi
Дата 5.5.2007, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну я сначала пишув мс-досе: "masm name.asm"
потом: "link name.obj"

А потом надо чтобы я его открыла и мне напечатало.
PM MAIL   Вверх
anwe
Дата 5.5.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тогда так:
Код

    .model  small
    .stack    10h
    .186
    .code
start:
    mov    dl,5    ;произвольное число
    add    dl,30h    ;код чисел начинается с 30h, то есть 30h - 0, 

значит 35h - 5, то есть надо добавить 30h
    mov    ah,02h    ;ДОСовская функция вывода, что находится в 

регистре dl символа на экран
    int    21h
    mov    ax,4C00h
    int    21h
end    start

Это ехе-файл.
PM MAIL   Вверх
JAPH
Дата 5.5.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



anwe
Код

mov  dl, 25

??

Код

cseg    segment
        assume  cs: cseg, ds: nothing, ss: sseg
@:      mov     al, 125
        aam
        mov     bh, al
        mov     al, ah
        aam
        mov     bl, al
        mov     dl, ah
        mov     ah, 02h
        add     dl, 30h
        add     bx, 3030h
        cmp     dl, 30h
        je      @1
        int     21h
        jmp     @2
@1:     cmp     bl, 30h
        je      @3
@2:     mov     dl, bl
        int     21h
@3:     mov     dl, bh
        int     21h
        mov     ax, 4C00h
        int     21h
cseg    ends
sseg    segment stack
        db      0400h dup (?)
sseg    ends
        end     @


Это сообщение отредактировал(а) JAPH - 5.5.2007, 21:46


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
Trishi
Дата 5.5.2007, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



И первый, и второй вариант просто мигают и все(((
PM MAIL   Вверх
anwe
Дата 5.5.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это для ДОСа не для винды.
PM MAIL   Вверх
Trishi
Дата 5.5.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А как для виндовса сделать?
PM MAIL   Вверх
anwe
Дата 5.5.2007, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ты определись для чего тебе надо. Если это только начало, то обычно для ДОСа, чтобы понять суть. Но ты определись.
PM MAIL   Вверх
Trishi
Дата 5.5.2007, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообще-то у нас это начало. Но для виндовс надо. Чтобы запустить на виндовсе и нормально открылось окно и там число напечатанное было.
PM MAIL   Вверх
anwe
Дата 5.5.2007, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Для винды - консоль или полноценное окно?
PM MAIL   Вверх
Trishi
Дата 5.5.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Самое простое - вот как типа в БорландС открывается. Это консоль, наверное, называется. Программу запускаешь - окно открывается, а потом энтер - и все.
PM MAIL   Вверх
anwe
Дата 5.5.2007, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не, давай так.
Это подойдет. См. прилашаемый файлик.
Запускаешь сенс ДОС и комстроке прописываешь -> получаешь  результат smile 

Присоединённый файл ( Кол-во скачиваний: 37 )
Присоединённый файл  PP.EXE 0,57 Kb
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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