Limbajul Assembler abc-doar


NUMELE FLAGULUI nr bit FUNCTIE



Yüklə 1,03 Mb.
səhifə2/10
tarix16.12.2017
ölçüsü1,03 Mb.
#35021
1   2   3   4   5   6   7   8   9   10

NUMELE FLAGULUI nr bit FUNCTIE

OF overflow Flag 11 -indica overflow daca este 1

DF direction Flag 10 -indica directia de citire a sirurilor

IF interrupt Flag 9 -daca este 1 intreruperile sunt permise

TF trap Flag 8 -daca este 1 CPU poate lucra pas cu pas

SF sign Flag 7 -daca este 1 semnul nr. este negativ

ZF zero Flag 6 -daca este 1 rezultatul calculului = 0

AF auxiliary Flag 4 -este un carry Flag secundar

PF parity Flag 2 -indica paritatea (par/impar)

CF carry Flag 0 -contine bitul cel mai din stanga dupa

efectuarea unui calcul(left most bit)

EXEMPLU: daca registrul FLAGS contine valoarea 00000000 01000000 inseamna

ca numarul calculat (din registrii generali) este negativ (deoarce bitul 7

din FLAGS este SETAT)

Pe langa registrii,procesorul contine si stiva interna (STACK),care

este echivalenta cu o serie de procesoare de 16 biti inseriate,astfel

incat sa formeze o memorie interna minimala,care permite o serie intreaga

de operatii interne,fara a mai apela memoria fizica.

Stiva functioneaza dupa principiul LIFO (LAST IN FIRST OUT),adica

ultimele date intrate sunt eliberate primele:

EXEMPLU: 1234 va fi arhivat ca 34 12 h (h=hexazecimal)

(word) (byte)(byte)

Daca se citeste intregul cuvant,la dezarhivare se va obtine 1234 ,dar

daca se citeste doar un singur byte (8 biti),la dezarhivare se va obtine

doar ultimul byte introdus,adica 34.Notatia h sau H se utilizeaza pentru

a specifica faptul ca datele au fost scrise in sistem hexazecimal (pentru

datele decimale se poate utiliza "d",pentru cele octale "o" etc. )


-7-

Ca rezultat al capacitatii sporite de combinare a codurilor binare,

procesoarele de tip 256 si 8086 au permis o extrem de mare varietate de

formate numerice,care au generat un numar foarte mare de sisteme de ope-

rare.Datele nu erau compatibile intre aceste sisteme (Exemplu: un program

cu date in format de 12 biti nu putea fi citit de un program cu date

formatate pe 8 sau 10 biti).Programatorii isi alegeau formatul in functie

de volumul de date,sau in functie de tabieturile personale.Aceasta dez-

organizare a dus la o completa degringolada: fiecare utilizator trebuia

sa-si instaleze propriul sistem de operare inainte de a utiliza un program

iar datele nu se puteau transfera de la un program la altul decat cu aju-

torul unor programe speciale de conversie.Dar munca pentru a realiza un

program de conversie era de obicei mai mare decat valoarea datelor tran-

sferate.

Dupa aproape un deceniu de interminabile discutii in contradictoriu,

specialistii au ajuns la un acord si au adoptat un standard international

de formatare a datelor de interes comun.Astfel s-au adoptat standardele

ANSI-DOS,ASCI si apoi ASCII prin care caracterele se reprezinta pe cate

un byte(=un octet=8biti).Formatul de 16 biti,a fost denumit word (cuvant)

si este reprezentat prin 2 bytes succesivi.Deci,procesorul 8086 putea

procesa 2 bytes sau un word per operatie iar registrii sai puteau prelucra

tot 2 bytes sau 1 word (pentru registrii se utilizeaza si pluralul feminin

"registre" dar am preferat termenul de registrii pentru a nu se confunda

cu celelalte feluri de registre din limbajul comun).

Toate dezvoltarile ulterioare ale procesoarelor,si implicit ale pro-

gramelor si aplicatiilor software au tinut cont de aceasta conventie si

au proiectat noile produse cu un multiplu de 8 pentru liniile de adresa

de procesor.Practic,au dublat capsula preexistenta si au format conexiu-

nile astfel incat noul procesor sa dubleze formatul precedent.Asa au fost

concepute procesoarele "pe 32 de biti de adresa",apoi "pe 64 de biti de

adresa" si apoi "pe 128 de biti de adresa".

Fiecare dezvoltare a dus la extinderea formatului maxim,a permis

formularea de noi instructiuni,din ce in ce mai performante si a permis

adaugarea de noi registrii.La procesoarele moderne,o parte dintre re-

gistrii noi adaugati sunt accesibili pentru utilizatori iar o alta parte

sunt rezervati doar pentru personalul acreditat de firma producatoare.

In paralel cu procesorul 8086,sa dezvoltat si perfectionat si un

procesor ajutator,denumit coprocesor matematic,sau procesor 8087.Acest

procesor era format din 8 registri de 80 de biti ordonati sub forma de

stiva si era utilizat pentru calculele in virgula mobila.Acest procesor

permitea un dublu format de 40 de biti in care incapea cate un numar in

format de 32 de biti si un operator in format de 8 biti.Procesorul 8087

a stat la baza tuturor calculelor cu numere foarte mari,sau cu un numar

foarte mare de zecimale.O data cu aparitia procesoarelor si a memoriilor

RAM de 128 de biti,acest procesor a devenit desuet,dar este inca in uz

in majoritatea calculatoarelor din generatiile anterioare.

Toate procesoarele dezvoltate prin extinderea procesorului 8086 sunt

compatibile cu setul initial de instructiuni 8086.Fiecare nou procesor

(80186,80286,80386,80486,Pentium,PentiumII,PentiumIII,PentiumIV) moste-

neste setul de instructiuni de la generatia anterioara si adauga un set

nou de instructiuni incompatibile cu generatia precedenta.

Exista si procesoare incompatibile cu setul de instructiuni 80x86 !


-8-

Pentru a utiliza la maximum procesoarele din noile generatii,s-au

realizat formate ale datelor corespunzatoare cu posibilitatile hardware.

Astfel,formatul de 32 de biti a fost denumit dword(double word adica un

cuvant dublu),formatul de 64 de biti a fost denumit qword(quatro word,

adica patru cuvinte) iar cel pe 128 de biti a fost denumit dqword (double

quatro word adica opt cuvinte).Pentru procesorul 8087 s-au realizat doua

formate pe 80 de biti denumite tbyte si tword.Exista si doua formate

intermediare,pe 48 de biti,denumite fword si pword.

Pentru a putea lucra cu date de tip byte(8 biti),cei patru registri

generali (AX,BX,CX si DX) au fost subimpartiti in cate doi registri de

1 byte(8 biti).Pentru byte-ul cel mai semnificativ,numele se formeaza prin

adaugarea literei H (de la high) pentru a forma denumirile AH,BH,CH si DH

iar pentru byte-ul mai putin semnificativ se utilizeaza litera L pentru a

forma denumirile AL,BL,CL,DL.Astfel,cei patru registri generali pot fi

apelati atat la nivel de byte cat si la nivel de word,respectiv pot

efectua operatii atat in format de 8 biti cat si in format de 16 biti.

In mod curent,registrii A(acumulator) si D(date) sunt utilizati pentru

a stoca si prelucra date temporare,registrul C(counter) este utilizat

pentru a salva numarul ciclului in operatiile repetitive,iar registrul B

(base) este utilizat ca baza spre a alta adresa de date.

Pentru a lucra cu memoria fizica,procesorul 8086 imparte memoria in

segmente de cate 64 K.Astfel,o adresa este formata din adresa segmentului

si adresa de offset din interiorul segmentului.

EXEMPLU : 4576:0100 primul numar (4576) este adresa segmentului,iar

cel de al doilea (0100) este adresa de offset din interiorul segmentului

4576.

Pentru a opera cu adresele de segment,8086 utilizeaza registrii de

segment (CS,DS,SS si ES).Pentru a putea efectua operatii in si asupra

memoriei,se utilizeaza cei doi registrii pointer (SP si BP).Registrul

BP pointeaza baza stivei iar registrul SP pointeaza o adresa din inte-

riorul stivei.

Cei doi registrii de indexare (SI si DI) sunt utilizati pentru indexa-

rea ariilor de date.Registrul Flags,este utilizat pentru setari si a fost

descris anterior.

La procesoarele pe 32 de biti,registrii isi pastreaza denumirea si

semnificatia,dar se adauga sufixul E(de la extended) pentru a forma:EAX,

EBX,ECX,EDX...etc.

In plus,la procesoarele pe 32 de biti se adauga si registrii de control

cr0,cr2,cr3 si cr4 si registrii Debug (dr0,dr1,dr2,dr3,dr6 si dr7).

La procesoarele pe 64 de biti se adauga un set nou de registri denumiti

MMX(mm0,mm1,mm2,mm3,mm4,mm5,mm6,mm7).Practic,acesti registri nu sunt decat

un alias(o redenumire) a registrilor de stiva din procesorul x87 FPU,

care la tipurile noi de procesoare este incorporat impreuna cu x86.Din

acest motiv,orice operatie asupra coprocesorului matematic afecteaza si

registrii MMX dar spre deosebire de registrii de stiva ai procesorului x87

registrii MMX permit accesul aleator la memorie (random acces =nu se mai

respecta regula LIFO si date datele pot fi introduse si extrase in orice

ordine).Daca utilizati acesti registri,este bine sa va asigurati ca

datele nu vor fi corupte in timpul unor operatii matematice.

Procesoarele pe 128 de biti,adauga un set nou de registri denumiti SEE

(SEE=Streaming SIMD Extensions unde SIMD=Single Input Multiple Data )


-9-

Registrii SSE sunt pe 128 de biti si poarta numele de XMMX(xmm0,xmm1,

xmm2,xmm3,xmm4,xmm5,xmm6,xmm7).

Registrele procesorului numeric sunt pe 80 de biti,si apoi pe 128 de

biti la procesoarele SSE.

Pentru efectuarea de operatii cu si asupra datelor stacate in re-

gistrii de procesor,fiecare tip de procesor recunoaste un set de instruc-

tiuni care apeleaza direct conexiunile fizice implementate la nivel de

hardware.Pentru procesorul 8086,setul de instructiuni permise este:
AAA,AAD.AAM,AAS,ADC,ADD,AND,CALL,CBW,CLC,CLD,CLI,CMC,CMP,CMPSB,CMPSW,

DAA,DAS,DEC,DIV,ESC,HLT,IDIV,IMUL,IN,INC,INT,INTO,IRET,Jxx(JA,JAE,JB,JBE,

JC,JCXZ,JE,JG,JGE,JL,JLE,JNA,JNAE,JNB,JNBE,JNC,JNE,JNG,JNGE,JNL,JNLE,

JNO,JNP,JNS,JNZ,JO,JP,JPE,JPO,JS,JZ),LAHF,LSD,LEA,LES,LOCK,LODSB,LODSW,

LOOP/LOOPx,MOV,MOVSB,MUL,NEG,NOP,NOT,OR,OUT,POP,POPF,PUSH,PUSHF,RCL,RCR,

REPxx,RET,RETN,RETF,ROL,ROR,SAHF,SAL,SAR,SBB,SCASB,SCASW,SHL,SHR,STC,STD

STI,STOSB,STOSW,SUB,TEST,WAIT,XCHG,XLAT,XOR
Procesorul 80186 si 80188 au adaugat si urmatoarele instructiuni:

BOUND,ENTER,INSB,INSW,LEAVE,OUTSB,POPA,PUSHA,PUSHW
Procesoarele 80286 au adaugat urmatorul set de instructiuni:

ARLP,CLTS,LAR,LGDT,LIDT,LLDT,LMSW,LOADALL,LSL,LTR,SGDT,SIDT,SLDT,SMSW,STR,

VERR,VERW
Procesoarele 80386 au adaugat urmatorul set de instructiuni:

BSF,BSR,BT,BTC,BTR,BTS,CDQ,CMPSD,CWDE,INSD,IRETD,IRETDF,IRETF,JECXZ,LFS,

LGS,LSS,LODSD,LOOPD,LOOPED,LOOPNED,LOOPNZD,MOVSD,MOVSX,MOVZX,OUTSD,POPAD,

POPFD,PUSHAD,PUSHD,PUSHFD,SCASD,SETA,SETAE,SETB,SETBE,SETC,SETE,SETG,

SETGE,SETL,SETLE,SETNA,SETNB,SETNBE,SETNC,SETNE,SETNG,SETNGE,SETNL,SETNLE,

SETNO,SETNP,SETNS,SETNZ,SETO,SETP,SETPE,SETPO,SETS,SETZ,SHLD,SHRD,STOSD
Procesoarele 80486 au adaugat urmatoarele instructiuni:

BSWAP,CMPXCHG,CPUID,INVD,INVLPG,RSM,WBINVD,XADD
Procesoarele Pentium au adaugat instructiunile:

CMPXCHG8B,RDMSR,RDPMC*,RDTSC,WRMSR
Procesoarele Pentium Pro au adaugat urmatorul set de instructiuni:

CMOVA,CMOVAE,CMOVB,CMOVE,CMOVG,CMOVGE,CMOVL,CMOVLE,CMOVNA,CMOVNAE,CMOVNB,

CMOVNBE,CMOVNC,CMOVNE,CMOVNG,CMOVNGE,CMOVNL,CMOVNLE,CMOVNO,CMOVNP,CMOVNS,

CMOVNZ,CMOVO,CMOVP,CMOVPE,CMOVPO,CMOVS,CMOVZ,SYSENTER,SYSEXIT
AMD K7 a adaugat (inlocuit) registrii:

SYSCALL (echivalent cu SYSENTER) si SYSRET (echivalent cu SYSEXIT)
Procesoarele Pentium III au adaugat urmatoarele instructiuni:

MASKMOVQ,MOVNTPS,MOVNTQ,PREFETCH0,PREFETCH1,PREFETCH2,PREFETCHNTA,SFENCE
Procesoarele Pentium IV au adaugat urmatorul set de instructiuni:

CLFLUSH,LFENCE,MASKMOVDQU,MFENCE,MOVNTDQ,MOVNTL,MOVNTPD,PAUSE

-10-

Procesoarele Pentium IV 6x2 au adaugat urmatoarele instructiuni:

VMPTRLD,VMPTRST,VMCLEAR,VMREAD,VMWRITE,VMCALL,VMLAUNCH,VMRRESUME,VMXOFF,

VMXON
Procesorul 8087(coprocesorul mat.) recunoaste urmatoarele instructiuni:
F2XMI,FABS,FADD,FADDP,FBLD,FBSTP,FCHS,FCLEX,FCOM,FCOMP,FCOMPP,FDECSTP,

FDISI,FDIV,FDIVP,FDIVR,FDIVRP,FENI,FFREE,FIADD,FICOM,FICOMP,FIDIV,FIDIVR,

FILD,FIMUL,FINCSTP,FINIT,FIST,FISTP,FISUB,FLD,FLD1,FLDCW,FLDENV,FLDENVW,

FLDL2E,FLDL2T,FLDLG2,FLDLN2,FLDPI,FLDZ,FMUL,FMULP,FNCLEX,FNDISI,FNENI,

FNINIT,FNOP,FNSAVE,FNSTCW,FNSTENV,FNSTSW,FPATAN,FPREM,FPTAN,FRNDINT,FRSTOR

FRSTORW,FSAVE,FSAVEW,FSCALE,FSQRT,FST,FSTCW,FSTENV,FSTENVW,FSTP,FSTSW,

FSUB,FSUBP,FSUBR,FSUBRP,FTST,FWAIT,FXAM,FXCH,FXTRACT,FYL2X,FY2XPI
Procesorul 80287 adauga instructiunea: FSETPM
Procesorul 80387 adauga instructiunile:

FCOS,FLDENVD,FNSAVED,FNSTENVD,FPREM1,FRSTORD,FSAVED,FSIN,FSINCOS,FSTENVD,

FUCOM,FUCOMP,FUCOMPP
Procesorul Pentium Pro adauga instructiunile:

FCMOVB,FCMOVBE,FCMOVE,FCMOVNB,FCMOVNE,FCMOVNU,FCMOVU,FCOMI,FCOMIP,FUCOMI,

FUCOMIP,FXRSTOR,FXSAVE
Incepand cu Pentium MMX se adauga si instructiunile MMX:

EMMS,MOVD,MODQ,PACKSSDW,PACKSSWB,PADDB,PADDD,PADDSB,PADDSW,PADDUSB,

PADDUSW,PADDW,PAND,PANDN,PCMPEQB,PCMPEQD,PCMPEQW,PCMPGTB,PCMPGTD,PCMPGTW,

PMADDWD,PMULHW,PMULLW,POR,PSLLD,PSLLQ,PSLLW,PSRAD,PSRAW,PSRLD,PSRLQ,PSUBB,

PSUBD,PSUBSB,PSUBSW,PSUBUSB,PSUBUSW,PSUBW,PUNPCKHBW,PUNPCKHDQ,PUNPCKLBW,

PUNPCKLDQ,PUNPCKLDW,PXOR
Instructiunile SSE sunt:

SSE SIMD Floating Point Instructions:

ADDPS,ADDSS,ANDNPS,ANDPS,CMPPS,CMPPSS,COMISS,CVTPI2PS,CVTPS2PI,CVTSI2SS,

CVTSS2SI,CVTTPS2PI,CVTTSS2SI,DIVPS,DIVSS,LDMXCSR,MAXPS,MAXSS,MINPS,MINSS,

MOVAPS,MOVHLPS,MOVHPS,MOVLHPS,MOVLPS,MOVMSKPS,MOVNTPS,MOVSS,MOVUPS,MULPS,

MULSS,ORPS,RCPPS,RCPSS,RSQRTPS,RSQRTSS,SHUFPS,SQRTPS,SQRTSS,STMXCSR,SUBPS,

SUBSS,UCOMISS,UNPCKHPS,UNPCKLPS,XORPS

SSE SIMD Integer Instructions:

PAVGB,PAVGW,PEXTRW,PINSRW,PMAXUB,PMINSW,PMINUB,PMOVMSKB,PSADBW,PSHUFW

SSE2 SIMD Floating Point Instructions:

ADDPD,ADDSD,ANDNPD,ANDPD,CMPPD,CMPSD*,COMISD,CVTDQ2PD,CVTDQ2PS,CVTPD2DQ,

CVTPD2PI,CVTPD2PS,CVTPI2PD,CVTPS2DQ,CVTPS2PD,CVTSD2SI,CVTSD2SS,CVTSI2SD,

CVTSS2SD,CVTTPD2DQ,CVTTPD2PI,CVTTSD2SI,DIVPD,DIVSD,MAXPD,MAXSD,MINPD,

MINSD,MOVAPD,MOVHPD,MOVLPD,MOVMSKPD,MOVSD*,MOVUPD,MULPD,MULSD,ORPD,SHUFPD,

SQRTPD,SUBPD,SUBSD,UCOMISD,UNPCKHPD,UNPCKLPD,XORPD

SSE2 SIMD Integer Instructions

MOVDQ2Q,MOVDQA,MOVDQU,MOVQ2DO,PADDQ,PMULUDQ,PSHUFHW,PSHUFLW,PSHUFD,

PSLLDQ,PSRLDQ,PUNPCKHQDQ,PUNPCKLQDQ

SSE3 SIMD Floating Point:

ADDSUBBPD,ADDSUBPS(aritmetice),HADDPD,HADDPS,HSUBPD,HSUBPS (grafice)


-11-

SSE3 SIMD Integer Instructions

MOVDDUP,MOVSHDUP,MOVSLDUP (aritmetice) si LDDQU (pentru coduri video)
Incepand cu procesoarele Xenon 5100 si seria Core2 se adauga si setul de

instructiuni SSSE3:

PSIGNW,PSIGND,PSIGNB,PSHUFB,PMULHRSW,PMADDUBSW,PHSUBW,PHSUBSW,PHSUBD,

PHADDW,PHADDSW,PHADDD,PALIGNR,PABSW,PABSD,PABSB
Procesoare din familia 80 x 86 au fost proiectate si produse de catre

un numar foarte mare de firme si companii.Dintre acestea,cele mai cunos-

cute sunt:Intel,AMD,Chips and Technologies,Cyrix,IBM,IDT,National Semi-

conductor,NEC,NexGen,Rise Technology,SGS-Thomson,Sis,Texas Instruments,

Transmeta,UMC,VIA etc.

In functie de procesorul instalat in calculatorul d-voastra,alegeti

setul de instructiuni compatibile cu hard-ul instalat.Reciproc,puteti

edita rutine care sa verifice prezenta unei anumite instructiuni si res-

pectiv sa returneze tipul de procesor instalat.

Termenul de ASSEMBLER se utilizeaza atat pentru limbajul de programare,

cat si pentru programele care realizeaza conversia instructiunilor scrise

in assembler la codul binar compatibil cu procesorul instalat.Un astfel

de program de asamblare este diferit de compilatoarele limbajelor de nivel

inalt prin faptul ca exista o corespondenta directa intre fiecare instruc-

tiune si codul binar generat:

EXEMPLU : mov al,061 h se transforma in: 10110000 01100001

adica instructiunea de a deplasa numarul hexazecimal 61 in registrul AL

se traduce prin numarul hexazecimal 0xb061 adica 10110000 01100001 binar

In mod similar,fiecare instructiune se traduce intr-un cod binar com-

patibil cu procesorul instalat.Tehnica mnemotehnica de formare a numelui

fiecarei instructiuni a simplificat procesul extrem de dificil de mani-

pulare a stivelor binare.

Limbajul complet,include pe langa instructiuni si un set de operatori,

la care se adauga declaratiile si definitiile datelor,etichetele,comen-

tariile si macro-urile (daca exista).

Daca utilizati doar instructiuni din setul 8086,functiile si progra-

mele generate vor putea fi rulate practic pe orice calculator modern.

Daca utilizati instructiuni din ultimele seturi implementate,atunci este

posibil ca programele sa nu poata rula pe o serie intrega de calculatoare

din generatiile anterioare.In plus,exista si procesoare cu alt tip de ar-

hitectura interna,incompatibile cu seria 60x86(consultati prospectul).

Este bine sa cunoasteti toata documentatia procesorului cu care

lucrati,dar sa aveti in vedere si arhitectura procesoarelor pe care se va

implementa programul proiectat.Daca lucrati relativ frecvent in assembler

este bine sa aveti un tabel sinoptic cu toate instructiunile,grupate pe

categorii,astfel incat alegerea lor sa fie cat mai usoara.Este important

de stiut daca accesul la memoria stiva se poate face aleator sau doar

secvential (LIFO),daca adresele de segment se pot utiliza pentru a face

calcule si operatii cu adresele de memorie,daca si ce tip de nivele de

intrerupere sunt acceptate de catre sistemul de operare,etc.

Acest manual va cuprinde doar informatii si exemple elementare.Pentru

orice nelamurire sau problema specifica,consultati literatura de specia-

litate sau articolele referitoare la subiect,editate prin Internet.


-12-

Procesorul 8086 a fost inclus intr-o capsula cu 40 de pini(contacte

electrice).La ora actuala,poarta numele de microprocesor si este inclus

in aceeasi categorie cu procesorul Z80 (cel inclus in aproape toate ti-

purile de tastatura).In prezent,este utilizat mai ales pentru scopuri

didactice (minicircuite de automatizare).Are urmatoarea schema electrica:

__________ __________

| |___| |

GND_| 1 40 |_Vcc

| |

<--> AD14_| 2 39 |_AD15 <-->

| |

<--> AD13_| 3 38 |_AD16/S3 -->

| |

<--> AD12_| 4 37 |_A17/S4 -->

| |

<--> AD11_| 5 36 |_A18/S5 -->

| |

<--> AD10_| 6 35 |_A19/S6 -->

| |

<--> AD9_| 7 34 |_BHE/S7 -->

| |

<--> AD8_| 8 33 |_MN/MX <--

| |

<--> AD7_| 9 32 |_RD -->

| |

<--> AD6_| 10 31 |_RQ/GTO,HOLD <-->

| |

<--> AD5_| 11 30 |_RQ/GT1,HOLD <-->

| |

<--> AD4_| 12 29 |_LOCK,WR -->

| |

<--> AD3_| 13 28 |_S2,M/IO -->

| |

<--> AD2_| 14 27 |_S1,DT/R -->

| |

<--> AD1_| 15 26 |_S0,DEN -->

| |

<--> AD0_| 16 25 |_QSO,ALE -->

| |

--> NMI_| 17 24 |_QS1,INTA -->

| |

--> INTR_| 18 23 |_TEST <--

| |

--> CLK_| 19 22 |_READY <--

| |

--> GND_| 20 21 |_RESET <--

| |

|________________________|
Observati cele 16 linii de adresa I/O (notate cu AD0...AD15).Sagetile de

tip <--> si --> sau <-- indica intrarile si/sau respectiv iesirile.


-13-

Setul original de instructiuni 8086 este urmatorul (in limba engleza):

MNEMONIC ODITSZAPC(flags) DESCRIPTION

AAA ?---??*?* ASCII Adjust for Add in AX

AAD ?---**?*? ASCII Adjust for Divide in AX

AAM ?---**?*? ASCII Adjust for Multiply in AX

AAS ?---??*?* ASCII Adjust for Substract in AX

ADC d,s *---***** Add with Carry

ADD d,s *---***** Add

Yüklə 1,03 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin