Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // #include <iostream>
- //
- /* int main() {
- volatile uint32_t A = 0x11223344; // начальная инициализация
- volatile uint16_t B = 0x5566;
- // ассемблерная вставка
- asm volatile (
- "mov al, byte ptr[rbp-0x5];" // копируем в al 0x55
- "xchg al, byte ptr[rbp-0x3];" // меняем местами 0x33 и 0x55
- "xchg al, byte ptr[rbp-0x4];" // меняем местами 0x44 и 0x33
- "xchg al, byte ptr[rbp-0x1];" // меняем местами 0x44 и 0x11
- "xchg al, byte ptr[rbp-0x6];" // меняем местами 0x11 и 0x66
- "mov byte ptr[rbp-0x5], al;" // записываем в начало B значение 0x66
- );
- // вывод
- std::cout << std::hex << std::showbase;
- std::cout << "A = " << A << "\nB = " << B << std::endl;
- return 0;
- }*/
- #include "locale.h"
- #include "stdio.h"
- #include "stdlib.h"
- #include "stdint.h"
- int main()
- {
- volatile uint32_t A = 0x11223344;
- volatile uint16_t B = 0x5566;
- printf("%x, %x\n", A, B);
- __asm volatile(
- "mov al, byte ptr B[0];" /* копируем значение B[0] в регист al*/
- "xchg al, byte ptr B[1];" /* меняем местами значение в регистре al=66 со значением в B[1]. al=55*/
- "xchg al, byte ptr A[1];"/*меняем местами значение регистра al=55 со значением в A[1]. al=33 */
- "xchg al, byte ptr A[0];"/*меняем местами значение регистра al=33 со значением в A[0]. al=44 */
- "xchg al, byte ptr A[3];"/* меняем местами значение регистра al=44 со значением в A[3]. al=11*/
- "mov byte ptr B[0], al;"/* копируем значение al=11 в B[0]*/
- );
- printf("\n%x, %x", A, B);
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement