Assembler
Upcoming SlideShare
Loading in...5
×
 

Assembler

on

  • 1,523 views

hi

hi

Statistics

Views

Total Views
1,523
Views on SlideShare
1,436
Embed Views
87

Actions

Likes
0
Downloads
17
Comments
0

4 Embeds 87

http://www.arkhangai.net 51
http://arkhangai.net 21
http://apa.mn 12
http://www.apa.mn 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Assembler Presentation Transcript

  • 1. Ñèñòåì ïðîãðàìì÷ëàë áà àññåìáëåð õýë Ëåêö -24 öàã Ëàáîðàòîðè – 32 öàã Íèéò êðåäèò – 2,5 7 õîíîãò ëåêö – 4 öàã (6 äîëîî õîíîã îðíî) Ëàá – 2 öàã (16 äîëîî õîíîã îðíî) ßâöûí øàëãàëò: 7 äàõ äîëîî õîíîã, 14 äýõ äîëîî õîíîã
  • 2. Àøèãëàõ íîì
    • - Â.Þðîâ
    • ASSEMBLER
    • Moñêâà 2001 îí
    • Â.Í.Ïèëüùèêîâ
    • Ïðîãðàììèðîâàíèå íà ÿçûêå àññåìáëåðà IBM PC
    • Ìîñêâà 2000 îí
    • Áðåäëè.Â
    • Ïðîãðàììèðîâàíèå íà ÿçûêå àññåìáëåðà
    • Ý.Ìàæèãñ¿ðýí
    • IBM PC-èéí àññåìáëåð õýë
    • Óëààíáààòàð 2003 îí
  • 3. Ëåêö 1
    • Îðøèë
    • ÒÁÝÌ-û á¿òýö, çîõèîí áàéãóóëàëò
    • Ìàøèíû àðèôìåòèê ¿íäýñ
    • Ñàíàõ îé
    • Ìýäýýëëèéã ä¿ðñëýõ
    • Ðåãèñòð¿¿ä
  • 4. Ìàøèíû àðèôìåòèê ¿íäýñ
    • Òîîëëûí ñèñòåì
    • Òîîã ä¿ðñýëæ áè÷èõ áà ò¿¿í äýýð ¿éëäýë õèéõ ä¿ðìèéí ñèñòåìèéã òîîëëûí ñèñòåì ãýíý.
    • Õî¸ðòûí òîîëëûí ñèñòåì (0, 1) ñóóðü íü 2, 10 ãýæ òýìäýãëýíý.
    • 1011b 1100,11b
    • Íàéìòûí òîîëëûí ñèñòåì (0,1,2,3,4,5,6,7) ñóóðü íü 8
    • 126q 35,123q
    • Àðàâòûí òîîëëûí ñèñòåì (0,1,2,3,4,5,6,7,8,9) ñóóðü íü 10
    • 1953d 892,23d
    • Àðâàíçóðãààòûí òîîëëûí ñèñòåì
    • (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) ñóóðü íü 16
    • 2A4Dh 7569h 0AHh
  • 5. Õî¸ðòûí àðèôìåòèê Íýìõèéí õ¿ðä ¯ðæèõèéí õ¿ðä
    • 2-òûí íýã öèôðèéã áèò ãýíý. N áèò 2-òûí òîîãîîð 2 n -1 õ¿ðòýëõ 10-òûí òîîã ä¿ðñýëæ áîëíî. Æèøýý íü: 8 áèòýýð 2 8 -1=256-1=255, 16 áèòýýð 2 16 -1=65536-1=65535 õ¿ðòýëõ 10-òûí òîîã ä¿ðñýëæ áîëíî.
    • ¯¿íèé àäèë N áèò òýìäýãòýé òîîíû õóâüä õàìãèéí èõ óòãà íü 2 n-1 -1, õàìãèéí áàãà óòãà íü -2 n-1
    • Áàéíà. Æèøýý íü: 8 áèò òýìäýãòýé òîîíû õóâüä: èõ óòãà íü 2 7 -1=128-1=127 áîë áàãà óòãà íü -2 7 = -128 áàéíà.
    1 0 1 0 0 0 1 0 x 10 1 1 1 0 0 1 0 +
  • 6. Íàéìòûí àðèôìåòèê 16 15 14 13 12 11 10 7 7 15 14 13 12 11 10 7 6 6 14 13 12 11 10 7 6 5 5 13 12 11 10 7 6 5 4 4 12 11 10 7 6 5 4 3 3 11 10 7 6 5 4 3 2 2 10 7 6 5 4 3 2 1 1 7 6 5 4 3 2 1 0 0 7 6 5 4 3 2 1 0 +
  • 7. 2-ò, 10-ò, 16-òûí õàìààðàë F 15 1111 10 16 10000 E 14 1110 D 13 1101 C 12 1100 B 11 1011 A 10 1010 9 9 1001 8 8 1000 7 7 111 6 6 110 5 5 101 4 4 100 3 3 11 2 2 10 1 1 1 0 0 0 16-ò 10-ò 2-ò
  • 8. Ñàíàõ îé
    • Ìýäýýëëèéã ò¿ð õàäãàëàõ áàéãóóëàìæûã ñàíàõ îé ãýíý. Ñàíàõ îé áàéòóóäûí äàðààëëààñ òîãòîõ áºãººä ò¿¿íèéã äàðààëñàí òîîãîîð äóãààðëàñàí áàéíà. Ýíý äóãààðûã ñàíàõ îéí õàÿã ãýíý.
    • Áàéò íü 8 áèòýýñ òîãòîíî.
    • 1 ¿ã (word) = 2 áàéò
    • 2 ¿ã (2 word) = 4 áàéò
    • Ñàíàõ îéã õýìæèõ íýãæ:
    • 1 Êèëîáàéò = 1024 áàéò
    • 1Ìèãàáàéò = 1024 Êáàéò
    • 1Ãèãàáàéò = 1024 Ìáàéò
    • 1 Òåðàáàéò = 1024 Ãáàéò
    • Ñàíàõ îéã áàéòààð õàÿãëàâàë õàÿãèéí äóãààð 1-ýýð, ¿ãýýð õàÿãëàâàë 2-îîð,õî¸ð ¿ãýýð
    • õàÿãëàâàë 4-ººð íýìýãäýíý.¯ã, 2 ¿ãèéã õàÿãëàõ ¿åä áàãà áàéòûí õàÿãèéã àøèãëàäàã.
  • 9. Ìýäýýëëèéã ä¿ðñëýõ 1.Õî¸ðòûí ìýäýýëýë: Òîîí ìýäýýëýë: áàéò Òýìäýãã¿é òîî ¿ã Òýìäýãòýé òîî 2 ¿ã Ѻðºã òîîã 2-òûí ã¿éöýýëòýýð ä¿ðñëýíý gon(x)=2 k -mod(x) gon(-1)=2 8 -1=256-1=255=FFh gon(-2)=gon(-1)-1=255-1=254=FEh gon(-128)=2 8 -128=256-128=128=80h Òîîí áóñ ìýäýýëýë öýã, ä¿ðñ äóó àâèà áîëîí áóñàä 2. Òýìäýãò ìýäýýëýë: 1 òýìäýãò 1 áàéò ýçýëíý. (ASCII êîä) 1 òýìäýãò 2 áàéò ýçýëíý. (UNICOD) Äàðààëñàí òýìäýãò äàðààëñàí áàéò (¿ã) –ä áàéðëàíà. 3. Êîìàíä ïðîöåñîð áèåë¿¿ëýõ, òóãàé õýëáýðòýé áè÷èãäñýí ìýäýýëýë þì. ¯éëäëèéí êîä, ¿éëäýëä îðîõ îïåðàíäûí õàÿã çýðãýýñ òîãòîíî.1-6 áàéò ýçýëíý. òîî òýìäýãò êîìàíä Æèøýý ðåãèñòðèéí õóâüä 10101010 11000011 00001111 11110000 00000000 11111111 00010011 10011010 R E T U P M O C EA 0001 0002 A5 0000 1000 0004 A000 r2 r1 11 w kod Kod - ¿éëäëèéí êîä, w – 0 áîë áàéò ðåãèñòð 1 áîë ¿ã ðåãèñòð r – ðåãèñòðèéã çààõ 3 áèò óòãà, Æèøýý íü r – 000 áîë AX r – 001 áîë CX r – 100 áîë SP r – 101 áîë BP MOV AX,BX – 1000 1011 1100 0011 – 8B C3
  • 10. Ðåãèñòð¿¿ä
    • Ïðîöåññîðûí õóâèéí ñàíàõ îéã ðåãèñòð ãýíý.
    • Ðåãèñòðèéã òîîãîîð õàÿãëàõã¿é, õàðèí íýðëýñýí
    • áàéíà. Ðåãèñòðèéã àíãèëíà:
    • Åðºíõèé çîðèóëàëòûí
    • AX, BX, CX, DX AX:
    • AH, AL BH, BL CH, CL DH, DL
    • Ñåãìåíòèéí
    • SS, CS, DS, ES CS:
    • Õàÿãèéí
      • SI, DI, BP, SP, IP
      • 4. Òºëâèéí (Flags)
    • CF – Øèëæëýãèéí ôëàã
    • PF – Òýãø, ñîíäãîéí ôëàã
    • AF – Àðàâòûí øèëæëýãèéí ôëàã
    • ZF – Òýãèéí ôëàã
    • SF – òýìäãèéí ôëàã
    • TF – Òàêò ôëàã
    • IF – èíòðàôò ôëàã
    • DF - ×èãëýëèéí ôëàã
    • OF – Õýò ä¿¿ðýëòèéí ôëàã
    AL AH CF PF AF ZF SF TF IF DF OF
  • 11. Ëåêö 2
    • Àññåìáëåð ïðîãðàì, ò¿¿íèéã õºðâ¿¿ëýõ
    • Õàÿãëàõ àðãà
    • Äèðåêòèâ
    • ªãºãäëèéí ýíãèéí òºðºë
  • 12. Àññåìáëåð ïðîãðàì, ò¿¿íèéã õºðâ¿¿ëýõ
    • Àññåìáëåð ïðîãðàìûí åðºíõèé á¿òýö:
    • PAGE n,m
    • TITLE ãàð÷èã
    • SUBTITLE äýä ãàð÷èã
    • SEGMENT . . .
    • CODE SEGMENT
    • ASSUME CS:CODE, DS:DATA . . .
    • START: êîìàíäóóä
    • .
    • .
    • .
    • CODE ENDS
    • END START
    • <íýð> SEGMENT <ïàðàìåòð>
    • .
    • .
    • .
    • <íýð> ENDS
    • <ïàðàìåòð> - [PARA, STACK, COMMON, PUBLIC, AT, MEMORY]
    • Êîìàíäûí åðºíõèé õýëáýð:
    • [̸òêà]: <ìíåìîíèêêîä> [îïåðàíä] ; <òàéëáàð>
    • Àññåìáëåð ïðîãðàì êîìàíä áîëîí äèðåêòèâ¿¿äèéí äàðààëëààñ òîãòîíî.
    • Íýã ìºðºíä íýã êîìàíä áóþó íýã äèðåêòèâ áè÷èãäýíý.
    • PAGE 60,132
    • TITLE example_assembler
    • DATA SEGMENT
    • x DB 1,2,3,4
    • y DB ?
    • DATA ENDS
    • CODE SEGMENT
    • ASSUME CS:CODE, DS:DATA
    • Sum MOV AX,DATA
    • MOV DS,AX
    • LEA BX,x
    • MOV CX,4
    • Begin: ADD AL,[BX]
    • INC BX
    • LOOP begin
    • MOV y,AL
    • MOV AX,0
    • INT 20h
    • CODE ENDS
    • END sum
  • 13. Àññåìáëåð ïðîãðàì áè÷èõ áýëýí çàãâàð áàñ áàéäàã. Ýíý íü äàðààõ á¿òýöòýé áàéíà.
    • PAGE
    • TITLE
    • SUBTITLE
    • .MODEL ïàðàìåòð
    • .DATA
    • ªãºãäºë òîäîðõîéëîõ
    • .CODE
    • START: MOV AX, @DATA
    • MOV DS, AX
    • .
    • . ïðîãðàì
    • .
    • END START
    • Ïàðàìåòð – ñàíàõ îéí çàãâàðûã òîäîðõîéëíî. ¯¿íä:
    • TINY – Á¿õ ñåãìåíò¿¿ä íèéëýýä 64Êá –ààñ õýòðýõã¿é áàéíà.
    • 2. SMALL – Ñåãìåíò á¿ð 64Êá-ààñ õýòðýõã¿é áàéíà.
    • 3. MEDIUM – Êîä ñåãìåíò 1Ìá, áóñàä ñåãìåíò 64Êá áàéíà.
    • 4. COMPACT – Êîä ñåãìåíò 64Êá, áóñàä ñåãìåíò 1Ìá áàéíà.
    • 5. LARGE – Á¿õ ñåãìåíò¿¿ä 1Ìá áàéíà.
    • ªãºãäºë òîäîðõîéëîõ, ïðîãðàì áè÷èõ íü ÿã àäèëõàí áîëíî.
    • PAGE 60,132
    • TITLE example_assembler
    • .MODEL SMALL
    • .DATA
    • x DB 1,2,3,4
    • y DB ?
    • .CODE
    • Sum: MOV AX,DATA
    • MOV DS,AX
    • LEA BX,x
    • MOV CX,4
    • Begin: ADD AL,[BX]
    • INC BX
    • LOOP begin
    • MOV y,AL
    • MOV AX,0
    • INT 20h
    • CODE ENDS
    • END sum
  • 14. Ǻâ áè÷èãäñýí ïðîãðàìûã õºðâ¿¿ëæ, øàëãàí ç¿ãøð¿¿ëæ àæëûí áýëýí ïðîãðàì ¿¿ñãýäýã. Ïðîãðàìûã ÿàæ õºðâ¿¿ëýõèéã äàðààõ ñõåìýýð õàðóóëúÿ. Ïðîãðàìûí àíõíû òåêñòèéã îðóóëàõ PROG1.ASM | Îáúåêò ìîäóëü ¿¿ñãýõ TASM.EXE PROG1.OBJ | Ïðîãðàìóóäûã õîëáîæ åõå ôàéë ¿¿ñãýõ TLINK.EXE PROG1.EXE | Ïðîãðàìûã øàëãàí ç¿ãøð¿¿ëýõ DEBUG.EXE Æèøýý: Ïðîãðàìûí àíõíû òåêñòèéã äóðûí òåêñò çàñâàðëàõ ïðîãðàìààð áýëòãýæ áîëîõ áà íýðèéí ºðãºòãºëèéã çààâàë .ASM ãýæ õàäãàëíà. C>TASM PROG1.ASM; PROG1.OBJ ôàéë ¿¿ñíý. Àëäàà áàéâàë àëäààíû ìýäýý ãàðíà. C>TLINK PROG1.OBJ; PROG1.EXE ôàéë ¿¿ñíý. C>DEBUG PROG1.EXE
  • 15. ªãºãäëèéí ýíãèéí òºðºë
    • ªãºãäëèéã òîäîðõîéëîõ äèðåêòèâ: Æèøýý
    • DB – áàéò óòãûã òîäîðõîéëíî a DB 27 x DB 12,-4,-28
    • DW - ¿ã óòãûã òîäîðõîéëíî b DW 0afh y DW ?
    • DD – õî¸ð ¿ã òîäîðõîéëíî c DD 8923 z DD 0
    • Äàðààõ 2 òîäîðõîéëîëò àäèëõàí áîëíî.
    • a DB 1,2,3 a DB 1
    • DB 2
    • DB 3
    • Íýã èæèë óòãûã ñàíàõ îéä áàéðëóóëàõ ãýâýë
    • a DB 10 DUP (7) b DB 5 DUP ( 4 DUP (3))
    • Ýíý íü íýã áà õî¸ð õýìæýýñò ìàññèâèéã òîäîðõîéëæ áàéãàà õýðýã þì.
    • ̺ð òîäîðõîéëîõäîî ìºí äýýðõè äèðåêòèâèéã àøèãëàäàã.
    • s DB ‘abc’ s DB ‘a’,’b’,’c’ s DB ‘a’,’bc’
    • ̺í òîãòìîëûã òîäîðõîéëîõ EQU äåðèêòèâ áàéäàã:
    • count EQU 100
    • Èíãýæ òîäîðõîéëñîí òîõèîëäîëä count õóâüñàã÷èéí îðîíä ïðîãðàì ÿìàãò 100 ãýñýí óòãûã àâàõ
    • áîëíî. Æèøýý íü b DB count DUP(9) òîäîðõîéëîëò b DB 100 DUP(9) òîäîðõîéëîëòòîé àäèëõàí þì.
  • 16. Ñàíàõ îéã õàÿãëàõ àðãóóä
    • ¯éëäýëä îðæ áàéãàà îïåðàíäûã çààæ ºãºõ îëîí àðãà áàéäàã. Ýíý àðãûã ñàíàõ îéã õàÿãëàõ àðãà ãýíý. Õàÿãëàõ äàðààõ àðãóóä áàéäàã:
    • 1. Ðåãèñòðèéí õàÿãëàëò
    • Îïåðàíäûí îðîíä ðåãèñòðèéã øóóä áè÷èæ ºãºõ àðãà þì.ª.õ ¿éëäýëä îðîõ õýìæèãäýõ¿¿í¿¿ä ðåãèñòðò áàéðëàíà. Æèøýý:
    • ADD AX, BX SUB AH,BL INC BX
    • 2. Óòãààð õàÿãëàõ
    • Îïåðàíäûí îðîíä ¿éëäýëä îðîõ óòãà ººðºº áàéõûã õýëíý. Æèøýý:
    • ADD AH,5 ADD AX,0Ah SUB BL,1010b CMP CH,’.’
    • 3. Øóóä õàÿãëàëò
    • Îïåðàíäûí îðîíä õóâüñàã÷èéí íýð áóþó ñàíàõ îéí õàÿã áè÷èãäýíý. Æèøýý:
    • ADD AX,x MOV n,108 INC count
    • 4. Øóóä áóñ õàÿãëàëò
    • Çàðèì òîõèîëäîëä ¿éëäýëä îðîõ îïåðàíäûí õàÿãèéã òîîöîæ îëîõ øààðäëàãà ãàðäàã. Òîîöîæ îëñîí õàÿãèéã BX, SI, DI ðåãèñòð¿¿äèéí
    • àëü íýãýíä õèéæ ºãºõ áºãººä êîìàíäàíä ýäãýýð ðåãèñòð¿¿äèéí íýðèéã äºðâºëæèí õààëòàíä áè÷èæ ºãíº. Æèøýý:
    • ADD AX,[BX] SUB [SI],AL ADD AX,ES:[BX]
    • 5. Èíäåêñèéí õàÿãëàëò
    • Èíäåêñèéí óòãûã òîîöîí îëæ áààç õàÿãàí äýýð íýìýõ çàìààð îïåðàíäûí õàÿãûã òîäîðõîéëîõ àðãà þì. Æèøýý:
    • A DB 30 DUP(?)
    • . . .
    • ADD AL,A[SI] ADD AL,[A+SI]
    • 6. Áààç õàÿãëàëò
    • Áààç õàÿãûã BX, BP ðåãèñòð¿¿äèéí àëü íýãýíä õèéæ, êîìàíäàí äàõü øèëæëýãèéí óòãûã íýìýõ çàìààð õàÿãûã òîäîðõîéëíî. Æèøýý:
    • ADD CX,10[BX] ADD CX,[BX+10] ADD CX,[BX]+10 ADD AH,[BP+2]
    • 7. Áààç-èíäåêñ õàÿãëàëò
    • Ýíý àðãà íü ºìíºõ 2 àðãûã õîñëîí õýðýãëýõ àðãà þì. Æèøýý:
    • ADD AX,[BX+SI] ADD AX,[BX+DI] ADD AX,[BP+SI] ADD AX,[BP+DI]
    • ADD AX,10[BX+SI] ADD AX[BX+DI+10]
  • 17. Ëåêö 3
    • Àññåìáëåð õýëíèé êîìàíäóóä
    • Øèëæ¿¿ëýõ êîìàíäóóä
    • Àðèôìåòèê ¿éëäëèéí êîìàíäóóä
    • Íýìýõ
    • Õàñàõ
    • ¯ðæèõ
    • Õóâààõ
    • ªãºãäëèéí õýìæýýã ººð÷ëºõ
    • Óäèðäëàãûí êîìàíä
    • Öèêëèéí êîìàíä
  • 18. Øèëæ¿¿ëýõ êîìàíäóóä
    • 1.Øèëæ¿¿ëýõ êîìàíäûí ìíåìîêîä – MOV
    • Åðºíõèé õýëáýð: MOV op1,op2 ôîðìàò íü: [r/r r/m r/c m/r m/c]
    • op2 – ä áàéãàà ºãºãäëèéã op1-ð¿¿ øèëæ¿¿ëíý.
    • Æèøýý:
    • MOV AX,BX MOV AX,x MOV AX,10 MOV x,BX MOV x,10
    • MOV [BX],1 êîìàíäàíä õàÿã íü BX-ä áàéãàà ÿìàð õýìæýýòýé ñàíàõ îéä 1-èéã øèëæ¿¿ëýõ íü
    • òîäîðõîéã¿é áàéíà. Èéì òîõèîëäîë áóñàä êîìàíäóóä äýýð ÷ ãàðäàã. Ýíý ¿åä êîìàíäàíä
    • BYTE PTR ýñâýë WORD PTR ïðåôèêñèéí íýãèéã áè÷èæ ºãíº. Æèøýý íü áàéòàä áàéðëóóëàõ ãýæ
    • áàéãàà áîë êîìàíäûã MOV BYTE PTR [BX],1 utr dnxyt6
    • 2. Õî¸ð îïåðàíäûí óòãûã ñîëèõ êîìàíä – XCHG
    • Åðºíõèé õýëáýð: XCHG op1,op2 ôîðìàò íü: [r/r r/m m/r]
    • Æèøýý:
    • XCHG AX,BX XCHG AH,x XCHG y,BL
    • 3. Õàÿã øèëæ¿¿ëýõ êîìàíä – LEA
    • Åðºíõèé õýëáýð: LEA op1,op2 ôîðìàò íü: [r/m]
    • Æèøýý:
    • LEA BX,a êîìàíäààð à õóâüñàã÷èéí õàÿã íü (óòãà íü áèø) BX ðåãèñòðò øèëæýíý.
    • LEA AX,a êîìàíä áóðóó. Ó÷èð íü AX õàÿãûí ðåãèñòð áèø áîëíî. LEA BP,5[BX] çºâ êîìàíä.
  • 19. Àðèôìåòèê ¿éëäëèéí êîìàíäóóä 1. Íýìýõ ¿éëäëèéí êîìàíä - ADD Åðºíõèé õýëáýð: ADD op1,op2 ôîðìàò íü: [r/r r/m r/c m/r m/c] Õî¸ð òîîã íýìæ, ¿ð ä¿íã 1-ð îïåðàíäàä áàéðëóóëíà. Op1=<op1>+<op2> Æèøýý: ADD AH,BH ADD AX,9 ADD x,DX ADD x,7 2. Õàñàõ ¿éëäëèéí êîìàíä Åðºíõèé õýëáýð: SUB op1,op2 ôîðìàò íü: [r/r r/m r/c m/r m/c] op1=<op1>-<op2> Æèøýý: SUB AX,BX SUB CX,a SUB DX,3 SUB a,DH 3. Ðåãèñòðèéí óòãûã íýãýýð íýìýãä¿¿ëýõ – INC, õîðîãäóóëàõ – DEC, îïåðàíäûí òýìäýãèéã ººð÷ëºõ – NEG êîìàíä áàéäàã. Åðºíõèé õýëáýð: INC op ôîðìàò: [r] op=<op>+1 Æèøýý: INC BX DEC op [r] op=<op>-1 DEC AX NEG op [r,m] op=-<op> NEG BL 4. Carry ôëàãèéã òîîöîæ íýìýõ – ADC, carry ôëàãèéã òîîöîæ õàñàõ – SBC êîìàíä áàéäàã. Åðºíõèé õýëáýð: ADC op1,op2 ôîðìàò: ADD-í àäèë op1=<op1>+<op2>+CF SBC op1,op2 SUB-í àäèë op1=<op1>-<op2>-CF Æèøýý: 13A0F120h + 4000200Ah íèéëáýðèéã îëîõäîî ýõëýýä áàãà ¿ãèéã ADD êîìàíäààð, äàðàà íü àõìàä ¿ãèéã ADC êîìàíäààð íýìíý. Ýíý ìàÿãààð ADC êîìàíäûã àøèãëàí õýäýí ÷ áàéò óòãûã íýìæ áîëíî. ßã ¿¿íèé àäèë carry-òàé õàñàõ ¿éëäëèéã ã¿éöýòãýíý.
  • 20. 5. ¯ðæèõ ¿éëäýë: òýìäýãã¿é á¿õýë òîîã ¿ðæèõ-MUL, òýìäýãòýé á¿õýë òîîã ¿ðæèõ-IMUL êîìàíä Åðºíõèé õýëáýð: MUL op ôîðìàò: [r, m, c] 2 áàéòûã ¿ðæèõýä AX=AL x <op> IMUL op 2 ¿ãèéã ¿ðæèõýä DX:AX=AX x <op> Æèøýý: n DB 10 . . . MOV AL,2 MUL n ;AX=2 x 10=0014h AH=00h AL=14h MOV AL,28 MUL n ;AX=28 x 10=0104h AH=01h AL=04h MOV AX,8 MOV BX,-1 IMUL BX ;DX:AX=-1 x 8=0FFFFFFF8h AX=0FFF8h DX=0FFFFh 6. Õóâààõ ¿éëäýë: òýìäýãã¿é á¿õýë õóâààëò-DIV, òýìäýãòýé á¿õýë õóâààëò-IDIV êîìàíä Åðºíõèé õýëáýð: DIV op ôîðìàò: [r, m, c] ¯ãèéã áàéòàä õóâààõàä: AH,AL=AX:<op> IDIV op AH-ä ¿ëäýãäýë,AL-íîîãäâîð 2 ¿ãèéã ¿ãýä õóâààõàä: DX,AX=(DX:AX):<op> DX-¿ëäýãäýë,AX-íîîãäâîð Æèøýý: n DB 5 . . . MOV AX,17 DIV n ;AX:n=17:5=>íîîãäâîð AL=3,¿ëäýãäýë AH=2 MOV DX,0 MOV AX,17 MOV BX,5 DIV BX ; (DX:AX):BX=17:5 => íîîãäâîðAX=0002h, ¿ëäýãäýë DX=0003h
  • 21. 7. Òîîíû õýìæýýã ººð÷ëºõ êîìàíä Àðèôìåòèê ¿éëäýëä îðæ áàéãàà 2 îïåðàíä(¿ðæèõ, õóâààõ îðîõã¿é) çààâàë íýã òºðëèéí áàéõ ¸ñòîé. Æèøýýëáýë ¿ã äýýð áàéò òîîã íýìæ áîëîõã¿é. Èéìä áàéòûã ¿ã áîëãîæ õóâèðãàõ õýðýãòýé. Áàéòûã ¿ã áîëãîæ õóâèðãàõ – CBW, ¿ãèéã 2 ¿ã áîëãîæ õóâèðãàõ – CWD êîìàíäóóä áàéäàã. Åðºíõèé õýëáýð: CBW îïåðàíäã¿é êîìàíä, õóâèðãàõ áàéò AL-ä, ¿ð ä¿í AX-ä CWD õóâèðãàõ ¿ã AX-ä, ¿ð ä¿í (DX:AX)-ä áàéðëàíà. Æèøýý: MOV AL,32 ; 20h->AL CBW ; 0020h->AX MOV AL,-3 ; 0E0h->AL CBW ; 0FFE0h->AX MOV AX,32 ; 0020h->AX CWD ; 0000h->DX, 0020h->AX MOV AX,-3 ; 0FFE0h->AX CWD ; 0FFFFh->DX, 0FFE0h->AX
  • 22. Óäèðäëàãûí êîìàíä Óäèðäëàãûí êîìàíäûã 2 àíãèëíà: 1. ͺõöºëò áóñ äàìæóóëàëò – JMP Åðºíõèé õýëáýð: JMP <ì¸òêà> ì¸òêà-êîìàíäûã íýðëýñýí íýð JMP êîìàíä óäèðäëàãûã ì¸òêà-ààð òýìäýãëýãäñýí êîìàíäàä øóóä äàìæóóëíà. Æèøýý: JMP M . . . M: MOV AL,0 Óäèðäëàãûí êîìàíäûã óäèðäëàãà äàìæóóëæ áàéãàà çàéíààñ íü õàìààðóóëàí õîë, îéð äàìæóóëàëò ãýæ 2 àíãèëäàã. Îéð (near) äàìæóóëàëò çºâõºí IP ðåãèñòðèéí óòãûã ººð÷èëäºã áîë õîë (far) äàìæóóëàëò CS,IP ðåãèñòð¿¿äèéí óòãûã ººð÷èëíº. 2. ͺõöºëò äàìæóóëàëò ßìàð íýãýí íºõöºëººñ õàìààðóóëàí óäèðäëàãûã äàìæóóëíà. 2 ¿å øàòòàé: 1. õýìæèãäýõ¿¿í¿¿äèéã æèøèæ ¿ð ä¿íãýýñ íü õàìààðóóëàí ôëàãóóäûã ººð÷ëºíº. CMP op1,op2 2. ôëàãûí óòãààñ õàìààðóóëàí óäèðäëàãûã äàìæóóëíà. Jxx <ì¸òêà> _____________________________________________________________________________________________ Óäèðäëàãûí óäèðäëàãûí ¿éë÷ëýõ ôëàãèéí êîìàíä íºõöºë õ¿ðýý óòãà _____________________________________________________________________________________________ JE op1=op2 ÿìàð÷ òîîíû ZF=1 JNE op1<>op2 õóâüä ZF=0 _____________________________________________________________________________________________ JL/JNGE op1<op2 SF<>OF JLE/JNG op1<=op2 òýìäýãòýé SF<>OF ZF=1 JG/JNLE op1>op2 òîîíû õóâüä SF=OF ZF=0 JGE/JNL op1>=op2 SF=OF _____________________________________________________________________________________________ JB/JNAE op1<op2 CF=1 JBE/JNA op1<=op2 òýìäýãã¿é CF=1 ZF=1 JA/JNBE op1>op2 òîîíû õóâüä CF=0 ZF=0 JAE/JNB op1>=op2 CF=0 ______________________________________________________________________________________________
  • 23. ͺõöºëò óäèðäëàãûí 2 äàõü á¿ëýã êîìàíä íü òîäîðõîé ôëàãèéí óòãààñ õàìààðóóëàí óäèðäëàãûã äàìæóóëàõ êîìàíä îðäîã. ¯¿íä:
    • _________________________________________
    • óäèðäëàãûí êîìàíä ôëàãèéí óòãà
    • _________________________________________
    • JZ ZF=1
    • JNZ ZF=0
    • JS SF=1
    • JNS SF=0
    • JC CF=1
    • JNC CF=0
    • JO OF=1
    • JNO OF=0
    • JP PF=1
    • JNP PF=0
    • _________________________________________
    • Æèøýý: a,b,c – áàéò òîîíóóä áîë c=a x a+b èëýðõèéëëèéã áîä. ¯ð ä¿í áàéòààñ èõ òîî ãàðâàë
    • óäèðäëàãûã ERROR ì¸òêàòàé êîìàíäàíä øèëæ¿¿ë.
    • MOV AL,a ͺõöºëò óäèðäëàãûí êîìàíäûã äàðààëàí áè÷èæ áîëíî.
    • MUL AL Æèøýý:
    • JC ERROR CMP AX,BX
    • ADD AL,b JE L1
    • JC ERROR JG L2
    • MOV c,AL
  • 24. Öèêëèéí êîìàíä
    • Åðºíõèé õýëáýð:
    • MOV CX,n
    • L:
    • .
    • . öèêëèéí áèå
    • .
    • DEC CX
    • CMP CX,0 LOOP L
    • JNE L
    • MOV CX,n
    • L:
    • .
    • . öèêëèéí áèå
    • .
    • LOOP L
    i=n Öèêëèéí áèå i=i-1 i>0 òèéì ¿ã¿é
  • 25.
    • CX>0 áàéíà.
    • CX=0 áîë 0-1=-1 áóþó FFFFh áîëíî.
    • Èéìä JCXZ êîìàíä àøèãëàíà.
    • MOV CX,n
    • JCXZ L1
    • L: .
    • .
    • .
    • LOOP L
    • L1: . . .
    • LOOP êîìàíä áîãèíî äàìæóóëàëò áàéíà.
    • ª.õ öèêëèéí áèå 127 áàéòààñ õýòýð÷ áîëîõã¿é.
    • Öèêëýýñ òîîëóóð äóóñààã¿é áàé÷àä ãàð÷
    • áîëäîã.
    • CMP . . . CMP . . .
    • LOOPE/LOOPZ LOOPNE/LOOPNZ
    • Æèøýý: 8!=40320 îëîõ ïðîãðàìûí õýñýã
    • MOV AX,0 MOV AX,1
    • MOV CL,8 MOV CL,8
    • MOV CH,0 MOV CH,0
    • JCXZ L1 JCXZ L1
    • MOV SI,1 L: MUL CX
    • L: MUL SI LOOP L
    • INC SI L1:
    • LOOP L
    • L1:
    • Æèøýý: [2,k] çàâñðààñ n òîîíû õóâààã÷ áèø
    • õàìãèéí áàãà òîîã îë.
    • MOV DL,n LOOPE L
    • MOV DH,0 JNE L1
    • MOV CL,k MOV BL,0
    • MOV CH,0 L1: . . .
    • DEC CX
    • MOV BL,1
    • L: INC BL
    • MOV AX,DX
    • DIV BL
    • CMP AH,0
  • 26. Ëîãèê êîìàíäóóä Ëîãèê êîìàíä: NOT, AND, OR, XOR, TEST Îíöëîã: 1. áèò¿¿ä äýýð õèéíý 2. ôëàãèéí óòãûã ººð÷èëíº. 3. îïåðàíä áàéò, ýñâýë ¿ã áàéíà. Ëîãè¿éëäëèéí ¿ð ä¿í: Êîìàíäóóäûí åðºíõèé õýëáýð: 1. NOT op ôîðìàò: [r, m] 2. AND op1,op2 [r,r r,m r,c m,r m,c] op1=<op1> AND <op2> TEST op1,op2 AND êîìàíäòàé àäèëõàí, ¿ð ä¿íã õàäãàëàõã¿é. op2 – ìàñêà ãýæ íýðëýãäýõ òîãòìîë óòãà áàéíà. <Op2>- 00001111=0Fh 3. OR op1,op2 [r,r r,m r,c m,r m,c] op1=<op1> OR <op2> 4. XOR op1,op2 [r,r r,m r,c m,r m,c] op1=<op1> XOR <op2> Æèøýý: NOT AX NOT x AND AX,BX AND x,00001111b TEST BX,11110000b OR AX,x OR AX,10000000b XOR AX,AX 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 x XOR y x OR y x AND y NOT x y x
  • 27. Ñäâèã õèéõ êîìàíäóóä
    • 1. Ëîãèê ñäâèã
    • Åðºíõèé õýëáýð:
    • SHR op,CL [r, m] <op> shift right  op
    • SHL op,CL [r, m] <op>shift left  op
    • Æèøýý:
    • SHR AH,1 SHR AX,CL
    • SHL BL,1 SHL BH,CL
    • 2. Àðèôìåòèê ñäâèã
    • Åðºíõèé õýëáýð:
    • SAR op1,op2
    • SAL op1,op2
    • 3. Öèêë ñäâèã
    • ROL op,CL
    • ROR op,CL
    • RCL op,CL
    • RCR op,CL
    • Жишээ:
    • MOV AL,11000011b
    • ROL AL,1 ;CF=1, AL=10000111
    • MOV AL,11110000b
    • RCL AL,1 ;CF=1, AL=11100000
    • RCL AL,1 ;CF=1, AL=11000001
    • SHR
    • <AH>=10100111  SHR AH,1  AH=01010011
    • CF=1
    op CF op op op CF CF CF
  • 28. Ëåêö 4
    • Өгөгдлийн нийлмэл төрөл
      • Массив, түүнтэй ажиллах
      • Структур, түүнийг тодорхойлох
      • Бичлэг, түүнийг тодорхойлох
      • ̺ð òºðºë, ò¿¿íòýé àæèëëàõ
    • Ïðîöåäóð, ò¿¿íèéã òîäîðõîéëîõ
  • 29. Массив
    • Массивыг тодорхойлохдоо энгийн төрөл тодорхойлох
    • директивыг DUP префиксийн хамт ашигладаг. Жишээ нь :
    • 20 элементтэй үг массивыг
    • А DB 20 DUP (?)
    • Тодорхойлолтонд массивын нэр, төрөл, элементийн тоо
    • заагдсан байна. Индексийн талаар юу ч заагаагүй байна.
    • Ассемблер хэлэнд массивийн индексийг 0-оос эхлэн
    • дугаарладаг. A[0, ,19]
    • A[i] = A + 2 x I ( байт бол A[i] = A + i)
    • Ерөнхий тохиолдолд: A[i] = A + i x type(A)
    • 2 x I  SI A[i] = A[SI]
    • Жишээ: А массивын элементүүдийн нийлбэрийг олъё.
    • MOV AX,0 ; нийлбэр олох регистр
    • MOV CX,20 ; тоолуур
    • MOV SI,0 ; индекс
    • L: ADD AX,A[SI] ; нийлбэр олох
    • ADD SI,2 ; дараагийн индекс
    • LOOP L ; цикл 20 удаа
    A A+0 A+2 A+4 A+38 0 1 2 19
  • 30. 2 хэмжээст массив бараг адилхан. Жишээ нь:
    • B DB N DUP (M DUP (?)) N – мөр, M – багана
    • В массивын i –р мөр, j -р баганы элементийн хаяг:
    • B[I,j] = B + M x I x type(B) + j x type(B); B[I,j] = B + M x I + j; ( байт массив бол )
    • Хэрэв мөрийн шилжлэгийг M x I x type(B)  BX, баганы шилжлэгийг j x type(B)  SI байрлуулбал
    • массивын хаяг дараах маягаар илэрхийлэгдэнэ.
    • B[I,j] = B[BX][SI]
    • B массивын эерэг элементүүдийн тоог олох програмын хэсгийг авч үзье.
    • MOV AL,0 ; эерэг элементийн тоог олох
    • MOV CX,10 ; гадна циклийн тоолуур
    • MOV BX,0 ; мөрийн эхний шилжлэг
    • L: MOV DX,CX ; гадна циклийн тоолуурыг хадгалах
    • MOV CX,20 ; дотор цикл
    • MOV SI,0 ; баганы элементийн шилжлэг
    • L1: CMP B[BX][SI],0 ; эерэг элемент эсэх
    • JLE L2 ; сөрөг буюу тэг бол
    • ADD AL,1 ; эерэг элементийг тоолох
    • L2: INC SI ; мөрийн дараагийн элемент
    • LOOP L1 ; дотор циклийг давтах
    • MOV CX,DX ; гадна циклийн тоолуурыг сэргээх
    • ADD BX,20 ; дараагийн мөрийн шилжлэг
    • LOOP L ; гадна циклийг давтах
  • 31. Структур
    • Структурын тодорхойлолт:
    • < нэр > STRUC
    • < талбарын тодорхойлолт >
    • . . .
    • < талбарын тодорхойлолт >
    • < нэр > ENDS
    • Жишээ:
    • date STRUC time STRUC
    • y DW 2007 h DB ?
    • m DB 1 m DB ?
    • d DB 21 s DB ?
    • date ENDS time ENDS
    • Структур төрөл тодорхойлсны дараа програмд энэ төрлөөр хувьсагч зарладаг. Жишээ нь:
    • d1 date <1990,9,1> d2 date <,7,13> d3 date <,,>
    • t1 time <6,45> t2 time <12,24,27>
    • Структур төрлийн хувьсагчийн талбарт хандахдаа хувьсагчийн нэрийг талбарын нэрээс цэгээр
    • тусгаарлан бичнэ. Жишээ нь:
    • d1.y d2.m d3.d t1.h t1.m t1.s
    • Програмд: CMP d1.d,3 INC d1.d MOV d1.m,4
    • TYPE – структур төрлийн хэмжээг өгнө. Жишээ: MOV CX, TYPE date; CX = 4
    • Структур төрлийн массив зарлаж болдог. Жишээ: ds date 10 DUP <>
  • 32. Бичлэг төрөл
    • Бичлэг төрөл нь структур төрөлтэй адилхан боловч гол онцлог нь талбар нь байтуудаас биш,
    • харин нь битүүдийн дарааллаас тогтдог юм. Ө.х шахагдсан форматтай структур төрлийг бичлэг
    • төрөл гэдэг. Ерөнхий хэлбэр:
    • < нэр > RECORD < талбар:хэмжээ > [,< талбар:хэмжээ >]
    • Жишээ:
    • date RECORD y:7, m:4, d:5
    • time RECORD h:4, n:6, s:6
    • r RECORD a:3, b:4=9
    • Бичлэг төрлөөр хувьсагч зарлах структур төрөлтэй адилхан болно. Жишээ:
    • d1 date <,2,28> d2 date <> d1 date <,12>
    • r1 r <2,13> r2 r 27 DUP (<?>)
    • Харин бичлэгийн талбарт хандах нь структурын талбарт хандахаас өөр болно. Үүний тулд
    • WIDTH, MASK гэсэн префикс ашигладаг. WIDTH бичлэг ба талбарын хэмжээг тодорхойлоход,
    • MASK талбарын байрлах битүүд нь 1 байх тогтмолыг тодорхойлоход ашиглагддаг. Жишээ:
    • WIDTH date  16 WIDTH y  7 WIDTH r  7
    • MASK a  01110000b MASK n  0000111111000000b
    • Жишээ:
    • MOV AX,d1 MOV AX,d1
    • AND AX, MASK d AND AX, MASK m
    • CMP AX, 5 MOV CL,5
    • JE yes SHR AX, CL
    • No: . . . CMP AX, 9
    • JE yes
    b a 3 4
  • 33. Мөртэй ажиллах команд
    • Тэмдэгт мөрийг байтаар тодорхойлох боловч мөртэй ажиллах тусгай командууд байдаг. Эдгээр
    • нь хоорондоо олон талаараа төстэй учир нэг командыг дэлгэрэнгүй тайлбарлъя.
    • 1. Мөрийг жиших команд
    • Хоёр мөрийг хооронд нь жишнэ. Ерөнхий хэлбэр: CMPSB ( байт ) CMPSW ( үг ) , операндгүй
    • Нэг мөрийн хаяг  DS:SI, нөгөө мөрийн хаяг  ES:DI регистрүүдээр заагдана.
    • DF=0 бол хаягын өсөх, DF=1 бол хаягын буурах чиглэлд боловсруулна. Ө.х SI=SI+1(SI=SI+2)
    • CLD командт DF=0 , STD команд DF=1 болгоно.
    • Жишээ: N урттай S1 , S2 мөрийг жиших програмын хэсгийг авч үзье.
    • CLD CLD
    • LEA SI, S1 LEA SI, S1
    • LEA DI, S2 LEA DI, S2
    • MOV CX,N MOV CX,N
    • L: CMPSB REPE CMPSB
    • JNE no . . .
    • LOOP L
    • No: . . .
    • Програмд индекс автоматаар өөрчлөгдөж, харин циклийг програмист зохион байгуулсан байна.
    • Энэ циклийг дараах префикс ашиглах замаар хялбарчилдаг.
    • REPE/REPZ REPNE/REPNZ REP
    • REPE командын өмнө бичигдэх бөгөөд CX=0 буюу ZF=1 болтол давтана. Жишээ өмнөх
    • програмыг харна уу.
  • 34. 2 . Тэмдэгтийг мөртэй жиших команд: SCASB, SCASW Жиших тэмдэгтийг байт бол AL -д, үг бол AX -д байрлуулах бөгөөд мөрийн хаягыг ES:DI регистрээр заана. Чиглэлийг өмнөхийн адил тогтооно. Префикс ашиглана. Жишээ нь: REPE SCASB – команд мөрд тэнцүү биш эхний тэмдэгт гарч иртэл давтана. Эсвэл CX=0 REPNE SCASB -команд мөрд эхний тэнцүү тэмдэгт гарч иртэл давтана. Эсвэл CX=0 . Жишээ: N урттай S мөрд байгаа эхний ‘*’ –г ‘.’ –ээр солих програмын хэсгийг авч үзье. CLD PUSH DS POP ES LEA DI, S MOV CX,N MOV AL,’*’ REPNE SCASB JNE fin MOV BYTE PTR ES:[DI-1], ‘.’ fin: . . . 3. Мөрийг шилжүүлэх команд – MOVSB, MOVSW DS:SI хаягтай мөрийг ES:DI хаягтай мөрд шилжүүлнэ. Команд нэг удаа биелэхэд нэг л тэмдэгт зөөгдөнө. Иймд CX –д мөрийн уртыг хийж, зөвхөн REP префиксийг хэрэглэнэ. 4. Мөрд тэмдэгтийг хадгалах команд – STOSB, STOSW AL(AX) – д байгаа тэмдэгтийг ES:DI хаягтай мөрд хадгална. Зөвхөн REP префиксийг хэрэглэнэ. Жишээ: MOV AL, ‘ ‘ CLD LEA DI, S MOV CX, N REP STOSB 5. Мөрөөс тэмдэгтийг унших команд – LODSB, LODSW Мөрд байгаа ES:DI хаягтай тэмдэгтийг AL(AX) – д уншина. Давталт хэрэглэхгүй
  • 35. Процедур
    • Ерөнхий хэлбэр:
    • < нэр > PROC < параметр > < нэр > – програм зохиогч өгнө. Дурын нэр байна.
    • . < Параметр > - FAR, NEAR
    • . Процедурын бие Процедурт нэрээр нь хандана. Ө.х CALL операторт
    • . Нэрийг нь бичиж өгнө.
    • RET CALL < нэр >
    • < нэр > ENDS Процедураас RET командаар үндсэн програмд буцна.
    • Үндсэн програмаас процедурт параметрүүдийн утгыг дамжуулах
    • 3 арга байна. Үүнд: регистрээр
    • хаягаар
    • стекээр
    • 1. Регистрээр
    • Процедурт хандахынхаа өмнө регистрүүдэд параметрүүдын утгыг хийж өгөөд хандана.
    • Процедур регистрүүдээс параметрын утгаа авч боловсруулалтаа хийнэ.
    • 2. Хаягаар
    • Параметрын хаягыг процедурт хаягын регистрээр дамжуулна. Параметр массив утга байх үед
    • илүү тохиромжтой.
    • 3. Стекээр
    • Үндсэн програм параметрүүдын утгыг стекэд хийж өгөөд процедурт хандана. Процедур стекээс
    • утгаа авч ажиллана. Стекээс утгаа авахдаа BP регистрийг ашигладаг бөгөөд SP регистрийн
    • утгыг хөндөж болохгүй. Процедураас буцахдаа RET n командыг хэрэглэнэ.
  • 36. Ïðîöåäóðûí ëîêàëü ºãºãäºë
    • Ǻâõºí òóõàéí ïðîöåäóðò àøèãëàãääàã õóâüñàã÷äûã óóë ïðîöåäóðûí ëîêàëü õýìæèãäýõ¿¿í ãýõ áà
    • ò¿¿íèéã ÿàæ çîõèîí áàéãóóëàõûã àâ÷ ¿çüå. Ñòåêèéã àøèãëàõ íü èë¿¿ òîõèðîìæòîé. Ëîêàëü
    • õýìæèãäýõ¿¿íèé ìóæèéã ñòåêýä àâàõäàà ïðîöåäóð ýõëýýä SP óòãûã BP –ä àâíà. Äàðàà íü ëîêàëü
    • óòãûã áàéðëóóëíà. Ïðîöåäóðààñ áóöàõûí ºìíº SP-í óòãûã ñýðãýýæ ºãíº. Æèøýý:
    • À íü 2 áàéò, Â íü 1 áàéò õýìæýýòýé ëîêàëü õýìæèãäýõ¿¿í¿¿äèéã ñòåêýä áàéðëóóëúÿ.
    • P1 PROC
    • PUSH BP
    • MOV BP,SP
    • SUB SP,3
    • . . .
    • MOV SP,BP
    • POP BP
    • RET
    • P1 ENDP
    • Ëîêàëü õýìæèãäýõ¿¿íä õàíäàõäàà õàÿãèéã [BP-k] ãýæ àâíà. Òóõàéëáàë, À
    • õóâüñàã÷èéí õàÿã [BP-2],  õóâüñàã÷èéí õàÿã [BP-3] áàéíà.
    SP BP . . . RET adress BP A B
  • 37. Òàñàëäàë
    • Òàñàëäëûã áèåë¿¿ëýõ êîìàíä – INT
    • Åðºíõèé õýëáýð:
    • INT n
    • Ýíä n- òàñàëäëûí äóãààð, øóóä ºãºãäºõ òîî áîëíî.
    • Òàñàëäëûí ýíý êîìàíäààð õýðýãëýã÷ BIOS áà DOS –ûí îëîí ôóíêöóóäûã àøèãëàæ
    • áîëíî. ÆèøýýÄ
    • 1.Äýëãýöýíä ìºð õýâëýõ
    • DOS –ûí 21-ð òàñàëäëûí 09h ôóíêöèéã õýðýãëýíý. ̺ðèéí õàÿãûã DS:DX-ä çààíà.
    • ̺ðèéã $ òýìäýãòýýð çààâàë òºãñºãñºí áàéíà.
    • msg DB ‘Accembler for IBM PC’,10,13,’$’
    • . . .
    • LEA DX, msg
    • MOV AH,09h
    • INT 21h
    • 2. Ãàðíààñ ìºð îðóóëàõ buf DB 15,?,15 DUP(‘ ‘) ìºð îðóóëàõ áóôåð
    • . . .
    • LEA DX, buf áóôåðûí õàÿã
    • MOV AH,0Ah ôóíêöûí äóãààð
    • INT 21h òàñàëäàë
  • 38. Ïîðò
    • Êîìïüþòåðûí îðóóëàõ-ãàðãàõ áàéãóóëàìæ á¿õýí íýã áóþó õýä õýäýí ðåãèñòð¿¿äòýé
    • Áàéäàã. Ýäãýýð ðåãèñòð¿¿ä íü ñàíàõ îéí òîäîðõîé äóãààðòàé õýñýã áàéõ áºãººä
    • ò¿¿íèéã ïîðò ãýæ íýðëýäýã.
    • Ìèñðîïðîöåññîðò 65536 ïîðò áàéæ áîëîõ áîëîâ÷ ò¿¿íèé 512 íü îðóóëàõ-ãàðãàõ
    • ñèñòåìèéí ñóâàãò çîðèóëàãäñàí áàéäàã.
    • IN êîìàíä ïîðòíîîñ ºãºãäëèéã AL ðåãèñòðò óíøèíà.
    • Ïîðòûí õàÿã 0-255 õîîðîíä áàéâàë êîìàíäàíä õàÿãûã øóóä áè÷íý:
    • IN 60h
    • Ïîðòûí õàÿã 255-ààñ èõ áîë õàÿãèéã DX ðåãèñòðýýð çààíà:
    • IN DX
    • OUT êîìàíä AL ðåãèñòðò áàéãàà ºãºãäëèéã ïîðòîä ãàðãàíà. Õàÿã ºãºõ àðãà íü IN
    • êîìàíäòàé ÿã àäèëõàí áîëíî.
    • OUT 60h
    • MOV DX, 3FBh
    • OUT DX
  • 39. Ìàñðîêîìàíä
    • Àññåìáëåð êîìàíäóóäûí äàðààëëààð òîäîðõîé íýð á¿õèé ¿¿ñãýñýí êîìàíäûã ìàñðîêîìàíä ãýíý.
    • Ìàñðîêîìàíä òîäîðõîéëñíîîð ìèñðîïðîöåññîðò ¿éëäëèéí øèíý êîä òîäîðõîéëîãäîõ áîëíî.
    • Àññåìáëåð èéì øèíý êîäòîé òààðàëäàõ á¿ð ò¿¿íèéã òîäîðõîéëæ áàéãàà òåêñòèéã ïðîãðàìûí
    • òóõàéí õýñýãò õºðâ¿¿ëäýã.
    • Ìàñðîêîìàíäûã àøèãëàõ íü 2 ¿å øàòòàé ã¿éöýòãýãäýíý. ¯¿íä:
    • 1. ìàñðîêîìàíäûã òîäîðõîéëîõ
    • 2. ìàñðîêîìàíäàíä õàíäàõ
    • 1.Ìàñðîêîìàíäûã òîäîðõîéëîõäîî MACRO äèðåêòèâ àøèãëàõ áà äàðààõ åðºíõèé õýëáýðòýé
    • áàéíà.
    • <íýð> MACRO <ïàðàìåòð>
    • . . . Ìàñðîêîìàíäûí áèå
    • ENDM
    • 2. Ìàñðîêîìàíäàíä õàíäàõäàà íýðýýð íü õàíäàíà. ª.õ ïðîãðàìûí õýðýãòýé áàéðàíä íü
    • ìàñðîêîìàíäûí íýðèéã áè÷èæ ºãäºã. Æèøýý:
    • TITLE macrocommand code ENDS
    • ADWORD MACRO END
    • MOV AX,0F0h
    • ADD AX,00Eh
    • ENDM
    • code SEGMENT
    • ASSUME CS:code
    • ADWORD
  • 40. Ìàñðîêîìàíä, ïðîöåäóð õî¸ðûí àäèë òàë: ßëãààòàé òàë: - Ïðîãðàìä íýã õýñýã áîëîí áè÷èãäýíý. - Ãîë íü òýäãýýðèéã áèåë¿¿ëýõýä áàéäàã. - Ïðîãðàìûí äóðûí áàéðíààñ õàíäàæ áîëíî. Åð íü ïðîãðàìûí õýìæýýã áàãà áàéëãàõ - Ïðîãðàìûã áè÷èõ ÿâäëûã õÿëáàð÷ëàíà. ãýâýë ïðîöåäóðûã, áèåëýõ õóãàöààã áàãà áàéëãàõ ãýâýë ìàñðîêîìàíäûã õýðýãëýíý. Ìàñðîêîìàíäàíä ïàðàìåòð àøèãëàäàã. Æèøýý áîëãîí ñàíàõ îéí íýã áàéòûã ÿíç á¿ðèéí óòãààð íýìýãä¿¿ëýõ õÿëáàð ïðîãðàì àâ÷ ¿çüå. SUMMA MACRO const ADD memb, const ENDM data SEGMENT ASSUME DS:data memb DB 0 one EQU 1 data ENDS code SEGMENT ASSUME CS:code MOV AX, data MOV DS, AX SUMMA 2 SUMMA 7 SUMMA one code ENDS END Ìàñðîêîìàíä õýä õýäýí ïàðàìåòðòàé áàéæ áîëíî: EXAMPLE MACRO par1, par2, par3 Èéì ìàñðîä õàíäàõäàà áè÷èãäñýí äàðààëëààð íü á¿õ ïàðàìåòð¿¿äûí óòãûã áè÷èæ ºãíº. Ìàñðîä õàíäàõ ¿åä ïàðàìåòð íü òîãòìîë, ñàíàõ îé, ðåãèñòð òºäèéã¿é õàÿã áàéæ áîëíî. EXAMPLE 5, [BX], memb
  • 41. Ìàñðîêîìàíäûí îïåðàòîð Ìàñðîêîìàíä íü àññåìáëåð õýëíèé äóðûí êîìàíäûã àøèãëàæ áîëîõîîñ ãàäíà ººðèéí ãýñýí îïåðàòîðòàé áàéäàã. ¯¿íèé íýã íü íºõöºëò îïåðàòîð þì. Åðºíõèé õýëáýð: IFxx <èëýðõèéëýë> IFxx <èëýðõèéëýë> . . . . . . ELSE ENDIF . . . ENDIF IFxx îïåðàòîð äàðààõ õýëáýð¿¿äèéí íýã áàéíà: IF <èëýðõèéëýë> - èëýðõèéëëèéí óòãà òýãòýé òýíö¿¿ áèø áîë IFE <èëýðõèéëýë> - èëýðõèéëëèéí óòãà òýãòýé òýíö¿¿ áîë IFDEF <íýð> - íýð EXTRNAL áîë IFNDEF <íýð> - íýð EXTRNAL áèø áîë IFB <ïàðàìåòð> - ïàðàìåòð ïðîáåë áîë IFNB <ïàðàìåòð> - ïàðàìåòð ïðîáåë áèø áîë IFIDN <S1>,<S2> - S1 ìºð S2 ìºðòýé òýíö¿¿ áîë IFDIF <S1>,<S2> - S1 ìºð S2 ìºðòýé òýíö¿¿ áèø áîë Æèøýý: ADDX MACRO x code SEGMENT IFE 1-TYPE x ASSUME CS:code, DS:data ADD AH, x MOV AX, data ELSE MOV DS, AX IFE 2-TYPE x MOV AX, 0 ENDIF ADDX memx ENDIF code ENDS ENDM END data SEGMENT memx DB 0Ah data ENDS
  • 42. Äàâòàëòûí îïåðàòîð
    • Äàâòàëòûí 3-í îïåðàòîð áàéíà: REPT, IRP, IRPC
    • Åðºíõèé õýëáýð:
    • REPT <èëýðõèéëýë> Èëýðõèéëëèéí óòãûí òîîãîîð äàâòàíà.
    • . . .
    • ENDM
    • IRP ïàðàìåòð, <æàãñààëò> Ïàðàìåòð æàãñààëòàí äàõü óòãóóäûã äýñ
    • . . . äàðààëàí àâàõ á¿ð äàâòàíà.
    • ENDM
    • IRPC ïàðàìåòð, <òýìäýãò> Ïàðàìåòð òýìäýãò óòãóóäûã àâàõ á¿ð äàâòàíà.
    • . . .
    • ENDM
    • Æèøýý:
    • REPT 5 IRP val,<2,4,6,8> IRPC char, <ABCD>
    • INC AX ADD AX,val ADD AX, char&X
    • ENDM ENDM ENDM
  • 43. Îïåðàòîð EXITM Ìàñðîêîìàíäààñ øóóä ãàðàõ ¿åä ýíý îïåðàòîðûã õýðýãëýíý. Çàðèì ¿åä IF îïåðàòîðò õýðýãëýõýä òîõèðîìæòîé áàéäàã. Îïåðàòîð LOCAL LOCAL îïåðàòîð òóõàéí ìàñðîêîìàíäàíä àøèãëàãäàõ ì¸òêûã òîäîðõîéëäîã.Ýíý íü ìàñðîêîìàíäûã äàõèí àøèãëàõ áîëîìæèéã îëãîäîã. Æèøýý: PAUSE MACRO sec LOCAL start MOV CX, sec start: LOOP start ENDM code SEGMENT ASSUME CS:code PAUSE 5000 PAUSE 10000 code ENDS END ;; - òàéëáàð ìàñðîêîìàíäàíä áè÷èõýä õýðýãëýíý. & - àðäàõ òýìäýãòýý çàëãàæ ºãíº. ! – äóðûí òýìäýãò îðóóëàõ áîëîìæ îëãîíî. % - àðäàõ èëýðõèéëëýý òîîí óòãà áîëãîí õºðâ¿¿ëíý.
  • 44. Стек, стекийн сегмент
    • Стек бол тусгай зохион байгуулалттай санах ойн хэсэг юм. Стекийг санах ойн дурын
    • байранд үүсгэж болох ба хэмжээ нь 64Кб-аас хэтэрч болохгүй.
    • Стекийн хаяг: SS:SP
    • К байт хэмжээтэй стек тодорхойлох
    • гэвэл:
    • S SEGMENT STACK
    • DB K DUP(?)
    • S ENDS
    • Тодорхойлолтоос харахад стекэд хувьсагчийн нэр, анхны утга шаардлагагүй байна.
    • STACK параметр заагдсанаар стекийн хаягийг автоматаар авдаг.
    • Стектэй ажиллахын тулд 2 команд ашигладаг: PUSH <op>, POP <op>; [r, m]
    • Стекэд зөвхөн үгийг бичих буюу уншина.
    • Стекэд бичих: 1. SP=SP-2 Заагчийн утгыг 2-оор хорогдуулна.
    • 2. <op> -н утгыг бичнэ.
    • Стекээс унших: 1. стекийн оройгоос утгыг уншина.
    • 2. SP=SP+2 Заагчийн утгыг 2-оор нэмэгдүүлнэ.
    • Стекэд 2 үг бичих гэвэл 2 удаа бичих, байт бичих гэвэл үг болгож бичнэ.
    SS SP Стекийн сегмент
  • 45. Стектэй ажиллах жишээ: 1. Регистрийн утгыг хадгалах PUSH DX PUSH CX . . . ; DX, CX –г ашиглах POP CX POP DX 2. Утгыг стекээр дамжуулах PUSH a POP b ; b  a 3. стек хоосон ба дүүрсэн эсэхийг шалгах SP=0 ; стек дүүрэн SP=K ; стек хоосон (K элемент ) 4. Стекийг цэвэрлэх ба сэргээх ADD SP,2 x K ; стекээс К үг цэвэрлэх MOV AX,SP . . . ; стекэд бичих MOV SP,AX 5. Стекийн элементийг ашиглах PUSH, POP команд зөвхөн стекийн оройтой ажилдаг. Бусад элементийг ашиглах гэвэл эдгээр командаар тохиромжгүй. Иймд BP регистрийг хэрэглэнэ. MOV BP, SP MOV AX, [BP+4] ; AX  c SP регистрийг ингэж ашиглаж болохгүй. [BP+4]  SS:[BP+4] гэж ойлгоно. BP -н оронд BX –г авбал DS сегментээс авах болно. BP,SP +2 +4 a b c
  • 46. Ëåêö 5
    • Îëîí ìîäóëüò ïðîãðàì
      • Îëîí ìîäóëüò ïðîãðàìûí òóõàé
      • Ìîäóëü äàõü ãàäààä áà åðºíõèé íýð
      • Îïåðàòîð INCLUDE
    • COM áà EXE ïðîãðàì, òýäãýýðèéí ÿëãàà
    • EXE ôàéëûã COM ôàéëä õºðâ¿¿ëýõ
    • PSP (Program Segment Prefix)
  • 47. Îëîí ìîäóëüò ïðîãðàìûí òóõàé
    • Õýðýâ áîäëîãî í¿ñýð õ¿íä áîë ò¿¿íèé ïðîãðàìûã øóóä áè÷èõ áîëîìæã¿é. Èéì áîäëîãûã äýä áîäëîãóóäàä çàäàëæ, òýäãýýðèéí ïðîãðàìûã çîõèîãîîä äàðàà íü ò¿¿íèéãýý íýãòãýõ çàìààð íýã ïðîãðàì áîëãîõ íü òîõèðîìæòîé.
    • äýäáîäëîãî1  ìîäóëü1
    • Áîäëîãî . . . . . . Ïðîãðàì  Õºðâ¿¿ëýã÷  ìàøèíû ïðîãð
    • äýäáîäëîãÊ  ìîäóëüÊ
    • Ìîäóëü áîë äýäáîäëîãóóäûã øèéäýõ, áóñäààñàà ¿ë õàìààðàõ ïðîãðàì þì.
    • Èéìä ìîäóëèéã ººð ººð õ¿ì¿¿ñ áè÷èæ áîëäîã.
    • Ìîïóëèéã íýãòãýõ õî¸ð àðãà áàéäàã:
    • Ïðîãðàìûã õºðâ¿¿ëýõýýñ ºìíº íýãòãýõ, (INCLUDE äèðåêòèâ àøèãëàæ áîëíî)
    • Ìîäóëèóäûã òóñ òóñàä íü õºðâ¿¿ëýýä, äàðàà íü íýãòãýõ
    •  ìîäóëü1 ìîäóëü1.obj
    • . . . Õºðâ¿¿ëýã÷ . . . Íýãòãýã÷  ìàøèíû ïðîãðàì
    •  ìîäóëüÊ ìîäóëüÊ.obj
  • 48. 2 äàõü àðãà íü èë¿¿ òîõèðîìæòîé. Ìîäóëü á¿ðèéã (m1.ASM, m2.ASM, . . . ,mK.ASM) ïðîãðàì áîëãîí áè÷íý. C:>TASM m1.ASM, m1.OBJ, m1.LST; Ýíý ìàÿãààð á¿õ ìîäóëèéã õºðâ¿¿ëæ, OBJ ìîäóëü ¿¿ñãýõ áà òýäãýýðèéã íýãòãýæ ìàøèíû íýã ïðîãðàì ¿¿ñãýíý. C:>TLINK m1.OBJ+m2.OBJ+ . . . +mK.OBJ, m.EXE m1.OBJ . . . TLINK  m.EXE mK.OBJ Íýãýíò áýëýí áîëñîí ïðîãðàìûã äàðààõ êîìàíäààð øóóä áèåë¿¿ëíý. C:>m.EXE ýñâýë C:>m
  • 49. Ìîäóëü äàõü ãàäààä áà åðºíõèé íýð
    • Áèäíèé ïðîãðàì áèå áèåíýýñýý ¿ë õàìààðàõ îëîí ìîäóëü áîëîí áè÷èãääýã. Ãýõäýý
    • ýäãýýð ìîäóëèóä íü õîîðîíäîî øèëæèõ, ºãºãäºë ñîëèëöîõ çýðãýýð áèå áèåòýéãýý
    • õàðèëöàí ¿éë÷èëäýã. Èéì ¿åä îëîí àñóóäàë ãàðäàã. ¯¿íèéã ÿàæ øèéäýõèéã àâ÷ ¿çüå
    • ; --- m1 ìîäóëü --- ; --- m2 ìîäóëü ---
    • . . . . . .
    • x DB ? P PROC FAR
    • k EQU 100 . . .
    • . . . MOV x, 0
    • CALL P MOV AX, k
    • . . . . . .
    • Ýäãýýð ìîäóëèóäûã ñàëàíãèä õºðâ¿¿ëýõýä äàðààõ àñóóäàë ãàðíà. ª.õ m2 ìîäóëèéã
    • õºðâ¿¿ëýõýä õ áà ê íýð¿¿äèéã òàíèõã¿é ó÷èð àëäàà ºãíº. Ýíý àñóóäëûã EXTRN
    • äèðåêòèâýýð øèéäíý. Äàðààõ åðºíõèé õýëáýðòýé áàéíà.
    • EXTRN íýð:òºðºë, . . . , íýð:òºðºë
    • Òºðºë: BYTE, WORD, DWORD, NEAR áà FAR
    • Ýíý äèðåêòèâèéã ïðîãðàìûí äóðûí áàéðàíä, äóðûí òîîíû óäàà áè÷èæ áîëíî.
  • 50. Ìàíàé æèøýýíä m2 ìîäóëüä äàðààõ ìàÿãààð çàðëàíà.
    • EXTRN x:BYTE, k:ABS
    • Ýíä ABS-àññåìáëåð õýëíèé ñòàíäàðò òîãòìîë áîëíî.
    • NEAR, FAR òºðëèéã ïðîöåäóð áà ì¸òêà çàðëàõàä àøèãëàíà. Æèøýýëáýë áèäíèé
    • m1 ìîäóëüä Ð ïðîöåäóðûã äàðààõ ìàÿãààð òîäîðõîéëíî.
    • EXTRN P:FAR
    • EXTRN äèðåêòèâýýð çàðëàñíààð àñóóäàë á¿ðýí øèéäýãäýõã¿é. ªºð ìîäóëüä
    • àøèãëàãääàã õóâüñàã÷èéã òóõàéí ìîäóëüä íü PUBLIC äèðåêòèâýýð òîäîðõîéëæ ºãíº.
    • PUBLIC íýð, . . . , íýð
    • Ìàíàé æèøýýíä
    • m1ìîäóëüä PUBLIC x, k
    • m2 ìîäóëüä PUBLIC P ãýæ áè÷èæ ºãºõ õýðýãòýé.
    • Äýýðõè á¿õ ç¿éëèéã òîîöâîë m1, m2 ìîäóëèóä äàðààõ õýëáýðòýé áîëíî.
    • ; --- m1 --- ; --- m2 ---
    • EXTRN P:FAR EXTRN x:BYTE, k:ABS
    • PUBLIC x,k PUBLIC P
    • . . . . . .
    • x DB ? P PROC FAR
    • k EQU 100 . . .
    • . . . MOV x, 0
    • CALL P MOV AX,k
  • 51.
    • Äàðààãèéí àñóóäàë áîë ãàäààä íýðèéã ñåãìåíòëýõ ÿâäàë þì. EXTRN äèðåêòèâ õóâüñàã÷èéã ÿìàð ñåãìåíòèéí ðåãèñòðýýð ñåãìåíòëýõèéã çààäàãã¿é. Àññåìáëåð ãàäààä íýð àãóóëñàí êîìàíäûã ÿàæ õºðâ¿¿ëýõ âý ãýäýã íü ¿¿íýýñ õàìààðäàã. Æèøýýëáýë, õ íýð ES ðåãèñòðýýð ñåãìåíòëýãääýã áîë MOV x,0 êîìàíäûã MOV ES:x,0 ãýæ áè÷íý. Õàðèí õ íýð DS ðåãèñòðýýð ñåãìåíòëýãääýã áîë MOV DS:x,0 ãýæ áè÷èõ øààðäëàãàã¿é, MOV x,0 ãýæ áè÷èõýä øóóä îéëãîíî. Õýðýâ ãàäààä íýð àãóóëñàí êîìàíäàíä ñåãìåíòèéí ðåãèñòðèéí íýðèéã áè÷èæ ºã÷ áîëäîã áîë ÿìàð÷ àñóóäàë ãàðàõã¿é. Õàðàìñàëòàé íü áîëäîãã¿é. Èéìä ãàäààä íýðèéã äàðààõ ä¿ðìýýð ñåãìåíòëýäýã. ¯¿íä: 1. Ãàäààä íýð á¿õèé òîãòìîë (ABS òºðºë) ñåãìåíòëýãäýõã¿é. 2. Ãàäààä ì¸òêà áà ïðîöåäóð ¿ðãýëæ CS ðåãèñòðýýð ñåãìåíòëýãäýíý. 3. BYTE, WORD, DWORD òºðëèéí ãàäààä íýðèéí õóâüä : - Õýðýâ EXTRN äèðåêòèâ ñåãìåíòèéí ãàäíà áàéðëàñàí áîë ãàäààä íýðèéã àãóóëñàí êîìàíä á¿ð òóõàéí êîìàíäàíä àâòîìàòààð ñîíãîãäîæ áàéãàà ðåãèñòðýýð ñåãìåíòëýãäýíý. - Õýðýâ EXTRN äèðåêòèâ ÿìàð íýãýí ñåãìåíò äîòîð áàéðëàñàí áîë ò¿¿íä òîäîðõîéëîãäñîí ãàäààä íýð òýð çààãäñàí ñåãìåíòèéí ðåãèñòðýýð ñåãìåíòëýãäýíý. ÆÈØÝÝ:
  • 52. EXTRN x:WORD ; ñåãìåíòèéí ãàäíà áàéðëàñàí A SEGMENT EXTRN y:WORD ; À ñåãìåíò äîòîð áàéðëàñàí . . . A ENDS B SEGMENT EXTRN z:WORD ; Â ñåãìåíò äîòîð áàéðëàñàí . . . B ENDS . . . ASSUME ES:A,DS:B . . . INC x ; DS:x INC x[BP] ; SS:x[BP] INC y ; ES:y INC y[BP] ; ES:y[BP] INC z ; DS:z INC z[BP] ; DS:z[BP]
  • 53. Ñàíàìæ: PUBLIC äèðåêòèâ õóâüñàã÷èéã ñåãìåíòëýõýä ¿¿ðýãã¿é ó÷èð õààíà ÷ áàéðëàæ áîëîõ áà ìîäóëèéí ýõýíä áàéðëàõ íü ÿìàð íýð ýíý ìîäóëèàñ ýêñïîðòëîãäîæ áàéíà âý, ÿìàð íýð åðºíõèé áàéíà âý ãýäýã íü òîäîðõîé õàðàãäàæ áàéäàã. - Ãàäààä íýðèéã çºâ ñåãìåíòëýõ íü àñóóäëûí çºâõºí íýã òàë íü þì. ª.õ ýíý íü êîìàíäûã çºâ õºðâ¿¿ëýëò õèéõýä àøèãëàãäàõ áîëîõîîñ çºâ áèåë¿¿ëýõ íºõöëèéã õàíãàõã¿é. Æèøýý àâ÷ ¿çüå. ; --- m1 --- ; --- m2 --- A SEGMENT PUBLIC x EXTRN x:WORD B SEGMENT y DW 0 x DW ? A ENDS B ENDS . . . . . . ASSUME DS:A Õýðýâ m1 ìîäóëüä x:=y ¿éëäëèéã ã¿éöýòãýõ ãýâýë: MOV AX,y MOV x,AX êîìàíäóóäûí äàðààëàë áè÷èæ áîëîõ óó, º.õ äýýðõè ¿éëäëèéã çºâ õèéõ ¿¿ ãýäýã àñóóäàë ãàðíà.
  • 54. MOV AX,y êîìàíä çºâ áèåëíý. Ó÷èð íü y õóâüñàã÷ m1 ìîäóëüä áàéãàà À ñåãìåíòýíä òîäîðõîéëîãäñîí. Õàðèí MOV x,AX êîìàíä áóðóó áèåëíý. Ó÷èð íü õ õóâüñàã÷ m2 ìîäóëüä áàéãàà  ñåãìåíòýä òîäîðõîéëîãäñîí òóë DS ðåãèñòðýýð ñåãìåíòëýãäýõã¿é. Èéìä SEG ïðåôèêñ àøèãëàí äàðààõ ìàÿãààð m1 ìîäóëüä øèéäýæ ºãíº. ; --- m1 --- . . . MOV AX,y ; AX  y PUSH DS ; DS  stack MOV BX,SEG x ; BX  segment(x) MOV DS,BX ; DS  BX MOV x,AX ; x  AX POP DS ; reset DS . . .
  • 55. INCLUDE äèðåêòèâ
    • INCLUDE äèðåêòèâ õºðâ¿¿ëæ áàéãàà ïðîãðàìä ººð ôàéëûí òåêñòèéã
    • îðóóëæ õºðâ¿¿ëýõ áîëîìæèéã îëãîäîã. Äàðààõ åðºíõèé õýëáýðòýé áàéíà.
    • INCLUDE ôàéëûí íýð
    • Àññåìáëåð çààãäñàí ôàéëûã äèðåêòèâ áè÷èãäñýí áàéðàíä îðóóëíà.
    • Èéìä äèðåêòèâûã ïðîãðàìûí øààðäëàãàòàé áàéðàíä áè÷íý.
    • INCLUDE äèðåêòèâä ôàéëûí íýð òºäèéã¿é ºãºäëèéí á¿òýö, ìàêðîêîìàíä
    • áàéæ áîëäîã. Æèøýý:
    • INCLUDE IO.ASM
    • INCLUDE A:MACROC.TXT
    • INCLUDE äèðåêòèâèéã îëîí ìîäóëüä íýãýí èæèë òåêñòèéã àøèãëàæ áàéãàà
    • òîõèîëäîëä õýðýãëýõ íü èë¿¿ òîõèðîìæòîé áàéäàã.
  • 56. EXE áà COM ôàéë
    • Àññåìáëåð OBJ ôàéëûã õºðâ¿¿ëæ EXE ôàéë ¿¿ñýãäýã.EXE ôàéëûã
    • õóâèðãàæ COM ôàéë ¿¿ñãýäýã. Ýíý 2 ôàéë õî¸óëàà õî¸ðòûí ïðîãðàì
    • áîëîâ÷ äèñêýíä õàäãàëàãäàæ áàéãàà ôàéëûíõàà á¿òöýýð ÿëãààòàé áàéäàã.
    • COM ôàéëûí õýìæýý 64Êá-ààñ õýòýð÷ áîëäîãã¿é áîë EXE ôàéë ÿìàð÷
    • õýìæýýòýé áàéæ áîëäîã. COM ôàéë øóóä áèåëäýã. ª.õ ¿éëäëèéí ñèñòåì
    • Ò¿¿íèéã ñàíàõ îéä øóóä óíøààä, ïðîãðàìûí ñåãìåíòèéí 100Í øèëæëýãòýé
    • êîìàíäàíä óäèðäëàãûã äàìæóóëäàã.
    • Òýãâýë EXE òºðëèéí ôàéë øóóä áèåëýõ áîëîìæã¿é. EXE ôàéëûí õóâüä
    • Äèñêýí äýýð õàäãàëàãäàæ áàéãàà ôàéëä òîëãîé ãýæ íýðëýãäýõ íýìýëò õýñýã
    • áàéäàã. Ýíý õýñýãò êîìàíäûí øèëæëýãòýé õîëáîîòîé ìýäýýëýë áàéäàã.
    • Àññåìáëåð ïðîãðàìûã ñàíàõ îéä òîäîðõîé áàéðàíä áàéðëóóëíà. Ñåãìåíò
    • á¿ðèéã 0 øèëæëýãòýéãýýð ýõýëäýã. Ïðîãðàìûí ëèñòèíãýä çàðèì õàÿã R
    • ¿ñãýýð òýìäýãëýñýí áàéäàã. Ýíý íü òýð õàÿã øèëæèí áàéðëàíà ãýäãèéã
    • ÷àðóóëæ áàéãàà þì. Õýðýâ ïðîãðàì 0-ýýñ ÿëãààòàé øèëæëýãýýð õºäºëâºë
    • òýìäýãëýãäñýí õàÿãóóä ìºí õºäëºõ ¸ñòîé. Èéì õàÿãèéí òóõàé ìýäýýëëèéã
    • òîëãîéä õàäãàëæ áàéäàã.
    • Òýãâýë COM ôàéëä èéì øèëæëýã áàéõã¿é. ª.õ òîëãîé øààðäëàãàã¿é.
    • ͺ㺺 òàëààñ ïðîãðàìèñò ñåãìåíòèéí ðåãèñòðë¿¿ õàíäàõ á¿õ ¿éëäýë
  • 57. çºâõºí êîä ñåãìåíòð¿¿ õàíääàã áàéõààð óðüä÷èëàí òîîöîîëîãäñîí áàéõ ¸ñòîé. Èéìä DS ðåãèñòðò CS-èéí óòãûã ºãºõ êîìàíäûí äàðààëëûã äàðààõ ìàÿãààð áè÷âýë çºâ þì. PUSH CS POP DS Áèä ºìíº ýíý ¿éëäëèéã êîä ñåãìåíò CODE íýðòýé áàéõ ¿åä äàðààõ ìàÿãààð áè÷èæ áàéñàí. MOV AX,CODE MOV DS,AX COM ôàéëûí õóâüä èíãýæ áè÷âýë áóðóó áîëíî. ̺í COM ôàéëûí õóâüä CS,DS,ES,SS ðåãèñòð¿¿äèéí óòãà öºìººðºº ïðîãðàì óíøèãäñàí òýð ñåãìåíòèéí óòãààð òîãòîîãääîã. Ïðîãðàì ñåãìåíòèéí ýõýíä áàéðëàäàã áîë ñòåê ñåãìåíòèéí òºãñãºëä áàéðëàíà. EXE ôàéëûí õóâüä CS,IP áà SS,SP ðåãèñòð¿¿äèéí óòãà ôàéëûí òîëãîéä ºãºãäºíº. Õàðèí DS,ES ðåãèñòð¿¿äèéí óòãà ïðîãðàì à÷ààëàãäàõ ¿åä òîãòîîãääîã. COM ôàéëûí êîìàíäûí ýõíèé øèëæëýã 100Í áàéäàã áîë EXE ôàéëûí õóâüä ÿìàð÷ áàéæ áîëíî. ª.õ END start ìàÿãààð øèëæëýãèéã òîäîðõîéëíî.
  • 58. EXE ôàéëûã COM ôàéëä õºðâ¿¿ëýõ ÄÎÑ ñèñòåìä EXE2BIN ïðîãðàì áàéäàã. Ýíý ïðîãðàìààð EXE ôàéëûã COM ôàéëä õºðâ¿¿ëäýã. Ãýâ÷ á¿õ EXE ôàéëûã õºðâ¿¿ëæ ÷àäàõã¿é. Õàðèí DEBUG ïðîãðàìûã àøèãëàí ÿìàð÷ EXE ôàéëûûã õºðâ¿¿ëæ áîëäîã. Ýíý àðãûã àâ÷ ¿çüå. SAMPLE.ASM ãýæ íýðëýñýí õÿëáàð ïðîãðàì àâúÿ. PAGE ,132 TITLE EXE  COM CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H LEA DX,MSG MOV AH,9H INT 21H INT 20H MSG DB ‘TEST PROGRAM’,10,13,’$’ CODE ENDS END
  • 59. Ýíý ïðîãðàì COM ôàéëä õºðâ¿¿ëýãäýõýýð çîõèîãäñîí áàéíà. COM ôàéëä õºðâ¿¿ëýõèéí òóëä äàðààõ ¿éëäë¿¿äèéã ã¿éöýòãýíý. - TASM SAMPLE.ASM; - TLINK SAMPLE.OBJ; - RENAME SAMPLE.EXE SAMPLE.COM - DEBUG SAMPLE.COM - Ïðîãðàìûã 100 øèëæëýãýýñ ýõýëñýí áàéõààð 纺íº. M 400 1000 100 400-ààñ ýõýëñýí 1000 óðòòàé ïðîãðàìûã 100-ä 纺õ - Ïðîãðàìûí óðòûã òîäîðõîéëîõ U 100 D 100 - Ïðîãðàìûí óðòûã CX ðåãèñòðò õèéõ R CX CX 0380 ; õóó÷èí óòãà íü :120 ; ïðîãðàìûí óðòûã 120 ãýæ àâ÷ áàéíà - Ôàéëûã äèñêýíä áè÷èõ W ; 120 áàéòûã äèñêýíä áè÷íý - DEBUG-ààñ ãàðàõ Q Èíãýæ ¿¿ññýí SAMPLE.COM ïðîãðàìûã øóóä àæèëëóóëæ áîëíî. C:>SAMPLE TEST PROGRAM ¿ãèéã äýëãýöýíä áè÷èæ, ÄÎÑ-ä óäèðäëàãà øèëæèíý.
  • 60. PSP
    • EXE, COM ôàéëóóä PSP ãýæ íýðëýãäýõ ïðîãðàìûí òóõàé ìýäýýëëèéã
    • àãóóëñàí òóñãàé ìóæèéã àøèãëàäàã. EXE ôàéëûí õóâüä DS áà ES
    • ðåãèñòð¿¿ä ýíý ìóæèéã çààæ áàéäàã áîë COM ôàéëûí õóâüä á¿õ
    • ñåãìåíòèéí ðåãèñòð¿¿ä çààæ áàéäàã. Ó÷èð íü COM ôàéëûí õóâüä PSP ìóæ
    • ïðîãðàìûí ýõýíä áàéðëàäàã. ¯¿íèéã ìýäñýíýýð ÿìàð÷ òºðëèéí
    • ïðîãðàìààñ PSP-ä õàäãàëàãäàæ áàéãàà ìýäýýëëèéã àâ÷ àøèãëàæ áîëíî.
    • PSP ìóæ 256 áàéò óðòòàé áà ñåãìåíòèéí 0-ð øèëæëýãýýñ 0FFh õ¿ðòýë
    • áàéðëàäàã.
    • Ýíý ìóæèéí õàìãèéí ñîíèðõîëòîé õýñýã íü êîìàíäûí ìºðºíä áè÷èãäñýí
    • òåêñò ìóæèéí 80Í øèëæëýãýýñ áàéðëàæ áàéäàã. 128 áàéò óðòòàé áàéíà.
    • ¯¿íèéã àøèãëààä ïðîãðàì çàðèì ïàðàìåòðóóäûíõàà óòãûã ýíäýýñ àâàõ
    • áîëîìæòîé þì. Áèä èõýíõ ÄÎÑ-í êîìàíä ïàðàìåòðýý êîìàíäûí ìºðººñ
    • àâäàãèéã ìýäíý.