Практикум для изучения дисциплины «Основы программирования»



Pdf көрінісі
бет65/81
Дата08.07.2020
өлшемі1,55 Mb.
#74978
түріПрактикум
1   ...   61   62   63   64   65   66   67   68   ...   81
Байланысты:
А.А. Тюгашев

ЗАМЕЧАНИЕ 
В настоящей книге не рассматриваются все команды ассемблера x86 — и тем 
более все возможные команды языков ассемблера различных ЭВМ. 
В  архитектуру  x86  введена  еще  одна  весьма  полезная  команда, 
позволяющая  двум  ячейкам  памяти  произвести  обмен  содержимым, — 
xchg
.  В  других  системах  команд  для  реализации  подобного  действия 
требуется несколько команд MOV и промежуточный буфер: 
xchg 
ax,bx; обмен содержимым AX ↔ BX 
Перейдем  к  командам  преобразования  данных.  Это  в  первую  очередь 
арифметические  операции,  а  также  логические  операции  и  команды 
сдвигов. Сложение и вычитание весьма просты: 
add 
ax,2; прибавление числа 2 к регистру AX 
sub 
N,-
1; вычитание минус единицы из ячейки с именем N 
Существуют  две  специальные  команды  для  уменьшения  (декремента)  и 
увеличения на единицу (инкремента): 
inc 
cx; cx=cx+1 
dec 
N; уменьшение на единицу содержимого ячейки с именем N 
Данные  команды  занимают  меньше  места  в  памяти  и  выполняются 
быстрее,  нежели sub  и add  с аргументом 1.  В  языке программирования 
Си очевидна параллель — -- и ++. 
Несколько  более  интересны  команды  умножения  и  деления.  Во-первых, 
система  команд  x86  предусматривает  по  две  команды  для  умножения  и 
деления чисел — со знаком и беззнаковых. Умножение беззнаковых чисел 
производится  командой  mul,  чисел  со  знаком —  imul.  Во-вторых, 
команда  одноадресная —  по  умолчанию  один  из  аргументов  берется  из 
регистра AX и туда же заносится результат. Если результат не умещается в 
AX
 
полностью, старшие биты произведения помещаются в DX. Рассмотрим 
пример: 
mov 
bx,5; первый сомножитель 5 заносим в BX 
mov 
ax,25 ; второй сомножитель 25 → в AX 
mul 
bx ; умножаем 5 * 25, результат → в AX 
Команда  деления  беззнаковых  чисел —  div,  чисел  со  знаком —  idiv. 
Поскольку  аргументы  воспринимаются  как  целые  числа,  а  для  них 
полноценное математическое деление невозможно, операция производится 
как  целочисленное  деление  с  занесением  неполного  частного  в  младшие 
биты регистра AX, которые обозначаются AH, а остатка от деления — в его 
старшие биты (AL). При делении чисел размером 1 байт частное заносится 
в AL, а остаток — в DL. 


131 
 


Достарыңызбен бөлісу:
1   ...   61   62   63   64   65   66   67   68   ...   81




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет