Машинное кодирование Лекция 3 Логические операции:
Логическая операция NOT - Логическое отрицание «Инверсия» A=not (B) A= B=
Логическая операция AND - Логическая операция «И» «Конъюнкция» С= A and B A= B= C=
Логическая операция OR - Логическая операция «ИЛИ» «Дизъюнкция» С= A or B A= B= C=
Логическая операция XOR - «исключающее ИЛИ» «строгая дизъюнкция» С= A xor B A= B= C=
Примеры машинных команд: Инверсия NOT -a 0B61:0100 mov ax,0ff0 0B61:0103 not ax 0B61:0105 int 20 -p100 AX=0FF0 NV UP EI PL NZ NA PO NC 0B61:0103 F7D0 NOT AX AX=F00F NV UP EI PL NZ NA PO NC
Графический смысл команды
«Конъюнкция» AND -a 0B61:0100 mov ax,f0ff 0B61:0103 mov bx,f00f 0B61:0106 and ax,bx 0B61:0108 int 20 -p100 AX=F0FF BX=0000 0B61:0103 BB0FF0 MOV BX,F0 AX=F0FF BX=F00F 0B61: D8 AND AX,BX AX=F00F BX=F00F 0B61:0108 CD20 INT 20
Графический смысл команды
«исключающее ИЛИ» xor -a 0B61:0100 mov ax,a 0B61:0103 mov bx,c 0B61:0106 xor ax,bx 0B61:0108 int20 -p100 AX=A=1010 BX=0000 AX=A=1010 BX=C=1100 AX=E=1110 BX=C=1100
Графический смысл команды
«Дизъюнкция» AND -a 0B61:0100 mov ax,a 0B61:0103 mov bx,c 0B61:0106 or ax,bx 0B61:0108 int20 -p100 AX=A=1010 BX=0000 AX=A=1010 BX=C=1100 AX=E=0110 BX=C=1100
Графический смысл команды
Команда смещения SHL AX,1 – побитовое смещение в лево –> SHR AX,1 – побитовое смещение в право –> Может использоваться как операция быстрого деления или умножения на 2 или число кратное 2 Может использоваться как операция быстрого деления или умножения на 2 или число кратное 2
Берём данные из памяти Команда mov r,[mem] -a 0B61:0100 mov ax,[105] 0B61:0103 int 20 0B61:0105 db 1a 5c -p100AX=5C1A
Заносим данные в память Команда mov [mem],r 0B61:0100 mov ax,1234 0B61:0103 mov [110],ax 0B61:0106 int20 -p100 -d100 0B61:0100 B A CD 20 - CC CC CC EC F 0B 0B61: BF 0B 8F B CD B
Используем стек Команда push - положить, pop – взять R AX=0000 SP=FFEE -d ffe0 0B61:FFE B61:0100 mov ax,1234 0B61:0103 push ax 0B61:0104 int 20 R AX=1234 SP=FFEC -d ffe0 0CCD:FFE C 8A
Используем стек для быстрого обмена переменными 0CCD:0100 MOV CX,ABCD 0CCD:0103 MOV DX,12EF 0CCD:0106 PUSH DX 0CCD:0107 PUSH CX 0CCD:0108 POP DX 0CCD:0109 POP CX 0CCD:010A INT 20 R CX=12EF DX=ABCD
Литература Полный перечень команд процессора