Скачать 1.23 Mb.
|
^ mov BX,5 mov AL,array[BX] загрузит в регистр AL элемент с индексом 5 – число 50. Тот же результат можно получить, загрузив в BX не индекс, а адрес массива: mov BX,offset array mov AL, 5[BX] Другие варианты последней команды: mov AL,[BX]+5 mov AL,[BX+5] 2.6. Базовый индексный. Адресуется память (байт или слово). Относительный адрес операнда определяется как сумма содержимого следующих пар регистров: [BX][SI](подразумевается DS:[BX][SI]) [BX][DI](подразумевается DS:[BX][DI]) [BP][SI](подразумевается SS:[BP][SI]) [BP][DI](подразумевается SS:[BP][DI]) Допускается замена сегмента. Пусть в сегменте данных определен массив из 10 слов: words dw 0,10,20,30,40,50,60,70,80,90 ^ mov BX,offset words mov SI,10 mov AX,[BX][SI] загрузит в регистр AX слов со смещением 10 байтов от начала массива, т. е. число 50. ^ Адресуется память (байт или слово). Относительный адрес операнда определяется как сумма содержимого двух регистров и смещения. Обозначение этого способа адресации: смещение [BX][SI](подразумевается DS: смещение[BX][SI]) смещение [BX][DI](подразумевается DS: смещение[BX][DI]) смещение [BP][SI](подразумевается SS: смещение[BP][SI]) смещение [BP][DI](подразумевается SS: смещение[BP][DI]) Допустимы также обозначения (со всеми регистрами) вида: смещение [BX+SI ] [смещение +BX+DI] [BP][DI]+смещение Пусть в сегменте данных определен массив из 24 байтов: syms db ‘ЙЦУКЕНГШЩЗХЪ’ db ‘QWERTYUIOP{}’ ^ mov BX,12 mov SI,6 mov DL,syms[BX][SI] загрузит в регистр DL элемент с индексом 6 из второго ряда , т. е. код ASCII буквыU. Тот же результат можно получить, загрузив в один из регистров не индекс, а адрес массива: mov BX,offset syms mov SI,6 mov DL,12[BX][SI] Лекция № 6 Команды сдвига SAL/SHL Арифметический сдвиг влево/логический сдвиг влево Команда SAL осуществляет сдвиг влево всех битов операнда. Старший бит операнда поступает в флаг CF. Если команда записана в формате SAL операнд1 сдвиг осуществляется на 1 бит. В младший бит операнда загружается 0. Если команда записана в формате SAL операнд,CL сдвиг осуществляется на число битов, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда, пройдя через флаг CF, теряются, а младшие заполняются нулями. В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Каждый сдвиг влево эквивалентен умножению знакового числа на 2, поэтому команду SAL удобно использовать для возведения операнда в степень 2. Поскольку логический сдвиг влево полностью эквивалентен арифметическому сдвигу влево, команда SHL является просто другим обозначением команды SAL. Пример 1 mov AL,7 sal AL,1 ;AL=OEh=7*2 Пример 2 mov AX,lFFh mov CL,2 sal AX,CL ;AX=07FCh=lFFh*4 Пример 3 mov SI,-l ;SI=FFFFh mov CL,4 sal SI,CL ;SI=FFFOh=-l*16=-16 SAR Арифметический сдвиг вправо Команда SAR осуществляет сдвиг вправо всех битов операнда. Младший бит операнда поступает в флаг CF. Если команда записана в формате SAR операнд,1 сдвиг осуществляется на 1 бит. Старший бит операнда сохраняет свое значение. Если команда записана в формате SAR операнд,CL сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов младшие биты операнда, пройдя через флаг CF, теряются, а старший бит расширяется вправо. В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Каждый сдвиг вправо эквивалентен делению знакового числа на 2, поэтому команду SAR удобно использовать для деления операнда на целые степени 2. Пример 1 mov AL,7 sar AL,1 ;AL=3=7/2. Остаток потерян Пример 2 mov AX,lFFOh mov CL,4 sar AX,CL ;AX=01FFh=lFFOh/16 Пример 3 mov BX,-8 ;BX=FFF8h mov CL,Z sar BX,CL ;BX=FFFEh=-2=-8/4 SHR Логический сдвиг вправо Команда SHR осуществляет сдвиг вправо всех бит операнда. Младший бит операнда поступает в флаг CF. Если команда записана в формате SHR операнд,1 сдвиг осуществляется на 1 бит. В старший бит операнда загружается 0, а младший теряется. Если команда записана в формате SHR onepaнд, CL сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда заполняются нулями, а младшие, пройдя через флаг CF, теряются. В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Пример 1 mov AL,7 shr AL,1 ;AL=3 Пример 2 mov AX,lFFOh mov CL,4 shf AX,CL ;AX=01FFh Пример 3 mov DX,OFFFOh mov CL,4 Shr DX,CL ;DX=OFFFh RCL Циклический сдвиг влево через бит переноса Команда RCL осуществляет сдвиг влево всех бит операнда. Если команда записана в формате RCL операнд, 1 сдвиг осуществляется на 1 бит. В младший бит операнда заносится значение флага CF; старший бит операнда загружается в CF. Если команда записана в формате RСL операнд,CL сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда поступают сначала в CF, а оттуда - в младшие биты операнда. В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Пример 1 clc ;Сбросим CF mov AX,1 rc1 AX,1 ;AX=2; CF=0 Пример 2 mov DL,8 rcl DL,1 ;DL=10h, CF=0 Пример 3 mov BX,OFFFFh rcl BX,1 ;BX=FFFEh, CF=1 Пример 4 с1с ;Сбросим CF mov DH,3 mov CL,4 ;Счетчик сдвигов rcl DH.CL ;DH=30h, CF=0 RCR Циклический сдвиг вправо через бит переноса Команда RCR осуществляет сдвиг вправо всех бит операнда. Если команда записана в формате RCR операнд,1 сдвиг осуществляется на 1 бит. В старший бит операнда заносится значение флага CF; младший бит операнда загружается в CF. Если команда записана в формате RCR операнд,CL сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов младшие биты операнда поступают сначала в CF, а оттуда - в старшие биты операнда. В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Пример 1 с1с ;Сбросим флаг CF mov AX,2 rcr АХ,1 ;АХ=1, CF=0 Пример 2 mov DL,8 rcr DL,1 ;DL=4, CF=0 Пример 3 mov BX,OFh rcr BX,1 ;BX=7, CF=1 Пример 4 с1с ;Сбросим флаг CF mov DH,80h mov CL,5 ;Счетчик сдвигов rcr DH,CL ;DH=4, CF=0 ROL Циклический сдвиг влево Команда ROL осуществляет сдвиг влево всех бит операнда. Если команда записана в формате ROL операнд,1 сдвиг осуществляется на 1 бит. Старший бит операнда загружается в его младший разряд. Если команда записана в формате ROL операнд,CL сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда перемещаются в его младшие разряды В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Пример 1 mov АХ,1 rо1 АХ,1 ;AX=0002h Пример 2 mov DL,8 rо1 DL,1 ;DL=lOh Пример З mov BX,OFFFEh rо1 BX,l ;BX-FFFOh Пример 4 mov DH,-OCOh mov CL,2 rо1 DH,CL ;DH=3 ROR Циклический сдвиг вправо Команда ROR осуществляет циклический сдвиг вправо всех бит операнда. Если команда записана в формате ROR операнд,1 сдвиг осуществляется на 1 бит. Младший бит операнда записывается в его старший разряд. Если команда записана в формате ROR операнд,CL сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов младшие биты операнда перемещаются в его старшие разряды. В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Пример 1 mov AX,2 ror АХ,1 ;АХ=1 Пример 2 Mov DL,8 Ror DL,l ;DL=4 Пример 3 Mov BX,OFh Ror BX,l ;BX=8007h Пример 4 mov DН,0Сh mov CL,3 ror DH,CL ;DH=81h Лекция № 7 Математические функции Команды сложения ADD Целочисленное сложение Команда ADD осуществляет сложение первого и второго операндов. Исходное значение первого операнда (приемника) теряется, замещаясь результатом сложения. Второй операнд не изменяется. В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Пример mov BX, lFFEh mov СХ.3 add BX,CX ;BX=2001h ADC Целочисленное сложение с переносом Команда ADC осуществляет сложение первого и второго операндов, прибавляя к результату значение флага переноса CF. Исходное значение первого операнда (приемника) теряется, замещаясь результатом сложения. Второй операнд не изменяется. В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда ADC обычно используется для сложения 32-разрядных чисел. Пример 1 mov AX,1125h adc AX,2C25h ;AX=3D4Bh, если CF был = 1 Пример 2 В полях данных: numtow dw OFFFFh ;Младшая часть 2-го слагаемого numhigh dw 0005h ;Старшая часть 2-го слагаемого ;Число 5FFFFh=393215 В программном сегменте: mov AX,0005h ;Младшая часть 1-го слагаемого mov BX,0002h ;Старшая часть 1-го слагаемого ;Число 20005h=131077 add AX.numlow ;Сложение младших частей. АХ=4,CF=1 adc BX.numhigh ;Сложение старших частей с переносом. ;BX:AX=0008:0004h. ;Число 80004h=524292 INC Инкремент (увеличение на 1) Команда INC прибавляет 1 к операнду, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Пример 1 mov AX,0563h Inc AX ;AX=0564h Пример 2 mov BH,15h Inc BH ;BH=16h Пример 3 mov AX.ASFFh Inc AL ;AX=A500h Inc AH ;AX=A600h Команды вычитания SUB Вычитание целых чисел Команда SUB вычитает второй операнд (источник) из первого (приемника) и помещает результат на место первого операнда. Исходное значение первого операнда (уменьшаемое) теряется. Таким образом, если команду вычитания записать в общем виде sub операнд_1, операнд_2 то ее действие можно условно изобразить следующим образом: операнд_1 - операнд_2 -> операнд_1 В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Примеры sub CX,5 ; Выполняется действие СХ-5->СХ sub DH,DL ; Выполняется действие DH-DL->DH sub AX,mem ; Выполняется действие АХ-(mem)->АХ sub byte ptr men,DL ; Выполняется действие(mem)-DL->mem sub tab1e[BX],'O' ; Выполняется действие (table[BX])-30h ; -> table[BX] SBB Целочисленное вычитание с займом Команда SBB вычитает второй операнд (источник) из первого (приемника). Результат замещает первый операнд, предыдущее значение которого теряется. Если установлен флаг CF, из результата вычитается еще 1. Таким образом, если команду вычитания записать в общем виде sbb операнд_1, операнд_2 то ее действие можно условно изобразить следующим образом: операнд_1 - операнд_2 - CF -> операнд_1 В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго -регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда SBB обычно используется для вычитания 32-разрядных чисел. Пример 1 mov AX,76A5h sbb AX,76A3h ; АХ=-1, если CF был=1 ;АХ=2, если CF был=0 Пример 2 В полях данных: numlow dw 000Ah ;Младшая часть вычитаемого numhigh dw 000lh ;Старшая часть вычитаемого ;Число 1000Аh=65546 В программном сегменте: mov АХ,0 ;Младшая часть уменьшаемого mov DX,0002 ;Старшая часть уменьшаемого ;Число 20000h=131072 sub AX,num1ow ; Вычитание младших частей. ;AX=FFF6h, CF=1 sbb DX,numhigh ;Вычитание старших частей с займом. ;DX:AX=0000:FFF6h=65526 DEC Декремент (уменьшение на 1) Команда DEC вычитает 1 из операнда, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Пример 1 mov AX.OFFFFh dec AX ;AX=FFFEh Пример 2 mov CX, О dec CX ;CX=FFFFh=-l Команда сравнения СМР Сравнение Команда СМР выполняет вычитание второго операнда из первого. В соответствии с результатом вычитания устанавливаются состояния флагов CF, PF, AF, ZF, SF и OF. Сами операнды не изменяются. Таким образом, если команду сравнения записать в общем виде cmp операнд_1, операнд_2 то ее действие можно условно изобразить следующим образом: операнд_1 - операнд_2 -> флаги процессора В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Обычно вслед за командой СМР стоит одна из команд условных переходов, анализирующих состояние флагов процессора. Пример cmp AX,562Dh Je equal ; Переход на метку equal, если AX=562Dh Ja above ; Переход, на метку above, если ; содержимое АХ, рассматриваемое как ; число без знака, превышает ; беззнаковое число 562Dh NEG Изменение знака, дополнение до 2 Команда NEG выполняет вычитание знакового целочисленного операнда из нуля, превращая положительное число в отрицательное и наоборот. В качестве операнда можно, указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Примеры mov АХ, 0001 neg AX ; AX=FFFfh=-l mov BX, -2 ; BX=FFFgh=-2 neg BX ; BX=0002h Команды умножения MUL Умножение целых беззнаковых чисел Команда MUL выполняет умножение целого беззнакового числа, находящегося в регистре AL (в случае умножения на байт) или АХ (в случае умножения на слово), на операнд-источник (целое число без знака). Размер произведения в два раза больше размера сомножителей. Для однобайтовых операций один из сомножителей помещается в регистр AL, после выполнения операции произведение записывается в регистр АХ. Для двухбайтовых операции один из сомножителей помещается в регистр АХ; после выполнения операции произведение .записывается в регистры DX:AX (в DX - старшая часть, в АХ – младшая). В качестве операнда-сомножителя можно указывать регистр данных или ячейку памяти; не допускается умножение на непосредственное значение. Пример1 mov AL.5 ;Первый сомножитель mov BL, 3 ;Второй сомножитель mul BL ;AX=OOOFh (произведение) Пример 2 mov AX,256 ;Первый сомножитель mov BX,256 ;Второй сомножитель mul BX ;DX=0001h, AX=OOOOh ;(число 65536) Пример 3 mov AL, 251 ;AL=FBh mov BL,3 ;BL=03h mu1 BL ;AX=02Flh IMUL Умножение целых знаковых чисел Команда IMUL выполняет умножение целого знакового числа, находящегося в регистре AL (в случае деления на байт) или АХ (в случае деления на слово), на операнд-источник (целое число со знаком). Размер произведения в два раза больше размера сомножителей. Для однобайтовых операций один из сомножителей помещается в регистр AL; после выполнения операции произведение записывается в регистр АХ. Для двухбайтовых операций один из сомножителей помещается в регистр АХ; после выполнения операции произведение записывается в регистры DX:AX (в DX - старшая часть, в АХ - младшая). В качестве операнда-сомножителя можно указывать регистр данных или ячейку памяти; не допускается умножение на непосредственное значение. Пример 1 mov AL,5 ; Первый сомножитель mov BL,3 ; Второй сомножитель imul BL ; AX=OOOFh (произведение) Пример 2 mov AX,256 ; Первый сомнохитель mov BX,256 ; Второй сомнохитель imul BX ; DX=0001h, AX=OOOOh (число 65536) Пример 3 mov AL,-5 ; AL=FBh mov BL,3 ; BL=03h imul BL ; AX=FFFlh (-15) Команды деления DIV Деление целых беззнаковых чисел Команда DIV выполняет деление целого числа без знака, находящегося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (целое число без знака). Размер делимого в два раза больше размеров делителя и остатка. Для однобайтовых операций делимое помещается в регистр АХ; после выполнения операции частное записывается в регистр AL, а остаток - в регистр АН. Для двухбайтовых операций делимое помещается в регистр DX:AX (в DX старшая часть, в АХ - младшая); после выполнения операции частное записывается в регистр АХ, а остаток - в регистр DX. В качестве операнда-делителя можно указывать регистр данных или ячейку памяти; не допускается деление на непосредственное значение. Если делитель равен 0, или если частное не помещается в назначенный регистр, возбуждается прерывание с вектором 0. Пример 1 mov AX,506 ;Делимое mov BL,50 ;Делитель div BL ;AL=OAh (частное), AH=06h ;(остаток) Пример 2 mov DX,1 ;Старшая часть делимого 65537 mov AX,1 ;Младшая часть делимого 65537 mov СХ,256 ;делитель div СХ ;AX=0100h (частное), OX=0001h ;(остаток) IDIV Деление целых знаковых чисел Команда IDIV выполняет деление целого числа со знаком, находящегося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (целое число со знаком). Размер делимого в два раза больше размеров делителя и остатка. Оба результата рассматриваются как числа со знаком, причем знак остатка равен знаку делимого. Для однобайтовых операций делимое помешается в регистр АХ; после выполнения операции частное записывается в регистр AL. а остаток - в регистр АН. Для двухбайтовых операций делимое помещается в регистры DX:AX (в DX - старшая часть, в АХ - младшая); после выполнения операции частное записывается в регистр АХ, а остаток - в регистр DX. В качестве операнда-делителя можно указывать регистр данных или ячейку памяти: не допускается деление на непосредственное значение. Если делитель равен 0, или если частное не помещается в назначенный регистр, возбуждается прерывание через вектор 0. Пример 1 Mov AX,506 ;Делимое mov BL,50 ;Делитель div ;AL=OAh (частное), AH=06h (остаток) Пример 2 mov DX,1 ;Старшая часть делимого 65537 mov АХ,1 ;Младшая часть делимого 65537 mov CX.256 ;Делитель div ;AX=0100h (частное), DX=0001h(остаток) Пример 3 mov AX,-506 ;AX=FE06h, делимое mov BL,50 ;Делитель idiv ;AL=F6h (-10), AH=FAh (-6) Лекция № 8 Команды управления процессом ^ Команда безусловного перехода JMP может использоваться в 5 разновидностях. Переход может быть: - прямым коротким (в пределах -128...+127 байтов); - прямым ближним (в пределах текущего сегмента команд); - прямым дальним (в другой сегмент команд); - косвенным ближним (в пределах текущего сегмента команд через ячейку с адресом перехода); - косвенным дальним (в другой сегмент команд через ячейку с адресом перехода). Рассмотрим структуру программы с переходами разного вида. ^ seg segment 'code' . . . jmp short cont ; Koд ЕВ dd . . . cont: . . seg ends Метка cont должна отстоять -от команды, следующей за JMP, не более, чем на 128 байтов назад или на 127 байтов вперед. Если cont стоит в программе до команды JMP, описатель SHORT можно опустить. В приведенном коде команды dd обозначает байт с величиной относительного смещения к точке перехода от команды, следующей за командой JMP. ^ seg segment 'code' . . . jmp short cont ; Koд Е9 dddd . . . cont: . . . seg ends Метка cont может находиться в любом месте сегмента команд, как до, так и после команды JMP. В коде команды dddd обозначает слово с величиной относительного смещения к точке перехода от команды, следующей за командой JMP. В некоторых случаях удобно пользоваться другой формой команды ближнего перехода: jmp near ptr cont в которой в явной форме указывается, что переход должен быть ближним (в том же сегменте команд). ^ segl segment 'code' . . . jmp far ptr cont ;koд EA dddd ssss . . . segl ends seg2 segment 'code' . . . cont: . . . seg2 ends Метка cont находится в другом сегменте команд этой двухсегментной программы. В коде команды ssss - сегментный адрес сегмента seg2, а dddd - относительный адрес точки перехода cont в сегменте команд seg2 (относительно начала этого сегмента). ^ seg segment 'code' . . . jmp DS:contadr ; Код FF 26 dddd . . . cont: ; Точка перехода segl ' ends dat segment . . . contadr dw cont ; Адрес перехода (слово) . . . dat ends Точка перехода cont может находиться в любом месте сегмента команд, как до, так и после команды JMP. В коде команды dddd обозначает относительный адрес слова contadr в сегменте данных, содержащем эту ячейку. Такой способ перехода удобен тем, адрес перехода может быть вычислен программно и помещен в ячейку contadr по ходу выполнения программы. В некоторых случаях удобно пользоваться другой формой команды косвенного перехода: jmp word ptr contadr Таким образом, и указание сегментного регистра, и описатель WORD PTR придают команде косвенность (переход осуществляется не на метку contadr, а по адресу, содержащемуся в ячейке contadr). ^ segl segment 'code' . . . jmp DS:contadr ; Код FF 2E dddd . . . segl ends seg2 segment 'code' . . . cont: ; Точка перехода . . . seg2 ends dat segment . . . contadr dd cont ; Двухсловный адрес точки перехода . . . dat ends Точка перехода cont находится в другом сегменте команд этой двухсегментной программы. В коде команды dddd обозначает относительный адрес слова contadr в сегменте данных. Ячейка contadr объявляется директивой DD и содержит двухсловный адрес точки перехода - в первом слове смещение cont в сегменте команд seg2, во втором слове сегментный адрес seg2. Обе компоненты адреса перехода могут быть вычислены и помещены в ячейку contadr по ходу выполнения программы. В некоторых случаях удобно пользоваться другой формой команды косвенного перехода: jmp dword ptr contadr Здесь описатель DWORD PTR говорит о том, что адрес хранится в двухсловной ячейке и, следовательно, осуществляется дальний косвенный переход (в другой сегмент). ^ Команды, обозначаемые (в книгах, не в программах!) Jcc, осуществляют переход по указанному адресу при выполнении условия, заданного мнемоникой команды. Если заданное условие не выполняется, переход не осуществляется, а выполняется команда, следующая за командой Jcc. Переход может осуществляться как вперед, так и назад в диапазоне +127...-128 байтов. ^
Пример 1 сmр AX,0 ;АХ=0? je equal ;Если да, перейти на метку equal Пример 2 int 21 h ; Вызов системной функции jc error ;Если CF=1 (ошибка), перейти на метку error |
![]() | Анализ к ф. м н., доцент Рудой Евгений Михайлович 2013-2014 уч год Лекция (2 часа) Введение. Нормированные пространства. Компактные множества. Теорема Хана-Банаха | ![]() | Лекция введение Материалы данного файла могут быть использованы без ограничений для написания собственных работ с целью последующей сдачи в учебных... |
![]() | Лекция «Сущность и проблемы вэд, состояние вэд в России» 1 час. 2... Лекция «Внешнеэкономические операции и сделки: виды, классификация, организация» 1 час | ![]() | Лекция 1 введение Петрофизика сформировалась к началу 60-х годов, когда появились обобщающие труды по всем вопросам изучения физических свойств пород... |
![]() | 1. Лекция: Введение. История, предмет, структура информатики Хотя информатика и считается достаточно молодой наукой по отношению ко многим другим отраслям знания, но предпосылки к ее зарождению... | ![]() | Лекция №1. Введение в Экономикс. Основная проблема экономики и производственные... Под материальными потребностями подразумевается желания потребителей приобрести и использовать товары и услуги, которые доставят... |
![]() | Лекция №1 Лекция № Общие принципы эффективной организации учебного процесса. Физиологическая цена учебных нагрузок | ![]() | Лекция №1 Лекция № Общие принципы эффективной организации учебного процесса. Физиологическая цена учебных нагрузок |
![]() | Лекция №1 Лекция № Общие принципы эффективной организации учебного процесса. Физиологическая цена учебных нагрузок | ![]() | Лекция №1 Лекция № Общие принципы эффективной организации учебного процесса. Физиологическая цена учебных нагрузок |