Програмування на мові Асемблер, Детальна інформація
Програмування на мові Асемблер
Приклад
push ax ; занести ax , bx , dx в стек
push bx
push dx
; - тут знаходиться програма
pop dx ; вийняти dx, bx , ax із стека.
pop bx
pop ax
Тут зрозуміло ,що команди між push i pop будуть використовувати регістри ax. bx i dx;
тому для збереження початкових значень вони проштовхуютья в стек . Потім ці ж регістри у зворотньому порядку виштовхуються із стека відновлюються початкові значення і підтримуючи стек в правильному стані ( состоянии ).
Перестановка даних ( команда xchg)
Команда xchg -міняє місцями значення двох регістрів або значення регістра з байтом або словом , яке зберігається в пам’ яті .
Приклад
Нехай , ми хочемо переставити значення в регістрах dx i ax. Використовуючи xchg , можна
записати :
xchg ax , dx ; ax ( dx ; dx ( ax
( порядок операндів не грає ролі )
Інакше , для перестановки двох 16 - бітових регістрів , можна використати менш ефективний метод який використовує стек як поміжкове місце збереження одного з значень.
push ax ; стек ( ax
mov ax,dx , ax ( dx
pop dx ; dx ( ( стек початкове значення ax ).
Приклад
Для перестановки двох 8 - бітових значень необхідний третій регістр , так як в стек можна проштовхувати , виштовхувати тільки 16 - бітні слова .
Щоб переставити два байти в al i ah, не використовучи xchg потрібно записати:
mov bh, ah ; bh ( ah
mov ah, al ; ah ( al
mov al, bh ; al ( bh
При використанні xchg цього не потрібно .
push ax ; занести ax , bx , dx в стек
push bx
push dx
; - тут знаходиться програма
pop dx ; вийняти dx, bx , ax із стека.
pop bx
pop ax
Тут зрозуміло ,що команди між push i pop будуть використовувати регістри ax. bx i dx;
тому для збереження початкових значень вони проштовхуютья в стек . Потім ці ж регістри у зворотньому порядку виштовхуються із стека відновлюються початкові значення і підтримуючи стек в правильному стані ( состоянии ).
Перестановка даних ( команда xchg)
Команда xchg -міняє місцями значення двох регістрів або значення регістра з байтом або словом , яке зберігається в пам’ яті .
Приклад
Нехай , ми хочемо переставити значення в регістрах dx i ax. Використовуючи xchg , можна
записати :
xchg ax , dx ; ax ( dx ; dx ( ax
( порядок операндів не грає ролі )
Інакше , для перестановки двох 16 - бітових регістрів , можна використати менш ефективний метод який використовує стек як поміжкове місце збереження одного з значень.
push ax ; стек ( ax
mov ax,dx , ax ( dx
pop dx ; dx ( ( стек початкове значення ax ).
Приклад
Для перестановки двох 8 - бітових значень необхідний третій регістр , так як в стек можна проштовхувати , виштовхувати тільки 16 - бітні слова .
Щоб переставити два байти в al i ah, не використовучи xchg потрібно записати:
mov bh, ah ; bh ( ah
mov ah, al ; ah ( al
mov al, bh ; al ( bh
При використанні xchg цього не потрібно .
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021