Циклический сдвиг влево (rotate left): ROL op,1

Циклический сдвиг вправо (rotate right): ROR op,1

Примеры:

MOV CL,11000011b

ROL CL,1; CF=1; BH=10000111b

MOV BH,11100010b

ROR BH,1; BH=01110001b; CF=0

Например, поменять местами правую и левую половины регистра AL можно циклическим сдвигом этого байта на 4 разряда влево (или вправо):

MOV AL,17h; AL=00010111b

MOV CL,4

ROL AL,CL; AL=01110001b=71h

Циклический сдвиг влево через перенос (rotate left through carry):

RCL op,1

Циклический сдвиг вправо через перенос (rotate right through carry):

RCR op,1

Примеры:

MOV ВL,11110000b; пусть CF=0

RСL ВL,1; CF=1; ВL=11100000b

RСL ВL,1; CF=1; ВL=11000001b

Стек и сегмент стека

Стек – это область оперативной памяти, доступ к которой осуществляется по принципу LIFO (Last In First Out (последним зашел – первым вышел) – элемент, записанный в стек последним, считывается из него первым).

Для стека можно отвести любую область памяти, однако ее размер не должен превышать 64 Кб и ее начальный адрес должен быть кратным 16. Эту область называют сегментом стека (рис. 1).

Рис. 1. Сегмент стека

Описание сегмента стека в программе на языке ассемблера:

S SEGMENT STACK

DB k DUP (?)

S ENDS

Стековые команды

Запись и чтение слов


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: