Sunteți pe pagina 1din 5

Instruciuni de comparare i de salt Obiectivele lucrrii Lucrarea se refer la familiarizarea cu instruciunile de salt, de comparare i moduri de utilizare ale lor.

Breviar teoretic Instruciunea cmp Semnificaia instruciunii const n execuia unei scderi temporare (destinaie) - (surs), fr a se modifica vreun operand, dar cu poziionarea ista ililor de condiie. Sintaxa cmp <destinaie> , <sursa> !fecteaz " af, cf, pf, sf, zf, of (toate). #est$nd ista ilii de condiie, putem deduce relaia dintre cei doi operanzi. %e exemplu, instruciunea cmp ax, x va provoca o scdere temporar (ax) - ( x). %ac zf & ' nseamn c (ax) & ( x). %ac cf & ' nseamn c la scdere a aprut un mprumut, deci (ax) ( ( x), dac sunt considerate ca numere fr semn. Instruciunea cmp se folosete, de o icei, mpreun cu instruciuni de salt condiionat. Instruciunea de salt necondiionat jmp Sintaxa jmp <inta> )n care inta specific adresa de salt (punctul n care se va da controlul). Specificarea intei se poate face printr-o etic*et sau printr-o expresie +tic*etele au asociat un tip (near sau far) i pot fi" , un nume de procedur, o etic*et definit cu " (de tip near), o etic*et definit cu directiva label. +xemple de etic*ete" m'" aici" urm" et. la el far /ata la el near +xist trei tipuri de instruciuni jmp: , de tip short - adresa int este situat la o adres n domeniul 0-'12, 3'145 fa de adresa instruciunii jmp, de tip near - adresa int este n acelai se/ment de cod cu instruciunea jmp de tip far - adresa int poate fi n alt se/ment de cod fa de instruciunea jmp. Instruciuni de salt condiionat Sintaxa jcc <inta> unde cc reprezint o condiie. Instruciunile din aceast cate/orie implementeaz salturi condiionate de valoarea unor ista ili de condiie. Instruciunile de salt condiionat au urmtoarele caracteristici" , toate instruciunile de salt condiionat sunt de tip short (deci directe), ceea ce nseamn c adresa int tre uie s fie la o distan cuprins ntre -'14 i 3'12 de octei fa de instruciunea de salt, exist mai multe mnemonice pentru aceeai instruciune-

, dac condiia nu este ndeplinit, saltul nu are loc, deci execuia continu cu instruciunea urmtoare ce urmeaz dup instruciunea de salt, exist instruciuni at$t pe condiia direct, c$t i pe condiia ne/at, ista ilii de condiie nu sunt afectai. Instruciunile de salt condiionat se utilizeaz dup o instruciune care modific ista ilii de condiie. 6ea mai des nt$lnit situaie este instruciunea de comparaie cmp. 7einem urmtoarele re/uli" , La comparaii cu semn, folosim ,,greater8 i ,,less8 , La comparaii fr semn, folosim ,,above8 i ,,bellow8 9nemonica 6ondiie de salt Interpretare instruciunii :e, :z zf&' zero, e;ual :l, :n/e Less, <ot =reater or +;ual sfof :le, :n/ Less or +;ual, <ot =reater sfof sau zf&' : , :nae, :c cf&' >elo?, <ot ! ove or +;ual, 6arr@ : e, :na cf&' sau zf&' >elo? or +;ual, <ot ! ove :p, :pe pf&' Aarit@, Aarit@ +ven :o of&' Bverflo? :s sf&' Si/n :ne, :nz zf&C <ot Dero. <ot +aual :nl, :/e sf&of <ot Less, =reater or +;ual :ne, :/ sf&of sau zf&C <ot Less or +;ual, =reater :n , :ae, :nc :n e, :a :np, :po :no :ns cf&C cf&C sau zf&C pf&C of&C sf&C <ot >elo?, ! ove or +;ual, <ot 6arr@ <ot >elo? or +;ual, ! ove <ot Aarit@, Aarit@ Bdd <ot Bverflo? <ot Si/n

Exemplu S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este una din literele p sau t i s se afieze ec*ivalentul lui ma:uscul, n caz contrar s se afieze mesa:ul false. ex. Introduceti un sim ol" t # sau Introduceti un sim ol" s false .model small .stacE .data m d 8Introduceti un sim ol8, 'C,'., 8F8 m' d GfalseF8 .code mov ax, Hdata -iniializarea re/istrului de se/ment ds mov ds, ax mov a*, I -afiarea mesa:ului lea dx, m int 1'*

mov a*,' int 1'* cmp al,p :e l' cmp al, t :ne l1 l'" su al,1C* mov a*,1 mov dl,al int 1'* :mp sfarsit l1" mov a*, I lea dx, m' int 1'* sfarsit" mov a*,' int 1'* mov a*, Jc* int 1'* end

-introducerea sim olului de la tastatur - compar sim olul introdus cu sim olul p - salt la etic*eta l' dac e p -n caz contrar se compar cu sim olul t - dac nu e t atunci salt la etic*eta l1 -dac e p sau t se reface din minuscul n ma:uscul - i se afieaz la consol -salt necondiionat la ieirea din pro/ram - afiarea mesa:ului false

Sarcini de lucru '. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este o liter ma:uscul i s se afieze ec*ivalentul lui minuscul, n caz contrar s se afieze mesa:ul eroare. ex. Introduceti un sim ol"! a sau Introduceti un sim ol" eroare 1. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este un semn aritmetic(3,-,K,L) s se afieze mesa:ul true, n caz contrar s se afieze mesa:ul Mfalse8. ex. Introduceti un sim ol" K true sau Introduceti un sim ol" false .. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este o cifr s se afieze sim olul NOP, n caz contrar s se afieze mesa:ul Meroare8. ex. Introduceti un sim ol" Q O sau Introduceti un sim ol"( eroare

J. S se scrie un pro/ram assem ler care verific dac codul sim olului introdus de la tastatur se afl n intervalul 0I4..'115 mesa:ul true, n caz contrar s se afieze mesa:ul Mfalse8. ex. Introduceti un sim ol" t true sau Introduceti un sim ol" 1 eroare Q. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este o liter minuscul i s se afieze ec*ivalentul lui ma:uscul, n caz contrar s se afieze mesa:ul Eroare. Simbolul introdus nu este o liter minuscul.. ex. Introduceti un sim ol" r 7 sau Introduceti un sim ol" R +roare. Sim olul introdus nu este o liter minuscul. R. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este un unul din semnele (,),0,5,S,T s se afieze mesa:ul true, n caz contrar s se afieze mesa:ul Mfalse8. ex. Introduceti un sim ol" ) true sau Introduceti un sim ol" E false 4. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este o vocal s se afieze mesa:ul MoE8, n caz contrar s se afieze mesa:ul Merror8. ex. Introduceti un sim ol" e oE sau Introduceti un sim ol" m error 2. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este o consoan s se afieze mesa:ul MoE8, n caz contrar s se afieze mesa:ul Merror8. ex. Introduceti un sim ol" f oE sau Introduceti un sim ol" J error I. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este una din literele NaP, U P, UcP sau UdP afieze mesa:ul Mtrue8 , n caz contrar s se afieze mesa:ul Mfalse8. ex.

Introduceti un sim ol" true sau Introduceti un sim ol"l false 'C. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este una din literele NVP, UWP, UDP sau UXP afieze mesa:ul Mtrue8, n caz contrar s se afieze mesa:ul Mfalse8. ex. Introduceti un sim ol"V true sau Introduceti un sim ol"L false ''. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este una din cifrele impare N'P, N.P, NQP, N4P, NIP s se afieze mesa:ul MoE8, n caz contrar s se afieze mesa:ul Merror8. ex. Introduceti un sim ol". oE sau Introduceti un sim ol"9 error '1. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este una din cifrele pare U1P, UJP, URP, U2P s se afieze mesa:ul MoE8, n caz contrar s se afieze mesa:ul Merror8. ex. Introduceti un sim ol"R oE sau Introduceti un sim ol"Q error '.. S se scrie un pro/ram assem ler care verific dac sim olul introdus de la tastatur este unul din semnele NFP sau NHP s se afieze mesa:ul M ine8 , n caz contrar s se afieze mesa:ul Meroare8. ex. Introduceti un sim ol" F ine sau Introduceti un sim ol" J eroare 'J. S se scrie un pro/ram assem ler 'Q. S se scrie un pro/ram assem ler 'R. S se scrie un pro/ram assem ler