Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
31.SSE қолдау анықтамасы.
SSE кеңейтілімімен жұмыс жасаудан алдын келесі шарттардың орындалғанына көз жеткізуіміз керек:
32. Программа құрылымы.
Assembler тілінде программа келесі жолдардан тұрады:
Метка команда/деректива операнд; комментарий
Бұл жердегі әрбір жол міндетті емес. Метка ағылшын алфавитінің кез келген әріптер комбинациясынан, сандар және _,$,@,? Символдарынан құралуы мүмкін, бірақ метканың бірінші символы сан болмауы керек, үлкен және кіші әріптер қалыпты жағдайда бірдей болып есептелінеді. Команда процессор командаларынан тұрады бұл командалар орындалатын кодтты немесе дерективаны трансляциялайды.Операнд команда немесе деректива қажет ететін операндтардан тұрады. Комментарий ; символынан басталып, соңына кез келген сөзді немесе фразаы жазуға болады.
Егер метка процессор командасының алдында орналасса онда одан кейін : қойылады.Бұл Assembler ге осы атпен сақталынатын айнымалының құрылуын көрсетеді.
Some_loop:
Lods w; жолдан сөзді оқу
Cmp ax,7; егер ол 7-ге тең болса циклдан шығу
Loopne some_loop
Егер метка Assembler тілінің дерективасының алдында тұрса онда ол осы дерективаның операнды болып саналады және : қойылады.
Метка label тип
Label дерективасы метканы анықтап және оның типін береді: BYTE,WORD,DWORD,FWORD,QWORD,TBYTE,NEAR,FAR.
Келесі командалардың адрестеріне тең мәндерді қабылдайды:
mov метка, 0
mov-жадыға байтты жазады.
call метка
подпрограмманы шақыру
Label дерективасының көмегімен бірдей мәліметтерді оқуға болады.
метка equ өрнек
equ дерективасы оң жағында орналасқан бүтін санды өрнектің нәтижесін меткаға теңестіреді. Бұл өрнектің нәтижесі бүтін сан, адрес немесе кез келген символдардан құралған жол болуы мүмкін.
Truth equ 1
Message1 equ Try again$
Var 2 equ 49[si]
Cmp ax, truth ;cmp ax,1
Db message1;dbTry again$
Mov ax, var2 ; mov ax, 4[si]
equ дерективасы Си тіліндегі define командасына ұқсас болып келеді.
33. Жадыны үлестіру командалары. Құрылымдар.
Псевдокоманда- бұл Assembler тілінде мәліметтерді немесе кодтарды программаға енгізуге арналған деректива. Айнымалыларды анықтау псевдокомандалары ассемблерге айнымалының программадағы орнын, типін және бастапқы мәнін көрсетеді.
Айнымалы аты d* мәні
d* төменде көрсетілген псевдокомандалардың бірі
DB- байтты анықтау
DW- сөзді анықтау
BD- екілік сөзді анықтау
DF- алты байтты анықтау
DQ- төрт еселенген сөзді анықтау
DT- он байтты анықтау
Мән бір немесе бірнеше сандардан символдардан құралған жолдардан ? және DUP операторларынан тұруы мүмкін.
Text_string db Hello World
Number dw 7
Table db 1,2,3,4,5,6,0AL,0BH,0CH,0FH,0EH,0DH
Float_number dd 3.5e7
жадыға жазу үшін mov al, text_string
Құрылым
Struc дерективасы жоғарғы деңгейлі тілдердегі құрылымға ұқсас мәліметтер құрылымын анықтайды.
аты struc
жолдар
аты ends
Жолдар айнымалыларды және құрылымдарды анықтап жазатын псевдокоманда жиынтығы.
point struc ;
x dw 0 ;
y dw 0 ;
z dw 0 ;
color db 3 dup<?>;
point ends
cur_point point<1,1,1,255,255,255>;
mov ax,cur_point.x;
35.Сегменттер. Сегменттерді жүктеудің реті.
34. Программаны ұйымдастыру.
Кез келген тілде жазылған программа бір немесе бірнеше сегменттерден тұрады.Жадыда орналасқан командалар аумағы кодттың сегменті деп аталады. Ал мәліметтер орналасқан аумақ мәліметтер сегменті және стек орналасқан аумақ стек сегменті деп аталады.
cегмент_аты segment readonly түзету тип разряд «класс»
cегмент_аты ends
Сегмент аты сегменттің адресін қолдануға арналған метка сегменттің кез келген операнды міндетті емес.
Readonly егер бұл операнд сегмент дерективасынан кейін жазылса сегмент мәліметтер сегментіне жазылған командалардың қатесін көрсетеді.
Түзету ассемблерге сегменттің қай адрестен басталатынын көрсетеді. Бұл операнд
BYTE- кез келген адрестен
WORD- жұп мәнді адрестен
DWORD- 4-ке бөлінетін адрестен
PARA- 16-ға бөлінетін адрестен
PAGE- 256-ға бөлінетін адрестен басталуы мүмкін.
Cегменттің төменде көрсетілген типтері бар
1.public- бұ ндай типтерді қабылдайтын сегменттер бір класқа біріктіріледі
2.stack- бұл тип public типіне ұқсас айырмашылығы программа басталу кезінде қолданылады
3.common- бірдей аттарды бір стекке біріктіреді
4.at- бұл тип сегменттің жады да нақтыланған абсоляттік адресте орналасу керектігін көрсетеді
5.private-мұндай типтегі сегменттер басқа сегменттермен бірікпейді
Сегменттерді жүктеудің реті
Әдетте сегменттер жадыға программада қай ретпен жазылса сол ретпен жүктеледі бұл ретті төмендегі арнайы дерективалардың көмегімен өзгертуге болады.
.alpha - бұл деректива сегменті жүктеудің алфавиттік ретін орнатады.
.dosseg- бұл деректива MSDos та қолданылатын және ассемблер тілінің жоғарғы деңгейлі программалармен байланыс орнатуды қамтамасыз ететін сегменттердің жүктелу ретін көрсетеді.
dosseg дерективасы төмендегі сегменттердің жүктелу ретін орнатды.
1.CODE- командасының барлық сегменттерін
2.DGROUP тобына және CODE класына жатпайтын барлық сегменттерді жүктейді.
3. DGROUP_ тобының сегменттерін жүктейді:
-BEGDATE класының барлық сегменттерін жүктейді
-BEGDATE BSS және STACK кластарынан басқа барлық сегменттерді жүктейді
-BSS класының барлық сегменттерін жүктейді
-STACK класының барлық сегменттерін жүктейді.
SEQ бұл деректива программада сегменттердің нүктелерін сол ретпен орнатды.Сегменттерді жүктеудің ретін білу программаның ұзындығын есептеуге немесе оның соңының адресін көрсетеді.
36.Процедуралар. Программаның соңы.
Assembler тілінде процедуралар басқа тілдегі функцияларға процедураларға ұқсас.
Assembler процедураға ешқандай шектеу қоймайды, ол программаның адресін call командасы арқылы жіберіп, оның мәнін read командасы арқылы қайтарады.
Метка proc тіл тип USES регистр; TASM
Метка proc тип тіл USES регистр; MASM/WASM
Бұл жердегі барлық операндтар міндетті емес.
Тип екі мән қабылдай алады:
1.NEAR
2.FAR
Егер бұл мәндер программада орнатылып кетсе онда read сәйкесінше RET RETN RETF командаларына өзгереді.
USES процедура өзгерте алатын регистрлер тізімі.
Программаның соңы
end start_label бұл деректива арқылы ассемблер тілінің кез келген программасын аяқтауға болады.
37. Мүмкін болатын командалар жиынтығын жасау директивалары.
Assembler тілі 8086 процессорының командалар жиынтығын қолданады.Егер бұл процессор қолдамайтын команда таңдалса қате деген ақпарат беріледі.
Assembler команданы қолдану үшін келесі дерективалар ұсынылады:
.8086- тек 8086 командалары
.186- 80186 командалары
.286 және.286с- 80286 артықшылық емес командалары
.286p- 80286 барлық командалары
.386 және .386c- 80386 артықшылық емес командалары
.386p - 80386 барлық командалары
.486 және .486c- 80486 артықшылық емес командалары
.486p- 80486 барлық командалары
.586 және .586c- P5(Pentium) артықщылық емес командалары
.586p- P5(Pentium) барлық командалары
.686- P6(Pentium Pro, Pentium II) артықшылық емес командалары
.686p- P6(Pentium Pro, Pentium II) барлық командалары
.8087- NPX 8087 командалары
.287- NPX 80287 командалары
.387- NPX 80387 командалары
.487- NPX 80486 командалары
.587- NPX 80586 командалары
.MMX- IA MM командалары
.K3D- AMD 3D командалары
рұқсат етілген
38.Программалық есептеуішті басқару директивалары.
Программалық есептеуіш Assembler тілінің сегментінің басынан бастап немесе командалардың жылжуын орнататын ішкі айнымалы.
Org бұл деректива программалық есептеуіштің мәнін орнатады. 100h операндының көмегімен org дерективасы com типіндегі файлдарды жазуға көмектеседі.
Even бұл деректива екіге бөлінетін есептеуіштің мәнін орнатады,егер оның мәні тақ болса онда nop командасы арқылы есептеуіштің мәнін екі еселейді.
Align бұл деректива программалық есептеуіштің мәнін жуықтайды.
39.Глобалды жариялау. Шартты ассемблерлеу. Өрнектер.
public дерективасы арқылы хабарланған метка,басқа программа модулінде қолданыла алады.Осы деректива арқылы процедуралардың аттарын айнымалыларды және equ дерективасы арқылы анықталған константаларды хабарлауға болады.
Бұл тілдің міндетті емес операнды метканың басқа программа модулінде шақырылуын көрсетеді.Сom дерективасы айнымалының жалпы түрін сипаттайды. Мұндай айнымалылар барлық программалық модульдерде қол жетімді және бұл айнымалылар программаның біріктірілуі кезінде анықталады. Сom дерективасының міндетті аргументтері метка немесе тип. Міндетті емес операнд «ара қашақтық»(NEAR немесе FAR)
Айнымалының сегменттер тобында бар болуын немесе бұл сегменттер тобында болмауын көрсетеді.
extrn дерективасы басқа программалық модульде анықталған метканы сипаттайды
global дерективасы public және extrn дерективалары сияқты қызмет атқарады.
Шартты ассембрлеу
Көптеген тілдерде шартты операторлар қолданылады.Мысалы Си тілінде препроцессор командалары арқылы (#if,#if def,#if in def және т.б.) жүзеге асады.
Assembler тіліндеде мұндай мүмкіндік бар:
if өрнек end if
if өрнек else ……end if
Егер өрнектің мәні 0-ге тең болса,онда программаның else және end if
аралығындағы бөлігі орындалады.Кері жағдайда if және else аралығы орындалады.
Өрнектер
Өрнек дегеніміз бір-бірімен байланысқан сандар меткалар және жолдардың жиынтығы.
Мысалы: 2+2 өрнек болып табылады мұндағы 2 саннан және қосу операторынан тұратын өрнек
< > операторы өрнекте есептелінбейді тек символдардан тұратын жолды көрсетеді
( ) операторы өрнекте бірінші болып орындалады +,-,*,/ және mod арифметикалық операторлары сәйкес арифметикалық қызметтерді атқарады.
Логикалық операторларға: end,nod,or,xor,shr,shl
Салыстыру операторлары:seg,affset,this,ptr,large,small,short
Басқа операторлар
.(нүкте)-құрылым элементіне сілтеу
: (қос нүте)-сегментті қайта анықтау
[]-қосымша адрестеу
?-инициялизацияланбаған мән
dup- қайталанатын мән
40. Макроанықтамалар. Макрооператорлар. Қайталау блоктары.
Макроанықтама (макрос) деп ассембрленген кезде алынған тақырып программаның текстінде кездесетін программаның бөлігін айтамыз.Макрос MACRO дерективасымен басталып ENDM арқылы аяқталады. Мысалы AL регистрінде орналасқан hex2ascii макроанықтамасы берілген. Ол ASCII кодттың он алтылық жүйесінде былай беріледі:
hex2ascii macro
cmp al,10
sbb al,69h
das
endm
Қайталау блоктары
Қарапайым қайталау блогы(REPT)- программаның бөлігіндегі берілген санның ассембрленуін орындайды. Мысалы егер инициялизацияланған мәндегі 0-ден 0FFh ке дейінгі байттар массивін құру керек болса, бұны DB қайталау псевдокомандасы арқылы келесі түрде жүзеге асырамыз:
exnumber =0
extable label byte
rept 256
db hexnumber
exnumber =hexnumber+1
endm
Макрооператор
Макрооператор &(амперсанд) қайталау блоктары және макроанықтамалар операндысы ретінде жіберілген параметр,ассемблер жолының өңделгенге дейін өзгеруі үшін қажет.
Макрооператор <>(үшбұрышты жақшалар) осы жақшаның ішіне кіретін барлық тексттер текстілік жол ретінде қарастырылады.
Макрооператор !(леп белгісі) үшбұрышты жақшаға қарама қарсы ,тек бір символға сол үшін ол символ үтір немесе үшбұрышты жақша болсын ол макросқа параметрдің бөлігі ретінде беріледі.
Макрооператор % (процент) берілген тексттің нақты екенін көрсетеді
Макрооператор ;;(екі қос нүкте) макрокомментарийдің басы.
41.Файлдарды және листингтерді басқару директивалары. Комментарийлер.
Файлдарды басқару дерективалары
INCLUDE файл_аты- программа текстіне файл текстінің C#include препроцессор командасын қоятын деректива.Әдетте құрамында константа,құрылым және макрос анықтамасы бар файлды қосуда қолданылады.
INCLUDELIB файл_аты компоновщикке программаны құруға керекті обьектілі файлдың және қосымша кітапхананың атын көрсетеді.
Листингтерді басқару дерективалары
Әдетте ассемблерлер обьектілі файлды құру барысында программа листингін жасауға мүмкіндік береді. Листинг- ассемблерлі программаның текстінен, ассеблерленген команданың кодынан,арнайы меткалар тізімінен, сегменттерден және топтардан құралған файл.
Бірнеше деректикалары бар:
TITLE,SUBTITLE,PAGE,NAME, .XLIST, .LIST, .SALL, .SFCOND, .LFCOND, .TFCOND, .CREF, .XCREF
Комментарий
Қарапайым комментарийден басқа арнайы COMMENT дерективасы арқылы жазылатын үлкен блокты комментарийлер бар.
COMMENT операнды- комментарийдің соңы болып есептелінетін кез келген символ.
42. COM типіндегі программалар.
Келесі текстті кез келген текстілік редакторда тереміз
;hello-1.asm
;Экранға Hello World хабарламасын шығару және аяқтау
.model tiny
.code
org 100h
start: mov ah,9
mov dx,offset message
int 21h
ret
message db “Hello World”,0Dh,0Ah.$
end start
және оны hello-1.asm деп сақтаймыз.
Обьектілік файлдың форматы барлық қарастырылған үш ассемблерге сәйкес келеді сол үшін бір пакеттің ассемблерін басқа компоновщикке қолдануға болады.
TASM үшін
tlink /t /x hello-1.obj
MASM үшін (link командасы LINK.EXE 16-биттік версиясын шақырады)
link hello-1.obj …NUL…
exe2bin hello-1.exe hello-1.com
WASM үшін
wlink file hello-1.obj form DOS COM
Енді бізде өлшемі 23-байтты hello-1.com файлы пайда болды.Егер оныорындау барысында экранда Hello World жолы пайда болады және программа аяқталады.
Оның қалай жұмыс жасайтынын көру үшін программаға енгізілген текстті қараймыз.
Бірінші жол код сегменттері,мәлімет және стек байланысқан TINY жадының модельін анықтайды.
.CODE дерективасы сегменттік кодын бастайды.
ORG 100h программалық есептеуішке мән енгізеді,себебі COM файлды жүктеу барсында DOS жадысында бірінші 256-байтты PSP блок мәліметі алады және программа коды кейін орналасады.START меткасы программада бірінші командадан алдын тұрады және END дерективасында қолданылады.Программаның қандай командадан басталатынын көрсетіп тұрады.
Команда MOV AH,9 AH регистріне 9 санын енгізеді-DOS номер функциясы «жолды енгізу»
Команда MOV DX,OFFSET Message бастапқы мәліметті Message меткасын DX регистріне орналастырады.
Команда INT21h DOS сегменттік фунуциясын шақырады.
43. EXE типіндегі программалар
EXE- программалардың орындалуы қиын,бірақ олр үшін 64КБ өлшемді шектеу бар,сол себепті үлкен программалар осы форматты қолданады.
Мысалы
;hello-2.asm
; Экранға Hello World хабарламасын шығару және аяқтау
.model small
.stack 100
.code
Start: mov ax,DGROUP
mov ds,ax
mov dx,offset message
mov ah,9
int 21h
mov ax,4S00h
int 21h
.data
Message db “Hello World!”,0Dh,0Ah,$
End start
Бұл мысалда үш сегмент анықталады- стек сегменті 256 байтты .STACK дерективасынан,код сегменті .CODE дерективасының бастауымен,және мәліметтер сегменті .DATE дерективасымен басталатын.
EXE программасы қосылғанда DS регистрінде message жолындағы сегент адрестері сақталмайды,ал DOS фунциясын шақыру үшін регистр жолдың сегменттік адресін білу керек.
44. Текстік режимде экранға шығару. Видеожадымен тікелей жұмыс.
Текстік режимде шығару DOS-та бірнеше функциясы бар
Функция DOS 02h: STDOUT-қа символ жазу Ctrl+Break тексерісімен.
Енгізу: AH=02h
DL=ASCII символ коды
Шығару: AL=соңғы жазылған символ коды
Функция DOS 06h: STDOUT-қа символ жазу Ctrl+Break тексерісінсіз.
Енгізу: AH=06h
DL=ASCII символ коды(0FFh тан басқа)
Шығару: AL= жазылған символ коды
Функция DOS 09h: STDOUT-қа жол жазу Ctrl+Break тексерісімен
Енгізу: AH=09h
DS:DX=$ символымен аяталатын жол адресі(24h)
Шығару: AL=24h(соңғы жазылған символ коды)
Функция DOS 40h: Файлға немесе құрылғыға жазу
Енгізу: AH=40h
ВX = STDOUT үшін 1немесе STDERR үшін 2
DS:DX= жол басы адресі
СХ= жол ұзындығы
Шығару: CF=0,
AX=жазылған байттар саны
Функция INT 29h: Экранға жылдам символ береді
Енгізу: AH= ASCII символының коды
Видеожадымен тікелей жұмыс
Экранда кескінделгеннің бәрі- текст болсын,графика болсын құрылған видеоадаптердің жадында біруақытта болады.Экранда кескін пайда болуы үшін міндетті түрде видеоадаптер жадында жазылуы тиіс.Бұл мақсатқа жадының арнайы бөлігі арналады, 0B800h:0000h абсолютті адрестен басталып 0B800h:0FFFFh аяталатын.Жадының осы аумағына жазылған барлық программалар тез арада видеоадаптер жадына көшіріледі.Тексттік режимде кескіндік символды сақтау үшін екі түрлі байт қолданылады: ASCII символы кодының байты және оның атрибут байты.
45. Пернетақтадан енгізу.
DOS пернетақтадан мәлімет оқу функциялары:
Функция DOS 0Ah: Буферге STDIN жол символдарын есептеу
Енгізу: AH=0Ah
DS:DX= буфер адресі
Шығару: Буферде енгізілген жолдар сақталады
Функция DOS 01h: STDIN дан символды эхомен, күтумен және Ctrl-Break тексеруімен есептеу.
Енгізу: AH=01h
Шығару: AL= ASCII код символы немесе 0. Егер AL=0 болса ASCII код символының AL кеңейтіліміне қайтару
Функция DOS 08h: STDIN дан символды эхосыз, күтумен және Ctrl-Break тексеруімен есептеу.
Енгізу: AH=08h
Шығару: AL= символ коды
Функция DOS 07h: STDIN дан символды эхосыз, күтумен және Ctrl-Break тексеруінсіз есептеу.
Енгізу: AH=07h
Шығару: AL= символ коды
Функция DOS 06h: STDIN дан символды эхосыз, күтусіз және Ctrl-Break тексеруінсіз есептеу.
Енгізу: AH=06h
DL=0FFh
Шығару: ZF=1 , егер пернетақта басылмаса және ALL=00
ZF=0 , егер пернетақта басылса бұл жағдайда ALL=символ коды
Функция DOS 0Вh: Пернетақтаның күйін бақылау
Енгізу: AH=0Вh
Шығару: AL= 0, егер пернетақта басылмаса
AL= 0FFh, егер пернетақта басылса
Функция DOS 0Сh: Буферді өшіру және символды есептеу
Енгізу: AH=0сh
AL= DOS функциясының номері (01,06,07,08,0Ah)
Шығару: Шақырылған функцияға байланысты
46.Графикалық видеорежимдер. VGA режимдерімен жұмыс істеу.
Режим номері |
Рұқсат |
Түс саны |
11h |
640x480 |
2 |
12h |
640x480 |
16 |
13h |
320x200 |
256 |
VGA негізгі графикалық режимдері
INT 10h AH=0Ch: Нүктені экранға шығару
Енгізу: AH=0Сh
BH= видеобеттер номері
DX= жол номері
CX= баған номері
AL=түс номері
Шығару: ешқандай
INT 10h AH=0Dh: Нүктені экраннан есептеу
Енгізу: AH=0Dh
BH= видеобеттер номері
DX= жол номері
CX= баған номері
Шығару: AL=түс номері
47. Графикалық видеорежимдер. SVGA режимдерімен жұмыс істеу.
SVGA-нің стандартты графикалық режимдері 4-,8-,15-,16-,24- және 32-биттік болуы мүмкін.
4-биттік режимдер(16 түс)
VGA
012h: 640x480 (64Кб )
VESA VBE 1.0
102h: 800x600 (256Кб)
104h: 1024x768 (384 Кб)
106h: 1280x1024 (768 Кб)
8-биттік режимдер(256 түс)
VGA
013h: 320x200 (64Кб )
VBE 1.0
100h: 640x400 (256Кб)
101h: 640x480 (320 Кб)
103h: 800x600 (512 Кб)
105h: 1024x768 (768 Кб)
107h: 1280x1024 (1.3 Mб)
VBE 2.0
120h: 1600x1200 (1.9 Mб)
15-биттік режимдер(32 К түс)
VBE 1.2
10Dh: 320x200 (128Кб)
110h: 640x480 (768 Кб)
113h: 800x600 (1 Mб)
116h: 1024x768 (1.5 Mб)
119h: 1280x1024 (2.5 Mб)
VBE 2.0
121h: 1600x1200 (3.8 Mб)
16-биттік режимдер(64 K түс)
VBE 1.2
10Eh: 320x200 (128Кб)
111h: 640x480 (768 Кб)
114h: 800x600 (1 Mб)
117h: 1024x768 (1.5 Mб)
11Ah: 1280x1024 (2.5 Mб)
VBE 2.0
122h: 1600x1200 (3.8 Mб)
24-биттік және 32-битік режимдер (16 М түс)
VBE 1.2
10Fh: 320x200 (192 Кб)
112h: 640x480 (1 Mб)
115h: 800x600 (1.4 Mб)
118h: 1024x768 (2.3 Mб)
11Bh: 1280x1024 (3.7 Mб)