- •Исследование процессов ввода/вывода информации и системы команд микропроцессоров семесйства intel 80×i86
- •Введение
- •1.Цель работ
- •2.1. Архитектура микропроцессора Intel 8086.
- •2.2. Адресация памяти и данных.
- •2.3. Синтаксис операндов языка assembler
- •2.4. Команды передачи данных.
- •Mov ax,segment
- •3) Mov [bx],dx переслать (dx) в ячейку адресованную (вх)
- •Mov al,es:[si]; ds заменен на es
- •Команды lea, lds, les.
- •Lea reg, memr
- •Команда xchg
- •Стековые команды push и рор
- •2.5 Префикс программного сегмента (psp)
- •2.6 Арифметические команды
- •Команды сложения и вычитания
- •0015 65А0
- •0037 1D3e
- •0004 В837
- •0001 F0f8
- •Команды расширения знака.
- •Команды inc, dec, neg, cmp.
- •Команды двоичного умножения и деления.
- •Дополнительные сведения.
- •2.7 Основные правила при разработке программ на языке assembler.
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •3. Лабораторные работы
- •Контрольные вопросы
- •Лабораторная работа № 2
- •Контрольные вопросы
- •Лабораторная работа № 3
- •Дополнительная информация для составления программы по данному заданию.
- •Лабораторная работа № 4
- •Контрольные вопросы
- •Лабораторная работа № 5
- •Контрольные вопросы
- •Лабораторная работа № 6
- •Контрольные вопросы
- •Лабораторная работа № 7
- •Рекомендации по выполнению лабораторной работы.
- •4.1. Тексты подпрограмм вывода на экран.
- •Int 21h
- •Int 21h
- •Контрольные вопросы
- •Лабораторная работа № 8
- •Контрольные вопросы
- •Лабораторная работа № 9
- •Контрольные вопросы
- •Лабораторная работа № 10
- •Контрольные вопросы
- •Контрольные вопросы
- •Лабораторная работа № 14
- •Контрольные вопросы
- •6. Требования к отчетам
- •7. Библиографический список
3. Лабораторные работы
Лабораторная работа № 1
”Исследование процесса вывода текстовой информации из памяти ПЭВМ” на экран монитора”.
Задание № 1
Набрать приведённый выше текст программы, заменив в нем выводимое сообщение ’ASSEMBLER’ на предложение ’Я изучаю ассемблер’, составленное на английском языке, получить исполняемый файл с расширением exe, запустить его и посмотреть результат работы программы, то есть выполнить практически все выше рассмотренные этапы разработки и исполнения ассемблерной программы.
Задание № 2
Так как результат работы выполненной программы мгновенно исчезает с экрана монитора и его можно наблюдать только после нажатия клавиш Ctrl – o, в предыдущую программу перед выполнением команд:
mov ax,4c00h
Int 21h
необходимо ввести временную задержку для устранения этого недостатка.
Временную задержку можно организовать на основе использования регистров блока РОН. Например, в какой-то регистр загружается определённое число. Затем из содержимого этого регистра вычитается единица и проверяется его содержимое на ноль. Если его содержимое не равно нулю, то опять вычитается единица и т. д., пока в этом регистре не окажется ноль. Таким образом, на время вычитания единицы и будет происходить временная задержка в дальнейшем выполнении программы, то есть в её завершении и выходе в операционную систему DOS. Для вычитания единицы из содержимого регистра используется команда dec имя регистра, а для прибавления единицы – inc имя регистра, например:
dec bx
inc si
Проверку содержимого регистра на ноль осуществляют, используя так называемый z – бит, который устанавливается в единицу при нулевом содержимом регистра после выполнения некоторых операций, в частности команды dec. Для этого могут использоваться две команды условных переходов:
jz метка
или
jnz метка
Первая команда обеспечивает переход на метку при нулевом содержимом регистра, то есть при z=1, а вторая – при z=0, когда содержимое регистра не равно нулю. Для автоматической организации операции вычитания, проверки содержимого на ноль и условного перехода по нулю (либо не по нулю) в рассматриваемых микропроцессорах используются регистр cx, который предварительно загружается определённой константой. После этого в программе могут использоваться команды:
loop метка
loopz метка
loopnz метка
Первая команда обеспечивает переход при нулевом содержимом регистра cx, вторая – при (cx)=0 и z=1, третья – при (cx)≠0 и z=0.
Таким образом, с учётом изложенного выше, сформируйте задержку в исходной программе перед её выходом в DOS. Вначале используйте только регистр cx. Если задержка окажется недостаточной, то используйте дополнительный регистр из блока РОН, например bx, и команды dec и jnz ,то есть организуйте цикл в цикле.