• mov SX , ; CX
  • jne label2 ; agar qiymatlardan biri 0 bolmasa, 2 yorligiga oting
  • mov dx, ofset qatori malumotlar segmentining boshlanishiga nisbatan String yorligining
  • string db "raqamlardan biri 0$" ;
  • mov dx, ofset string1 String1 ning
  • Operand biti 0 1 Natija biti 10 1-misol mov AX,0FFFFh AX emas ;AX=0000h
  • ZF bayroqlarini
  • Bajarilishi kerak bolgan vazifa.
  • Birinchi operand biti 0101




    Download 183,36 Kb.
    bet32/64
    Sana13.05.2024
    Hajmi183,36 Kb.
    #230077
    1   ...   28   29   30   31   32   33   34   35   ...   64
    Bog'liq
    Системное программирование, практика

    Birinchi operand biti 0101

    Natija biti 0 001

    Ikkinchi operand biti 0011

    SF bayrog'i 1 ga o'rnatiladi, agar buyruq bajarilishi belgi biti o'rnatilgan raqamga olib kelsa.
    ZF bayrog'i 1 ga o'rnatiladi, agar buyruq bajarilishi natijasida faqat ikkilik nollardan iborat raqam paydo bo'lsa.
    PF bayrog'i 1 ga o'rnatiladi, agar buyruq bajarilishi natijasida uning bitlarida juft sonli ikkilik raqamlar mavjud bo'lsa.
    1-misol
    test AX,1
    jne label 2 : ;Agar AX-da 0 bit o'rnatilgan bo'lsa, o'tish
    je label 1 : ;Agar AX dagi 0 biti tozalangan bo'lsa, o'tish
    10-jadval - 1.4.1.1-misol

    1.

    .model kichkina

    ; kod, ma'lumotlar va stek segmentlari birlashtirilgan xotira modeli.


    .kod

    ; ma'lumotlarni o'z ichiga olgan kod segmenti.


    org 100h

    ; COM faylining boshlanishi


    boshlanishi:

    ; dastur kodini boshlash belgisi


    mov SX , <1-raqam>

    ; CX ga 1 raqamini yuklang


    mov BX , <2-raqam>

    ; B X ni 2 raqami bilan yuklang


    test cx, bx

    ; cx registrlaridagi raqamlarni bx bilan mantiqiy taqqoslang


    jne label2

    ; agar qiymatlardan biri 0 bo'lmasa, 2 yorlig'iga o'ting


    yorliq1

    ; agar qiymatlardan biri 0 bo'lsa, 1 yorlig'iga o'ting


    r et

    ; DOS funktsiyasi "dasturni tugatish" (bajarilmaydi)


    label1:

    ; blokning boshlanishi teglar Yorliq 1


    mov ah, 9

    ; AN registriga DOS funksiyasining “chiqish liniyasi (9)” raqamini joylashtiramiz.


    mov dx, ofset qatori

    ma'lumotlar segmentining boshlanishiga nisbatan String yorlig'ining ofsetini joylashtiradi


    int 21 soat

    ; DOS funktsiyasi "chiziq chiqishi"


    r et

    ; DOS funktsiyasi "dasturni tugatish"


    string db "raqamlardan biri 0$"

    ; chiqish ma'lumotlarini o'z ichiga olgan c qator.


    label2:

    ; blokning boshlanishi teglar Yorliq 2


    mov ah, 9

    ; AN registriga DOS funksiyasining “chiqish liniyasi (9)” raqamini joylashtiramiz.


    mov dx, ofset string1

    String1 ning ofsetini ma'lumotlar segmentining boshidan DX registriga joylashtiradi


    int 21 soat

    ; DOS funktsiyasi "chiziq chiqishi"


    r et

    ; DOS funktsiyasi "dasturni tugatish"


    s tring1 db '0$ ga teng emas'

    ; chiqish ma'lumotlarini o'z ichiga olgan c qator.


    oxiri boshlanadi

    ; dastur kodini tugatish belgisi

    Ushbu misol ikkita qiymatni taqqoslaydi (6-qator), agar ikkita qiymatdan biri nolga teng bo'lsa, tegga o'ting label 1 (satr (10)), keyin buyruqlar bajariladi, bo'lsa, ushbu belgidan keyin agar ikkita qiymatdan biri nolga teng bo'lsa, 2- yorlig'iga o'ting
    2-misol
    test SI,8
    jne bitities ;SIda 3-bit oʻrnatilgan boʻlsa, oʻtish
    bitno ;Agar AX dagi 0 biti tozalansa, o‘tish
    3-misol
    test DX, 0FFFFh
    jz null ;DX=0 bo'lsa, sakrash
    jnz smth ;Agar DX 0 boʻlmasa, oʻtish
    EMAS buyruq .
    NOT ko'rsatmasi ( NOT Inversion, 1 ning to'ldiruvchisi, mantiqiy inkori) ko'rsatilgan operandning bitlarini inversiyani amalga oshiradi, 0 ni 1 bilan almashtiradi va aksincha. Operand sifatida siz registrni (segment registridan tashqari) yoki bayt yoki so'z hajmidagi xotira katakchasini belgilashingiz mumkin. Operand sifatida bevosita qiymatdan foydalanishga ruxsat berilmaydi. Buyruq protsessor bayroqlariga ta'sir qilmaydi.
    Bitli inversiya qoidalari:

    Operand biti 0 1

    Natija biti 10

    1-misol
    mov AX,0FFFFh
    AX emas ;AX=0000h
    2-misol
    mov SI, 5551h
    SI emas;SI=AAAEh
    Mantiqiy operatsiyalar guruhlari ishining tipik misollari.
    Quyidagi bir-biriga bog'liq bo'lmagan misollar uchun, deb taxmin qiling:
    - AL tarkibida 1100 0101 mavjud
    - BH tarkibida 0101 1100:

    1. VA AL,BH ; AL 0100 0100 ga sozlang


    2. YOKI BH,AL ; BH 1101 1101 da oʻrnatilgan
    3. XOR AL,AL ; AL 0000 0000 ga oʻrnatiladi
    4. VA AL,00 ; AL 0000 0000 ga oʻrnatiladi
    5. VA AL,0FH ; AL 0000 0101 ga oʻrnatiladi
    6. YOKI CL,CL ; SF va ZF bayroqlarini o'rnatadi

    3 va 4-misollar registrni qanday tozalashni ko'rsatadi.


    5-misol AL registrining chap to'rt bitini tozalaydi.
    OR buyrug'idan quyidagi maqsadlarda foydalanishingiz mumkin :

    1. YOKI CX, CX ;CX nol uchun tekshirilmoqda


    JZ ;Nol bo'lsa, o'tish
    2. YOKI CX, CX ;CX da belgi tekshirilmoqda
    JS ;Agar manfiy bo'lsa, o'tish
    Bajarilishi kerak bo'lgan vazifa.

    1. EMU 8086 emulyatorini ishga tushiring .

    2. Assembler dasturlarini loyihalash qoidalaridan foydalanib, 1.4.1.1 misol kodini kiriting va kodni bajarish uchun ishga tushiring.

    3. 1.4.1.1-sonli kod misolining ishini tahlil qiling

    4. Yordamdan foydalanish EMU 8086 emulyatori , buyruqlar qanday ishlashini bilib oling ( jne , je , js , jz )

    5. O'qituvchingizdan topshiriq oling (to'rt variantdan biri (buyruqlar ( va , yoki , xor , test , emas ))) va montaj dasturlarini loyihalash qoidalaridan foydalanib, raqamlar (ikkilik) bilan qanday ishlashini tavsiflovchi (ko'rsatadigan) uchta dastur yozing. , o'nlik, o'n oltilik tizimlarning yozuvlari) berilgan misollar ro'yxatiga muvofiq .

    6. Ishingiz natijalarini o'qituvchiga ko'rsating.

    Amalga oshirish tartibi:
    1. Nazariy materialni o‘rganish.
    2.Dastur tuzing.
    3. Hisobot tuzing.

    Download 183,36 Kb.
    1   ...   28   29   30   31   32   33   34   35   ...   64




    Download 183,36 Kb.