Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со структурами данных и функциями, Вывести на экран. 
:(
    Опции темы
zall
Дата 1.3.2010, 13:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Программе задается 1 параметр. Вывести его на экран. Дело в том что мы только начали ассемблер лектор болеет а лабораторные сдавать надо, помогите пожалуйста с программой и посоветуйте книгу по которой можно разобраться в самом начале. программу же буду использывать чтобы отталкиваться в дальнейшем))
PM MAIL   Вверх
iff
Дата 1.3.2010, 17:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Что значит задается один параметр?
иы имеешь в виду когда вводится команда (в COMMAND.COM или CMD.EXE), то выводится следующее:
Код

C:\>progname hello
hello
C:\>_

Т.е. что-то вроде echo?

Если да, то смотри: в PSP (префиксе сегмента программы) по адресу ds:80h нранятся данные об аргументах вызова программы. а именно так: 
80h - в этой ячейки храниться длина аргумента, в нашем случае если аргумент hello, то в этой ячейки будет 06h (на один больше, чем на самом деле, видимо из-за пробела перед аргументом)
81h - здесь храниться пробел (20h), посмотрите ведь межлу аргументом и именем программы напечатан пробел
82h - от сюдаго начинается сам аргумент (в нашем случае это строка 'hello', 0dh; в конце 0dh, потому что мы при вводе команды в конце нажали Enter.
  
Программа выводящая параметр на экран будет такая:
Код

        .model  tiny                            ;Программа типа COM
        .code
        org     100h
main:
        mov     byte ptr bl, ds:[80h]           ;В bx - длину аргумента
        mov     word ptr [bx+82h], 240ah        ;За строкой поставим символы 0D0A (перевод строки, причем 0D уже содержится, и $ для завершения вывода
        mov     dx, 82h                         ;Выводи строку при помощи функции 09h прерывания 21h
        mov     ah, 09h
        int     21h
        ret                                     ;Завершить работу
end     main


Я использую компилятор TASM5 и компилирую командой:
Код

tasm progname.asm
tlink progname.obj /t

для создания программы типа COM. Размером получился 17 байт.


Это сообщение отредактировал(а) iff - 18.4.2010, 19:43


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
zall
Дата 1.3.2010, 18:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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