មេរៀន មូលដ្ឋាន Assembly

មេរៀន មូលដ្ឋាន Assembly
a
. រចនាសម្ព័ន្ធកម្មវិធី
1.Syntax
- គ្មានបែងចែក Lower case or Upper case
- 1 standard ត្រូវសរសេរលើ 1 បន្ទាត់
- Ful name ដែលគេប្រើសំរាប់ដាក់ឈ្មោះអថេរ Proc , label ត្រូវមានប្រវែងចាប់ពី 1 -> 31 character និង លើកលែងសញ្ញា Underscore => សញ្ញាពិសេសផ្សេងទៀតពុំអាចប្រើបានដូចជា (? , @ , # , $ , % ) ។
-     ប្រើ ; សំរាប់ការអធិប្បាយ ( Comment)
2. Constance and Variable; បណ្តាលេខ ក្នុង Assembly យើងអាចប្រើបានតែប្រព័ន្ធលេខ Binary , Hexa , Decimal ។
Binary;
01101B => ត្រូវ
01012B => ខុស
01101 => ជាលេខ Dec ពុំមែនជា Bin ទេ
លេខ Hexa;
01h => ត្រូវ
9h => ត្រូវ
0ABh => ត្រូវ
0Bh =>ត្រូវ
Fh => ខុស
សំរាប់ Hexa ត្រូវនាំមុខដោយលេខ ( 0…9) ទើបត្រូវ
Decimal
-> យើងប្រើ D ខាងក្រោយតំលៃលេខដើម្បីបញ្ជាក់ថាលេខ Dec ក្នុងករណីដែលពុំ បាន បញ្ជាក់ថា B , H , D តាម ក្រោយនោះ => Complier យល់ថាជាលេខ Decimal ។
** យើងអាចប្រកាស់អថេរដោយប្រភេទផ្សេងៗគ្នាដូចជា;
DB : Byte
DW : Word
DD : Double word ; 4 byte
DO : 4 word =8 byte
DT : 10 byte
ឧទាហរណ៏;   X1  DB ?
=> X1 ជាអថេរប្រភេទ Byte និងពុំទាន់មានផ្ទុកតំលៃចាប់ផ្តើម X2  DW  2
=> X2 ជាអថេរប្រភេទ Word ដែលមានតំលៃចាប់ផ្តើម =2
3- Array ដោយ Assemply មាន 5 ប្រភេទទិន្នន័យ => មាន 5 ប្រភេទ array ដែរ ។ ក្នុង Assembly array គ្រាន់តែ ជាស៊េរីនៃ Byte memory ឬ word memory ។ ឧទាហរណ៏ array 5 byte ដែលមានតំលៃចាប់ផ្តើម 10 ,20 , 30
=> យើងទទួលបាន;
Element   Address   Content
X             0200h      10
X+1          0201h       20
X+2          0202h      30
ឬ       X             X  DB     ?  ?  ?
=> ត្រៀម 3 byte សំរាប់ X  , X +1 , X+2
4- Constance យើងដឹងថា Constance -> តំលៃរបស់វាពុំអាចផ្លាស់ប្តូរបានទេ
ឧទាហរណ៏;   X     EOU   10
ពេលនេះ X ជាចំនួនថេរដែលមានតំលៃ = 10
5- Structure  Assembly program រួមមាន 3 srgment ដូចជា code seg , Data seg , Stack seg និង Segement និមួយៗ ត្រូវបាន Compile ដាក់បញ្ជូលទៅ Segment Memory រៀងខ្លួន ។
+ Mode Memory;
គឺជាការកំនត់ mode memory អោយ compiler;
▪ model ប្រភេទ                អត្ថាធិប្បាយ
​​SMAL                          Code program  1 seg
Data                1 seg
MEDIUM                  Code Program ច្រើនជាង 1 seg
Data               1 seg
COMPACT            Code program 1 seg
Data ច្រើនជាង 1 seg
LAGE                       Code  program ច្រើនជាង 1 seg
Data                 ច្រើនជាង 1 seg
គ្មាន array ណាច្រើនជា  64K byte
HUGE                    Code program ច្រើនជាង 1 seg
Data  ច្រើនជាង 1 seg
Array អាចធំជាង  64 K byte
+ Data Segement
DS របស់ program គឺជាកន្លែងផ្ទុកការប្រកាសអថេរចំនួនថេរ ។
­ STACK Value
មុខងារកំនត់ទំហំ memory សំរាប់ Stack segment ទៅតាមតំលៃ Value ។ Ex; value=100h => 100h byte សំរាប់ STACK
+ Code segment
គឺជាកន្លែងផ្ទុក Code របស់កម្មវិធីទាំងមូល
­ CODE
……
……
នៅក្នុង code Seg => ត្រូវតែមាន main proc ព្រោះដូច C ដែរដែលវាជា Function មួយសំរាប់កំនត់ទីតាំង
ចាប់ផ្តើមតំបូងបំផុតនៃតំណើរការណ៏កម្មវិធី ។
ឧទាហរណ៏;   កម្មវិធីខាងក្រោមមានមុខងារបង្ហាញ “ A” លើ screen ;
­ madel  Small
­ stack  100h
­ Code
main proc
MOV  AH , 02h
MOV  DL , ‘A’
INT  21h
Main endp
END  MAIN
. Input/Out put Data and Controll/ Looping
+ ប្រើ Function 01 របស់DOS សំរាប់បញ្ជូន 1 character
+ ប្រើ Function 02 របស់DOS សំរាប់បង្ហាញ 1 character
+ ប្រើ Function 09 របស់DOS សំរាប់ out put string on screen
ឧទាហរណ៏កម្មវិធីខាងក្រោមសរសេរបញ្ជូលទិន្នន័យ 1 character អោយទៅអថេរ  x  បន្ទាប់មកបង្ហាញ
ទិន្នន័យរបស់ X ដែលទើបទទួលបានលើ Screen;
­ model small
­ stack 100h
­ Data
X  DB ?
Msg 1 DB  Input a value ; $
Msg 2 DB char was ; $
­ Code
mov dx , @ data , ចាប់ផ្តើមបញ្ជូល Code ក្នុង DS ចូល
mov ds , dx        , ទៅ memory ដើម្បី Register memory
LEA dx , msg 1
Int 21h                            បង្ហាញ msg 1 លើ screen
Mov ah , 01h
Mov ah , 01h
Int 21h                            បញ្ជូលទិន្នន័យ 1 char -> AL បន្ទាប់មកផ្ទេរពី AL -> X
Mov X , al
LEA  dx , msge
Mov oh , 09h          បង្ហាញ string msgz
Int 21h
Mov  dl , x
Mov  ah , 02h                   ផ្ទេរ X ចូល AL ដើម្បីអនុវត្តន៏ Func 2 <- DOS សមរាប់បង្ហាញ content , DL លើ
Int 21h                                                                                                                  screen
Mov  Ah , 4ch
Int  21h                           បញ្ឍប់កម្មវិធី
Main endp
End main
à LEA dx , msg មានន័យថាគណនា Real address msg ( ដែល msg កំពុងចង្អុរទៅកាន់ក្បាល address នៃ array ) រួចផ្ទុក address នោះក្នុង dx ដើម្បីអនិវត្តន៏ Functiong របស់ DOS ។
1> Condiction;
ការត្រួតពិនិត្យល/ខគឺធ្វើឡើងដោយ CMP និង Jump
+ IF  THEN  ELSE
ឧទាហរណ៏;ប្រសិនបើ DL=’A’ នោះត្រូវបង្ហាញ DL លើ Screen ផ្ទុយទៅវិញត្រូវបានបង្ហា្ញញលើ Screen នូវ ‘X’
+ CASE
Case (n)
N=1 ; ការងារ 1
N=2 ; ការងារ 2
;
n=m ; ការងារ m
End case
ឧទាហរណ៏:   ប្រសិនបើ AX=0 -> Out put screen “A”
AX<0 -> Out put screen “B”
AX>0 -> Out put screen “C”
, CASE  AX
CMP  AX , 0
JL  NE GATIVE
JE  ZERO
JG  POSITIVE
­ NE GATIVE;
MOV  DL , ‘B’
­ ZERO;
MOV  DL , “A”
­ POSITIVE;
MOV  DL , “C”
MOV  AH , 02h
INT  21h
; ENDCase
+ ការប្រើ ប្រមាណវិធី Logic ក្នុងការគណនាល/ខ
ដូចជា    Exp 1  AND  Exp2

Exp 1   OR  Exp2
­ AND;
ឧទាហរណ៏;   យើងប្រៀបធៀកន្សោមរបស់ល/ខ ខាងក្រោម
IF (‘A’ <= ch) AND (ch<= “2”)  Then
Display  ch
END IF
MOV  AL , ch
:        ; IF(‘A’ <= AL) and (AL <= ‘Z’) Then
CMP  AL , ‘A’
JNGE  AL . ‘Z’
JNLE  END IF
; Then  Display  AL
MOV  DL , AL
MOV  AH , 02h
INT  21h
END-IF;
­ OR;
ឧទាហរណ៏;   យើងប្រៀបធៀបកន្សោមរបស់ល/ខខាងក្រោម
IF (‘A’ <= ch) OR (ch <= ‘Z’) Then
Display  ch
END IF
MOV  AL , ch
; IF (‘A’ <= AL) OR (AL <= ’Z’) Then
CMP  AL , ‘A’
JAE  THEN-
CMP  AL , ‘Z’ ប្រៀបធៀបល/ខ
JBE  THEN-
JMP  ELSE-
THEN;
MOV  AH , 2h
MOV  DL , AL
INT  21h       ការងារក្នុង Then
JMP  END-IF
ELSE;
MOV  AH , 4ch
INT  21h       ឬការងារផ្សេង
END-IF;
………….
…………
2> Loop
+ FOR;
For ចំនួនជុំ DO
Standards
END FOR
Syntax;
MOV  CX , 80 , CX ជា Reg ប្រើសំរាប់ផ្ទុកចំនួនជុំ​=> 80 ជុំ
MOV  AH , 2 , Out put screen
MOV  DL , ‘#’ , Char for out putting
TOP;
INT  21h ,
LOOP  TOP
Loop TOP នេះមានតួនាទីលោតទៅរក Label ដែលនៅផ្នែកខាងលើ ។ ពេលលោតទៅ TOP វាថែមទាំង អនិវត្តន៏ការងារ DEC CX ដោយស្វ័យប្រវត្តិរហូតដល់ពេលដែល CX ផ្ទុកតំលៃ 0 ទើប Loop ឈប់លោតទៅរក TOP និង អនិវត្តន៏បន្ត Statement បន្ទាប់ទៀត​។
ក្នុងករណ៏ CX ផ្ទុក 0 -> ពេលជួប Loop នោះ CX ត្រូវបានដក 1 ទៀត => CX ផ្ទុក  FFFFh  ដែលវានឹងត្រូវ Loop​ចំនួន 65535 ជុំទៀត ។

Related product you might see:

Share this product :

Post a Comment

 
Support : Creating Website | Johny Template | Mas Template
Copyright © 2011. ទឹកអំពៅ - All Rights Reserved
Template Created by Creating Website Published by Mas Template
Proudly powered by Blogger