GNU Эмулятор данные и переходы

Содержание

Слайд 2

Безусловный переход

Команда безусловного перехода позволяет передавать управление по определенному адресу, который представляет

Безусловный переход Команда безусловного перехода позволяет передавать управление по определенному адресу, который
собой метку на которую передается управление.
Формат команды:
JMP label_name

JMP my_addr
;команды
my_addr:
;команда на которую выполняется переход

Слайд 3

Безусловный переход

Команда JMP используется при разработке программ, содержащих таблицу данных.
Такая таблица

Безусловный переход Команда JMP используется при разработке программ, содержащих таблицу данных. Такая
данных создается с помощью директивы DB code
Каждая директива определяет байт или последовательность байтов.

Слайд 4

Байты кодов данных

;Пример байтов
DB “A”
DB “HELLO WORLD!”

Упражнение №1, Откомпилируйте и выполните программу

Байты кодов данных ;Пример байтов DB “A” DB “HELLO WORLD!” Упражнение №1,
symbols.asm

Слайд 5

Условный переход

Процессор выполняет команду условного перехода в зависимости от значений битов регистра

Условный переход Процессор выполняет команду условного перехода в зависимости от значений битов
состояния SR.
Для организации цикла можно использовать бит “Z” ,этот бит фиксирует состояние получения нуля (zero) при выполнении команды процессора (Z=1).

Слайд 6

Компаратор

Сравнение кодов
команда CMP –компаратор.
Формат команды:
CMP A1,A2
Схема работы команды:
RES=A1-A2

Правила использования команды:
CMP

Компаратор Сравнение кодов команда CMP –компаратор. Формат команды: CMP A1,A2 Схема работы
R1,R2
CMP R,n
CMP R,[Addr]
Здесь R1,R2,R – регистры процессора, Addr – адрес оперативной памяти.

Слайд 7

Команды условного перехода

Для отслеживания состояния бита Z служат две команды ассемблера:
JZ my_label

Команды условного перехода Для отслеживания состояния бита Z служат две команды ассемблера:
;Z=1
JNZ my_label; Z=0

Упражнение №2. Откомпилируйте и выполните программу
putsymbols.asm

Слайд 8

Инкремент и декремент

Для увеличения счетчика шагов в примере использована команда ассемблера INC

Инкремент и декремент Для увеличения счетчика шагов в примере использована команда ассемблера
R. Она увеличивает значение регистра R на единицу. В программе использован регистр CL в качестве счетчика. Можно использовать любой свободный регистр.
Заметим, что процессор поддерживает также команду DEC R, которая уменьшает значение регистра R на единицу.

Слайд 9

Цикл, команда DEC

MOV CL,n ;Число итераций цикла
go:
;Команды цикла
DEC CL ;Уменьшить

Цикл, команда DEC MOV CL,n ;Число итераций цикла go: ;Команды цикла DEC
CL
JNZ go ;Нет, бит Z=0
;Да, цикл закончен, бит Z=1

Слайд 10

Задания

Контрольное задание 1. Создайте программу words.asm с таблицей данных из двух строк

Задания Контрольное задание 1. Создайте программу words.asm с таблицей данных из двух
“TEST” и “OK!” .
Выведите эти строки. Так, как это показано на рисунке.

Слайд 11

Задания

Контрольное задание 2. Создайте на основе программы putsymbols.asm программу putsymbols2.asm вывода строки

Задания Контрольное задание 2. Создайте на основе программы putsymbols.asm программу putsymbols2.asm вывода
в видеопамять, программируя цикл с использованием команд DEC и JNZ.

Слайд 12

Задания

Контрольное задание 3. Создайте на основе программы putsymbols.asm программу putsymbols3.asm вывода строки

Задания Контрольное задание 3. Создайте на основе программы putsymbols.asm программу putsymbols3.asm вывода
в видеопамять.
Занесите число итераций – шагов цикла в регистр BL перед выполнением цикла.
Внесите изменения в тело цикла, что бы команда CMP CL,BL выполнялась верно.
Методическое указание: используйте стек для сохранения числа итераций.

Слайд 13

Задания

Контрольное задание 4.
На основе программы putsymbols.asm создайте программу putsymbols4.asm вывода

Задания Контрольное задание 4. На основе программы putsymbols.asm создайте программу putsymbols4.asm вывода
строки в видеопамять так, что бы цикл перебора символов работал бы не по количеству символов, а по кодам символов.
Выход из цикла выполняется после вывода символа «G».