АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Лабораторная работа № 3

Читайте также:
  1. A. Самостоятельная работа.
  2. AKM Работа с цепочками событий
  3. File — единственный объект в java.io, который работает непосредственно с дисковыми файлами.
  4. III. ВЛИЯНИЕ ФАКТОРОВ РАБОЧЕЙ СРЕДЫ НА СОСТОЯНИЕ ЗДОРОВЬЯ РАБОТАЮЩИХ.
  5. III. Третий этап – Работа банка с кредитной заявкой клиента с целью оценки его кредитоспособности.
  6. IV. Практическая работа
  7. S:Статистические методы анализа качества разработаны как
  8. VI. Работа сновидения
  9. VIII. Работа над задачей
  10. А) Работа сгущения.
  11. Административная контрольная работа по дисциплине
  12. АУДИТОР, РАБОТАЮЩИЙ САМОСТОЯТЕЛЬНО

”Исследование процесса ввода информации в память ПЭВМ с помощью командной строки”

В данной работе необходимо составить программу, которая выполняет следующие действия. В область сегмента данных вводятся несколько символов клавиатуры, набираемых в командной строке. После ввода символов в память на монитор с новой строки выводится сообщение: ’Ввод символов клавиатуры в память ЭВМ с помощью командной строки’, составленное на английском языке. Затем введённые символы с новой строки выводятся на экран монитора. Внимание! В этом случае вначале имя файла с исполняемой программой (.exe файла) набирается в командной строке, затем в ней набираются символы клавиатуры, и только после этого нажимается клавиша Enter для выполнения программы. Например, после имени файла lab_2.exe можно напечатать предложение:,’I am learning ASSEMBLER’, которое вводится в память после нажатия клавиши Enter.

Дополнительная информация для составления программы по данному заданию.

Напомним, что после нажатия клавиши Enter набранные в командной строке символы клавиатуры запишутся в префикс программного сегмента, начиная с ячейки памяти под номером 81h. В ячейке 80h будет сформировано число, отражающее количество конкретно введенных символов в префикс программного сегмента. Следовательно, первое что нужно сделать в кодовом сегменте программы, это передать введённые символы из PSP в сегмент данных. Для этого в области.data заранее формируется буфер, объёмом не более 255 байт, так как в префикс программного сегмента большее количество символов записать нельзя. Весь этот буфер предварительно заполняется символами ’$’ – окончание вывода.

Для перезаписи введённых символов в этот буфер в кодовом сегменте программы оператором offset необходимо занести начальный адрес буфера в индексный регистр si. Тогда на этот адрес будет указывать пара регистров ds:[si]. Напомним, что здесь квадратные скобки означают, что в Вашей программе должна использоваться косвенная адресация при перезаписи указанных символов в сегмент данных. Для задания адреса символа в области PSP также необходимо использовать пару регистров es:[di]. При этом в индексный регистр di предварительно заносится начальный адрес массива символов в PSP – 81h с помощью команды mov di,81h. Как было отмечено раннее, вначале программы сегментные регистры es и ds настроены на начало PSP, но после первых двух обязательных команд программы

 

mov ax,@data

и

Mov ds,ax

 

регистр ds настраивается на область данных.data, а регистр es всё ещё будет указывать на начало PSP. Отметим, что непосредственно передовать информацию из одной области памяти в другую нельзя. Передача байтов может происходить только через аккумулятор al, то есть очередной байт из PSP вначале передаётся в аккумулятор, а затем уже в сегмент данных. Эту передачу всех символов необходимо организовать циклически с использованием регистра cx и команды loopnz метка. Для этого в регистр cx, а точнее в cl нужно передать содержимое ячейки 80h префикса программного сегмента, а старшую половину регистра – ch – обнулить. Отметим, что обнулить любой регистр, также как и ячейку памяти можно командой xor - ’исключающее ИЛИ’, например, xor cx,cx, а передачу содержимого ячейки – командой mov al,es:[80h]. Таким образом, только после перезаписи введенных символов в сегмент данных, а именно в отведённый для этих целей буфер, осуществляется вывод на экран монитора заданного сообщения и затем с новой строки вывод самих введённых символов клавиатуры.

 

Контрольные вопросы

1.Что такое PSP, где он располагается и для каких целей используется?

2.В какую область PSP вводятся данные из командной строки?

3.В какую ячейку памяти PSP записывается число реально введённых в него символов клавиатуры и какое максимальное значение оно может иметь?

4.Сколько байт отводится в ASCII – коде под каждый символ клавиатуры?

5.На какую область памяти указывают сегментные регистры ds и es в начале выполнения программы?

6.На какие области памяти будут указывать регистры ds и es после выполнения команд программы mov ax,@data и mov ds,ax?

7.Что такое стек и какие команды используются при работе с ним?

8.Каким способом можно быстро настроить сегментный регистр es на область данных, если регистр ds уже на неё настроен?

9.Как осуществляется передача данных из одной области памяти в другую?

10.Нужно – ли при использовании ввода данных память с помощью командной строки организовывать буфер для ввода?

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)