Инструкция ADC


Лучшие книги по Ассемблеру Лучшие книги по Ассемблеру

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

Инструкция ADC в Ассемблере выполняет сложение с переносом. Синтаксис:

ADC ЧИСЛО1, ЧИСЛО2

Флаги изменяются в зависимости от итога выполнения команды.

Алгоритм работы команды ADC:

ЧИСЛО1 = ЧИСЛО1 + ЧИСЛО2 + CF

ЧИСЛО1 может быть одно из следующих:

  • Область памяти (MEM)
  • Регистр общего назначения (REG)

ЧИСЛО2 может быть одно из следующих:

  • Область памяти (MEM)
  • Регистр общего назначения (REG)
  • Непосредственное значение - число (IMM)

С учётом ограничений, которые были описаны выше, комбинации ЧИСЛО1-ЧИСЛО2 могут быть следующими:

REG,		MEM
MEM,		REG
REG,		REG
MEM,		IMM
REG,		IMM

Пара команд ADD и ADC применяется для сложения повышенной точности. Также, как и в случае с командой SBB, использование инструкции ADC позволяет складывать, например, 32-разрядные числа с помощью 16-разрядных регистров. Да и вообще разрядность чисел, можно сказать, может быть любой.

Лучше всего это показать на примере:

	.model	tiny
	.code
	ORG 	100h
	
start:	

	MOV DX, 0       ;В паре DX:AX (0000:FFFF) 
	MOV AX, 0FFFFh  ;32-разрядное число 65535 
	MOV BX, 0       ;В паре BX:CX 
	MOV CX, 1       ;32-разрядное число 1
	;65535 + 1 = 65536, то есть после сложения
	;DX:AX = 65536 (0001:0000)
	ADD AX, CX      ;AX = 0000  
	ADC DX, BX      ;DX = 0001  
	
	RET

	END	start

В комментариях всё достаточно подробно описано. Поэтому добавлять ничего не буду. Если нужны подробности, то см. похожую программу в примере к инструкции SBB.

Напоследок, как всегда, о происхождении аббревиатуры ADC.

ADC - это ADd with Carry (сложение с переносом).



Первые шаги в программирование Первые шаги в программирование

Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su