М. З. Якубова техника ғылымдарының кандидаты, доцент



бет91/141
Дата26.09.2023
өлшемі3.68 Mb.
#478578
1   ...   87   88   89   90   91   92   93   94   ...   141
КОМПЬЮТЕРЛІК ЖҮЙЕЛЕР АРХИТЕКТУРАСЫ

Тапсырмалар:
  • N енгізілген саны бойынша массив элементтерінің санын есептеу.
  • Массивтегі барлық жұп элементтерді нөлмен алмастыру.
  • Бірінші нөлге тең массивтегі элементті анықтау.
  • Массивтің барлық тақ элементтерін баспаға беру.
  • Массивті өсу реті бойынша белгілі бір алгоритммен іріктеу.

  • 1-қосымша
    ; Массивтің ең үлкен элементін іздеу программасы

JMP ARRAY STRING1 STRING2 REZ START:
MOV
INT MOV MOV
START
DB 10 DUP (0) DB
DB DB
MOV DX,OFFSET STRING1 AH,09
21H
SI,OFFSET ARRAY CX,10
174
M1:
INT MOV INC LOOP MOV MOV MOV
M2:
CMP GDE MOV
M3:
MOV AH,01 21H
SI,[AL] SI
M1
SI,OFFSET ARRAY CX,10
BL,[SI]
MOV AL,SI BL,AL
M3 BL,AL
INC SI
LOOP MOV MOV MOV INT MOV INT INT
END
M2
BYTE PTR REZ,BL DX,OFFSET STRING2 AH,09
21H
AH,01 21H
20H
2-қосымша
; Сандарды символдық түрден екілік СЖ ауыстыратын ішкі программа
; SI – символдық форма адресі
; DI – санның адресі PSN PROC
PUSH PUSH PUSH MOV CMP JNE MOV JMP
MMM1: MOV MMM2: INC
MOV SUB
MOV MUL
MOV
AX CX DX
AL,[SI]
AL,сызба-сызба MMM1
CH,80H MMM2
CH,00H
SI AL,SI AL,30H DL,10 DL CL,AL
Бақылау сұрақтары:
  • Массивтер қандай мақсаттарда қолданылады?
  • Жоғары деңгейлі программалау тілдерінде массивтермен жұмыс қалай ұйымдастырылады?
  • Массивтерді іріктеу және ондағы элементтерді іздеудің қандай алго- ритмдері бар?

  • 3.12. Пернетақтамен жұмысты іске асыратын командалар Жұмыс мақсаты: пернетақтаны басқаратын және мәлімет-
    терді оқитын командаларды игеру. Процедуралармен жұмыс әдістерін қарастыру.
    BIOS құралдары
    Экранға шығару мүмкіндіктеріндей, BIOS-тың пернетақта- мен басқару және мәліметтерді оқудағы мүмкіндіктері үлкен. Барлық мүмкіндіктерін арнайы функцияларды пайдалана оты- рып көруге болады, мысалы, 16h үзу функциясын және перне- тақта жағдайының байттарымен операцияларды орындау арқы- лы.
    INT 16h, АН= 0, 10h, 20h – күтуі бар символды оқу.
    175

INC MOV SUB ADD OR TEST JZ XOR INC
MMM3: MOV INC
INC
POP POP POP POP
RET ENDP
SI AL,SI AL,30H CL,AL CL,CH CL,80H MMM3 CL,7FH CL
[DI],CL
SI DI DX DX CX AX PSN
176

Енгізу

АН = 00h (83/84-key), 10h (101/102-key), 20h (122-key)

Шығару

AL = ASCII-кодының символы, 0 немесе префикс скан-код АН = кеңейтілген ASCII-коды

Пернетақтаның әр батырмасына скан-код сәйкес келеді. Бұл код пернетақтаны басып, босатқан кезде осы код BIOS-та өңде- леді. 16h үзу функиясы осы өңдеуді тоқтатпай, басылу кодын алуға мүмкіндік береді. Егер басылған батырмаға ASCII-симво- лы сәйкес келсе, АН функциясына осы символдың коды, ал AL-ға батырманың скан-коды қайтады. 00Н функциясы тек қана 84-батырмалы пернетақтаға арналған комбинацияларды, l0h барлық 101 – 105 – батырмалы комбинацияларды, 20h – 122-ба- тырмалыларды өңдейді. Егер ол BIOS қолданылса, пернетақ- таның типін 16h үзуінің 09h функциясы арқылы анықтауға бо- лады,
INT 16h, АН = 1, 11h, 21h символды тексеру

Енгізу

АН = 01h (83/84-key), 11h (101/102-key), 21h (122-key)

Шығару

ZF = 1, егер буфер бос болса
ZF = 0, егер буферде символ болса
AL = ASCII-кодының символы, 0 немесе скан-код префиксі
АН = басылған батырманың скан-коды немесе кеңейтілген ASCII-коды

Символ пернетақтаның буферінде қалады, егер ол 84-батыр- малы пернетақталардағы кеңейтілген ASCII-кодына сәйкес бол- са, кейде 01h функциясын өңдеу барысында BIOS буфердегі символды өшіріп тастайды.
INT 16h, АН = 05h символды пернетақтаның буферіне ор- наластыру

Енгізу

АН = 05h
СН = скан-коды CL = ASCII-коды

Шығару

AL = 00, егер амал сәтті орындалса
AL = 01h, егер пернетақтаның буфері толып кетсе АН регистрі көптеген BIOS өзгертілген

177
Егер буферден оқитын функция ASCII-кодын пайдаланатын болса, СН регистріне скан-кодтың орнына 0-ді қоюға болады. Мысалы, келесі программа іске қосылу барысында DIR коман- дасын шақырады.
Мысал:

org 100h

; СОМ-файлдың басы

begin:

; программа кодының басталу белгісі

mov cl,'d'

; cl регистріне ASCII-кодының «d» әрпін береміз

call ungetch

; ungetch: белгісіне көшеміз (ішкі программаны шақыру)

mov cl,'i'

; cl регистріне ASCII-кодының «i» әрпін жазамыз

call ungetch

; ішкі программаны шақырамыз

mov cl,'r'

; cl регистріне ASCII-кодының «r» әрпін жазамыз

call ungetch

; ішкі программаны шақырамыз

mov cl,0Dh

; жолды аудару

Ungetch proc

; ішкі программаның басқару белгісі

mov ah,05h

; AH = функция нөмірі

mov ch,0

; CH = 0 (скан-коды маңызды емес)

int 16h

; үзу

ret

; «процедураны аяқтау»

Ungetch endp

; ішкі программаны аяқтау

end begin

; программа кодының аяқталу белгісі



Достарыңызбен бөлісу:
1   ...   87   88   89   90   91   92   93   94   ...   141




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет