Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Infa_ekzamen.doc
Скачиваний:
76
Добавлен:
09.06.2015
Размер:
2.16 Mб
Скачать

36.Адресация операндов,способы адресации,примеры команд с различными способами адресации.

Команда - цифровой двоичный код состоящий из 2 последовательностей 0 и 1. Одна из них определяет код операции, а вторая адреса операндов, участвующих в операции и место расположения результатов.

Процессор может работать с безадресными командами(1,2,3-адресами)

Одноадресные могут работать с операндами, размещенных в регистрах или памяти. Формат 2-х адресных команд м.б различен. Адрес состоит из 3 частей: <база>,<индекс>,<смещение>. Способы адресации: непосредственная, прямая, регистровая, косвенно-регистровая, адресация по базе, прямая с индексированием, по базе с индексированием.

1)регистровая: MOV AX,BX;(BX)->AX Машинный формат 1001001111000011; код операции:100100;d=1;w=1;mod=11;reg=000;r/m=011.

2)непосредственная: MOV AX,25; (25)->AX CONST EQU 34H; именнованая константа cosnt. MOV AX,CONST; (34H)->AX.

3)прямая: если известен адрес памяти, начиная с которого размещается операнд, то в команде можно его указать: MOV AX,ES:0001 .ES- регистр сегмента данных, 0001-смещение внутри сегмента. Содержание 2-х байт, начиная с адреса (ES)+0001 пересылаются в АХ- ((ES)+0001)->AX

4)Косвенно-регистровая: в регистре содержится адрес области памяти в которой операнд содержится: MOV AX,[SJ]; Могут использоватся: SI,DI,BX,BP,EAX,EBX,ECX,EDX,EBP,ESI,EDI. Не могут:AX,CX,DX,SP,ESP.

5)на базе со смещением: MOV AX,[BX]+2; ((DS)+(BX)+2)->AX MOV AX,[BP+4]; ((SS)+(BP)+4)->AX

6)прямая с индексированием: MOV,AX,MAS[SI]; ((DS)+(SI)+MAS)->AX MAS- адрес в области памяти для работы с массивами.

7)по базе с индексированием: MOV AX, Arr[BX][DJ]; ((DS)+(BX)+(DJ)+Arr)->AX

37.Структура программы на Ассемблере.Стандартные директивы сегментации.

Программа на Ассемблере состоит из 3-х сегментов:

;сегмент стека Sseg Segment …......... Sseg ends

;сегмент данных Dseg Segment.......... Dseg ends

;сегмент кода Cseg Segment ….......... Cseq ends

Каждый сегмент начинается директивой начала сегмента — Segment и заканчивается директивой конца Ends. Существует специальная директива,устанавливающая соответствие между сегментными регистрами и именами в директиве сегмент.

ASSUME SS:Sseg,DS:Dseg,CS:Cseg,ES:Dseg. Кодовый сегмент оформляется как процедура: Cseq Segment ASSUME SS:Sseg,DS:Dseq,CS:Cseg,CS:Dseg

Pr1 proc …./….. Pr2 proc …./…. Pr2 endp …./…. Pr1 endp Cseg ends.

В сегменте стека выделяется место под стек. В сегменте данных описываются данные, используемые в программе, выделяется место под промежуточные и окончательные результаты. Кодовый сегмент содержит программу решения задач.

;Prim1.ASM ;|сегмент стека Sseg Segment… DB256| DUP(?)| Sseg ends |

;сегмент данных Dseg Segment… X DB |‘A’ |Y DB ‘B’ Z DB ‘C’| Dseg Ends| Cseg Segment| ASSUME SS:Sseg, DS:Dseg. CS:Cseg| Start Proc FAR| Push DS/ Push AX / MOV DX,Dseg/ MOV| DS,DX |Call MAIN| Ret| Start endp| MAIN Proc Near| ADD Al,X| MOV AX,Y| ……../………..| Ret| Main endp| Cseg ends| End start|

38.Формат команды и директивы на Ассемблере.Примеры команд и директив.

Ассемблер — язык программирования низкого уровня => программа на нем должна пройти 3 этапа обработки.

Команда состоит из 4-х полей:

[<имя>[:]]<код операции>[<операнды>][;комментарии]

В [] - необязательные поля,имя - символическое имя ассемблера, используется в качестве метки для обращения к этой команде, передачи управления на команду.

[:] - метка внутренняя. Код операции определяет какое действие должен выполнить процессор.

Поле <операнды> содержит адреса данных или данные, участвующие в операции и местоположение результатов через “,”.

JMP M1: команда безусловной передачи на команду с меткой М1

M1: MOV AX,BX; пересылка содержимого регистра BX в регистр AX.

Директива: [<имя>]<код псевдо операции><операнды>[;коменты] Код псевдооперации определяет назначение директивы. Операндов мб различное кол-во и для одной директивы. M1 DB 1,0,1,0,1; директива DB определяет 5 байтов в памяти и заполняет их 0 или 1, причем адрес первого байта М1. M2 Dv ?,?,?; 3 байта ничем не заполнены, адрес первого М2. Proc; директива начала процедуры Endp; директива конца процедуры Segment; директива начала сегмента Ends директива конца сегмента.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]