готовая печатка. 1. Техника безопасности 5 Изучение требования безопасности на рабочем месте 7
![]()
|
37. Форматирование вывода и команды передачи управления.Команды ввода-вывода Микропроцессор может передавать данные в порты ввода-вывода, которые поддерживаются аппаратно и используют соответствующие своим предназначениям линии ввода-вывода процессора. Аппаратное адресное пространство ввода-вывода процессора не является физическим адресным пространством памяти (таблица 1). Таблица 1 Команды ввода вывода ![]() При описании формата команд передачи управления на языке ассемблера будут использоваться следующие условные обозначения: -op – мнемоника инструкции (например «b», «bl»); -{} – фигурные скобки; указывают, что содержащееся в них выражение не является обязательным и может быть опущено; -{cond} – необязательный предикативный суффикс для реализации условного выполнения команды перехода (подробнее см. п. 2); -label – метка в тексте программы; -Rm – регистр, содержащий адрес, по которому будет сделан переход. 5.2Форматы записи команд передачи управленияВыполнение большинства команд, например таких, как в листинге 3, происходит последовательно (сверху вниз по тексту). Выполнив одну команду процессор переходит на следующую. Однако на практике часто встречаются ситуации, когда требуется прервать такое последовательное выполнение и сразу перейти по некоторому известному адресу в памяти. Команды, которые позволяют осуществить такой переход, называются командами перехода или командами передачи управления. Различные виды команд передачи управления представлены в табл. 6. Для большинства команд передачи управления допускается использование предикативных суффиксов (т. е. с выполнением при соблюдении определённого условия), что позволяет реализовать условные переходы (таблица 2). Таблица 2 - Виды команд передачи управления
38. Многозадачный режим с управлением от клавиатуры.В многозадачной системе должна быть предусмотрена возможность переключения с задачи на задачу по каким-либо событиям, например, истечению заданного кванта времени или командам с клавиатуры. Чтобы реализовать режим многозадачности с управлением с клавиатуры на языке ассемблера, вам нужно будет использовать эти механизмы для создания задач или потоков и для обработки ввода с клавиатуры. Ниже приведен пример программы на языке ассемблера x86 (с использованием синтаксиса NASM), которая реализует режим многозадачности с помощью управления с помощью прерываний и обработки исключений: section .data task1 db "Task 1 running", 10 task1_len equ $ - task1 task2 db "Task 2 running", 10 task2_len equ $ - task2 key_a db "Key 'a' pressed", 10 key_a_len equ $ - key_a key_b db "Key 'b' pressed", 10 key_b_len equ $ - key_b section .text global _start _start: ; Initialize the multitasking system mov eax, 0x5A5A5A5A mov [multitasking_initialized], eax multitasking: ; Check if the 'a' key is pressed mov al, [0x60] cmp al, 0x1E je key_a_pressed ; Check if the 'b' key is pressed mov al, [0x60] cmp al, 0x30 je key_b_pressed ; Run task 1 mov eax, 4 ; System call number for write mov ebx, 1 ; File descriptor (1 = stdout) mov ecx, task1 ; Address of the task1 string mov edx, task1_len ; Length of the string int 0x80 ; Invoke the kernel ; Run task 2 mov eax, 4 ; System call number for write mov ebx, 1 ; File descriptor (1 = stdout) mov ecx, task2 ; Address of the task2 string mov edx, task2_len ; Length of the string int 0x80 ; Invoke the kernel jmp multitasking key_a_pressed: ; Handle key 'a' press mov eax, 4 ; System call number for write mov ebx, 1 ; File descriptor (1 = stdout) mov ecx, key_a ; Address of the key_a string mov edx, key_a |