Portalul informațiilor msevm

Acasă> Assembler> Aplicație> MUL Multiplicarea numerelor întregi fără semn NEG Modificări semn, amendamentele 2, NOP Nici o operație, NU inversiune, plus față de 1. Negația logică SAU boolean Activează sau, OUT de ieșire în port







MUL Multiplicarea numerelor nesemnate

inul comandă realizează multiplicarea întreg fără semn, care este în registrul AL (în caz de multiplicare per octet) sau AX (în cazul înmulțirii prin cuvântul) prin operandul sursă (întreg fără semn). Dimensiunea produsului este de două ori mai mare decât factorii.
Pentru operațiile cu un singur octet, unul dintre factori este plasat în registrul AL; După efectuarea operației, produsul este scris în registrul AX.
Pentru operațiile cu două octeți, unul dintre factori este plasat în registrul AX; După efectuarea operației, produsul este scris în registrele DX: AX (în DX - partea superioară, în AX - cea mai tânără). Conținutul anterior al registrului DX este suprascris.
În cazul în care conținutul octet registru AH după conținutul de multiplicare sau de registru DX după înmulțiri doi octeți nu sunt 0, CF și pavilioanelor sunt setate la 1. În caz contrar, ambele steaguri sunt resetate la 0.
Ca factor de operand al comenzii mul, puteti specifica un registru (cu exceptia unui segment) sau o locatie de memorie; nu este permis să se înmulțească prin valoarea imediată. Comanda acționează asupra steagurilor OF și FC.


mov AL, 5; primul factor
mov BL, 3. Al doilea factor
mul BL, AX = 000Fh, produsul


mov AX, 256; primul multiplicator
mov BX, 256; al doilea multiplicator
mul BX, DX = 0001h, AX = 0000h
(DX: AX = 65536, produs)


; În câmpurile de date
coef db 100; primul factor
datal db 126; al doilea multiplicator
mov AL, datal; AL = 7Eh = 126
mul coef; AX = 3138h = 12600, produs


; Câmpurile de date B;
coef dw 5000; primul factor
datal dw 1200; al doilea multiplicator
mov AX, date; AX = 4BOh = 1200
mul coef; DX = 005Bh, AX = 8D80h
Produsul = BX: AX =
; 5B8D80h = 6000000


mov EAX, 200h; Primul factor
mov ESI, l000000 lh; Al doilea factor
mul ESI; Lucrul în EDX: EAX
; EDX = 00000020h, EAX = 00000200h

NEG Schimbarea semnului, în plus față de 2








Comanda neg scade un operand intreg cu un semn de la zero, transformand un numar pozitiv intr-un numar negativ si invers. Operandul original este suprascris. Ca operand, puteti specifica un registru (cu exceptia unui segment) sau o celula de memorie de dimensiune atat in bytes cat si in cuvinte. Nu este permisă utilizarea unei valori imediate ca operand. Comanda acționează pe steagurile OF, SF, ZF, AF, PF și CF.


mov AX, 0 0 01
neg AX; AX = FFFFh = -1


mov BX, -2; BX = FFFEh = -2
neg BX; BX = 0002h


; În câmpurile de date
nmb dw 800lh Dacă numărul este semnat,
, apoi -32767
În segmentul de software
neg nmb; nmb = 7FFFh = + 32767


mov ECX, 5
neg ECX; ECX = FFFFFFFBh = -5

NOP comandă unică


Potrivit echipei, deoarece procesorul nu face nimic altceva decât creșterea cu 1 conținutul IP de instrucțiuni indicatorul (ca o echipă apoi ia 1 octet). Echipa este uneori folosită în scopuri de depanare, pentru a „scor“ unele comenzi care nu sunt necesare, fără a schimba lungimea modulului de sarcină sau, dimpotrivă, să lase loc în modulul de încărcare pentru comenzile de inserare ulterioare. În unele cazuri, comenzile de pori sunt incluse în textul modulului obiect de către traducător. Comanda nu are nici parametri, nici operandi si nu afecteaza steagurile procesorului.

NU Inversiune, în plus față de 1, negarea logică


Comanda non execută inversul biților operandului specificat, înlocuind 0 cu 1 și invers. Ca operand, puteti specifica un registru (cu exceptia unui segment) sau o celula de memorie de dimensiune atat in bytes cat si in cuvinte. Nu este permisă utilizarea unei valori imediate ca operand. Comanda nu afectează steagurile procesorului.

Reguli de inversare biți:


Bitul operator 0 1
Rezultatul bit 1 0


mov AX, 0FFFFh
nu AX; AX = 0000h


mov SI, 5551h
nu SI; SI = AAAEh


mov EAX, 0C00SFF00h
nu EAX; EAX = 3FFC00FFh

Sau logic INCLUSIVE sau


Comanda sau execută operarea unei adăugări logice (biți) a doi operanzi. Rezultatul înlocuiește primul operand (receptor); Al doilea operand (sursă) nu se schimbă. Ca primul operator, puteți specifica un registru (cu excepția unui segment) sau o locație de memorie, al doilea este un registru (cu excepția unui segment), o locație de memorie sau o valoare imediată, dar nu este permisă definirea ambelor operanzi simultan ca celule de memorie. Operanzii comenzii sau pot fi octeți sau cuvinte. Comanda acționează pe steagurile OF, SF, ZF, PF și CF, în timp ce drapelele CF și OF sunt întotdeauna resetate la 0.

Reguli de adăugare biți:


Primul bit de operand 0101
Al doilea bit operand 0011
Rezultatul bit 0111


mov AX, 000Fh
mov BX, 00F0h
sau AX, BX; AX = 00FFh, BX = 00F0h


mov AX, 000Fh
mov BX, 00F7h
sau AX, BX; AX = 00FFh, BX = 00F7h


mov AX, 000Fh
sau AX, 8001h; AX = 800Fh


; În câmpurile de date
masca db 80h
; În segmentul de software
mov CH, 17h
sau CH, mască; CH = 97h


; În câmpurile de date
mem dd 80000000h
; În segmentul de software
sau mem, 0C0h; mem = 800000C0h

OUT Ieșire la port


mov AL, 20h; Comandă de întrerupere finală (EOI)
out 20h, AL; Ieșirea comenzii EOI către port
; Controller de întrerupere de 20 ore







Articole similare

Trimiteți-le prietenilor: