Professional Documents
Culture Documents
Ngn ng lp trnh
Ngn ng lp trnh
Phng tin vit chng trnh cho my tnh Hng trm ngn ng lp trnh khc nhau Nhng quy nh v c php (syntax) & ng ngha (semantic) My tnh c th hiu c
Hp ng - Assembly Languages
S dng cc t kha ting Anh cho cc lnh hay nhm lnh ca m my. c dch sang m my khi thc hin Chuyn i nhanh chng D c v d hiu hn Vn tng i kh s dng do
Cc lnh cn n gin nn phi dng nhiu lnh. Cha c nhng cu trc iu khin thun tin Kh nng tm v sa li cng cha thun tin.
Ngn ng cp cao
Mt cu lnh din t nhiu ng thi C cu trc ngy cng ging ngn ng t nhin (ting Anh) c dch sang assembly hay m my bng cc chng trnh dch trc khi thc thi.
Source code & Executed code
c phn lm nhiu lp
Lp trnh goto Lp trnh cu trc Structured Lp trnh hng i tng Object Oriented Cc dng khc
Hc ngn ng lp trnh
Hc ng php
Debug Tm v sa li
D liu, kiu d liu
Cc kiu d liu c bn
integer, long, character, byte, . Real (double, float) Kiu khc: string
Cu trc iu khin c bn
If <condition> then Statement; If <condition> then Statement 1 else Statement 2; Case <Value> of value 1 : Statement 1; .. value n : Statement n; else : Statement 0 end; While <condition> do Statement; Repeat Statement until <condition>; For counter=start value to end value do Statement; For counter=start value downto end value do Statement
Th nghim - Testing
Chy th vi cc d liu mu kim tra li semantic v runtime
Mt s ngn ng lp trnh
Lp trnh goto
Assembly Basic
Lp trnh cu trc
Pascal, C Foxpro
Khc
Prolog, LISP, Visual basic (VB), VC++, J++, Delphi, ASP, PHP,.. Visual studio .NET: VB.NET, ASP.NET, C++.NET, C#
Lp trnh hp ng
Mt chng trnh hp ng bao gm mt lot cc mnh ( statement) c vit lin tip nhau , mi mnh c vit trn 1 dng Mt mnh c th l :
mt lnh ( instruction) : c trnh bin dch ( Assembler =ASM) chuyn thnh m my. mt ch dn ca Assembler ( Assembler directive) : ASM khng chuyn thnh m my
Phn bit
Tn hp l COUNTER1 @CHARACTER SUM_OF_DIGITS DONE? .TEST Tn khng hp l TWO WORDS
2ABC
A45.28 YOU&ME ADD-REPEAT
Cc s
Mt s nh phn l mt dy cc bit 0 v 1 v 2 phi kt thc bng h hoc H V d: 10111b, 11111b Mt s thp phn l mt dy cc ch s thp phn v kt thc bi d hoc D ( c th khng cn V d: 64223, -2183d Mt s hex phi bt u bi 1 ch s thp phn v phi kt thc bi h hoc H V d: 183Dh, 1AC0h, 0FFFFH
Cc k t
K t v mt chui cc k t phi c ng gia 2 du ngoc n hoc hai du ngoc kp . V d: A v HELLO . Cc k t u c chuyn thnh m ASCII bi ASM . Do trong mt chng trnh ASM s xem khai bo A v 41h ( m ASCII ca A) l ging nhau
Cc bin ( variables)
Trong ASM bin ng vai tr nh trong ngn ng cp cao. Mi bin c mt loi d liu v n c gn mt a ch b nh sau khi dch chng trnh PSEUDO-OP STANDS FOR DB DW DD define byte define word ( doublebyte) define doubeword ( 2 t lin tip)
Cc hng ( constants)
Trong mt chng trnh cc hng c th c t tn nh ch dn EQU (equates) . C php ca EQU l : NAME EQU constant V d : LF EQU 0AH Cng c th dng EQU nh ngha mt chui: V d: PROMPT EQU TYPE YOUR NAME Sau khi c khai bo ny, thay cho MSG DB TYPE YOUR NAME MSG DB PROMPT
Cc lnh c bn
MOV XCHG ADD SUB INC DEC NEG
on s liu
on s liu ca chng trnh cha cc khai bo bin, khai bo hng ... bt u on s liu chng ta dng ch dn DATA vi c php nh sau : .DATA ;khai bo tn cc bin, hng v mng V d : .DATA WORD1 DW 2 WORD2 DW 5 MSG DB THIS IS A MESSAGE MASK EQU 10010010B
on ngn xp
Mc ch ca vic khai bo on ngn xp l dnh mt vng nh (vng stack) lu tr cho stack. C php ca lnh nh sau : .STACK size Nu khng khai bo size th 1KB c dnh cho vng stack . .STACK 100h ; dnh 256 bytes cho vng stack
on m
on m cha cc lnh ca chng trnh. Bt u on m bng ch dn CODE nh sau : .CODE Bn trong on m cc lnh thng c t chc thnh th tc (procedure) m cu trc ca mt th tc nh sau : name PROC ; body of the procedure name ENDP
Cc lnh vo ra
Lnh INT ( interrupt) Lnh INT 21h INT 21h c dng gi mt s ln cc cc hm ( function) ca DOS. Ty theo gi tr m chng ta t vo thanh ghi AH, INT 21h s gi chy mt routine tng ng .
Cu trc r nhnh
IF condition is true THEN
execute true branch statements
END IF
Hoc IF condition is true THEN execute true branch statements ELSE execute false branch statements END_IF
;then
NEG END_IF :
V d
Nu AX m th t -1 vo BX Nu AX bng 0 th t 0 vo BX Nu AX dng th t 1 vo BX
Ci t
; case AX CMP JL JE JG NEGATIVE: AX,0 NEGATIVE ZERO positive ;AX>0 ;test AX ;AX<0 ;AX=0
MOV JMP
ZERO: MOV JMP POSITIVE: MOV JMP END_CASE :
BX,-1 END_CASE
BX,0 END_CASE BX,1 END_CASE
R nhnh vi mt t hp cc iu kin
i khi tnh trng r nhnh trong cc lnh IF , CASE cn mt t hp cc iu kin di dng : Condition_1 AND Condition_2 Condition_1 OR Condition_2
V d 1: c mt k{ t v nu n l k{ t hoa th in n ra mn hnh
Thut ton :
Read a character ( into AL) IF ( A<= character ) AND ( charater <= Z) THEN display character END_IF
Ci t
;read a character MOV AH,2 INT 21H ; character in AL ; IF ( A<= character ) AND ( charater <= Z) CMP AL,A ; char >=A? JNGE END_IF ;no, exit CMP AL,Z ; char <=Z? JNLE END_IF ; no exit ; then display it MOV DL,AL MOV AH,2 INT 21H END_IF :
V d 2: c mt k{ t , nu k{ t l Y hoc y th in n ln mn hnh , ngc li th kt thc chng trnh . Thut ton Read a charcter ( into AL) IF ( character =Y) OR ( character=y) THEN dispplay it ELSE terminate the program END_IF
Ci t
;read a character MOV AH,2 INT 21H ; character in AL ; IF ( character =y ) OR ( charater = Y) CMP AL,y ; char =y? JE THEN ;yes , goto display it CMP AL,Y ; char =Y? JE THEN ; yes , goto display it JMP ELSE_ ;no , terminate THEN : MOV DL,AL MOV AH,2 INT 21H JMP END_IF ELSE_: MOV AH,4CH INT 21h END_IF :
Cu trc lp
Mt vng lp gm nhiu lnh c lp li , s ln lp ph thuc iu kin
Vng FOR
Lnh LOOP c th dng thc hin vng FOR . LOOP destination_label S m cho vng lp l thanh ghi CX m ban u n c gn 1 gi tr no . Khi lnh LOOP c thc hin CX s t ng gim i 1 . Nu CX cha bng 0 th vng lp c thc hin tip tc . Nu CX=0 lnh sau lnh LOOP c thc hin Lu { rng vng FOR cng nh lnh LOOP thc hin t nht l 1 ln. Do nu ban u CX=0
V d : Dng vng lp in ra 1 hng 80 du * MOV CX,80 MOV AH,2 MOV DL,* TOP: INT 21h LOOP TOP ; CX ch s ln lp ; hm xut k{ t ;DL ch k{ t * ; in du * ; lp 80 ln
Vng WHILE
Vng WHILE ph thuc vo 1 iu kin .Nu iu kin ng th thc hin vng WHILE . V vy nu iu kin sai th vng WHILE khng thc hin g c
WHILE_:
CMP JE INC INT JMP AL,0DH ; c phi l k{ t CR? END_WHILE ; ng , thot DX ;tng DX ln 1 21h ; c k{ t WHILE_ ; lp
Vng REPEAT
Cu trc ca REPEAT l repeat statements until condition Trong cu trc repeat mnh c thi hnh ng thi iu kin c kim tra. Nu iu kin ng th vng lp kt thc .
Bc 1: Hin du nhc .
MOV AH,9 ; hm xut chui LEA DX,PROMPT ; ly a ch chui vo DX INT21H ; xut chui Du nhc c th m ho nh trong on s liu: PROMPT DB Type a line of text :,0DH,0AH,$
Bc 2 : c v x l mt dng vn bn
Read a character WHILE character is not a carrige return DO IF character is a capital (*) THEN IF character precedes first capital Then first capital= character End_if IF character follows last character Then last character = character End_if END_IF Read a character END_WHILE Trong dng (*) c ngha l iu kin k t l hoa l iu kin AND IF ( A<= character ) AND ( character <= Z)
Ci t
MOV AH,1 INT 21H ; c k{ t ; k{ t trn AL
WHILE : ;trong khi k{ t g vo khng phi l CR th thc hin CMP AL,0DH ; CR? JE END_WHILE ;yes, thot ; nu k{ t l hoa CMP AL,A ; char >=A? JNGE END_IF ;khng phi k{ t hoa th nhy n END_IF CMP AL,Z ; char <= Z? JNLE END_IF ; khng phi k{ t hoa th nhy n END_IF ; th ; nu k{ t nm trc bin FIRST ( gi tr ban u l* : k{ t sau Z ) CMP AL,FISRT ; char < FIRST ? JNL CHECK_LAST ; >= ; th k{ t vit hoa u tin = k{ t MOV FIRST,AL ; FIRST=character ;end_if
Ci t (tt)
CHECK_LAST: ; nu k{ t l sau bin LAST ( gi tr ban u l @: k{ t trc A) CMP AL,LAST ; char > LAST ? JNG END_IF ; <= ;th k{ t cui cng = k{ t MOV LAST, AL ;LAST = character ;end_if END_IF : ; c mt k{ t INT 21H ; k{ t trn AL JMP WHILE_ ; lp END_WHILE: Cc bin FIRST v LAST c nh ngha nh sau trong on s liu : FIRST DB * $ ; * l k{ t sau Z LAST DB @ $ ; @ l k{ t trc A
Bc 3 : In kt qu
Bc 3 s phi in ra cc thng bo :
NOCAP_MSG nu khng phi ch in CAP1_MSG ch in u tin CAP2_MSG ch in cui cng
Chng c nh ngha nh sau trong on s liu : NOCAP_MSG DB 0DH,0AH,No capitals $ CAP1_MSG DB 0DH,0AH, First capital= FIRST DB * $ CAP2_MSG DB 0DH,0AH,Last capital=
Bc 3 : In kt qu
;in kt qu MOV AH,9 ; hm xut k{ t ; IF khng c ch hoa no c nhp th FIRST =* CMP FIRST,* ; FIRST=* ? JNE CAPS ; khng , in kt qa ;THEN LEA DX,NOCAP_MSG INT 21H CAPS: LEA DX,CAP1_MSG INT 21H LEA DX,CAP2_MSG INT 21H ; end_if
Lnh XLAT
Trong mt s ng dng cn phi chuyn s liu t dng ny sang dng khc . V d IBM PC dng ASCII code cho cc k{ t nhng IBM Mainframes dng EBCDIC ( Extended Binary Coded Decimal Interchange Code) . chuyn mt chui k{ t c m ho bng ASCII thnh EBCDIC , mt chng trnh phi thay m ASCII ca tng k{ t trong chui thnh m EBCDIC tng ng . Lnh XLAT ( khng c ton hng ) c dng i mt gi tr byte thnh mt gi tr khc cha trong mt bng . AL phi cha byte cn bin i DX cha i ch offset ca bng cn bin i Lnh XLAT s : 1) cng ni dung ca AL vi a ch trn BX to ra i ch trong bng 2) thay th gi tr ca AL vi gi tr tm thy trong bng
V d
Gi s rng ni dung ca AL l trong vng 0 n Fh v chng ta mun thay n bng m ASCII ca s hex tng ng n , tc l thay 6h bng 036h=6 , thay Bh bng 042h=B . Bng bin i l : TABLE DB 030h,031h, 032h,033h,034h, 035h, 036h,037h,038h,039h DB 041h , 042h ,043h , 044h, 045h , 046h V d , i 0Ch thnh C , chng ta thc hin cc lnh sau : MOV AL,0Ch ; s cn bin i LEA BX,TABLE ; BX ch i ch offset ca bng XLAT ; AL cha C y XLAT tnh TABLE + Ch = TABLE +12 v thay th AL bi 043h. Nu AL cha mt s khng trong khong 0 n 15 th XLAT s cho mt gi tr sai .
Thut ton m ha
Print prompt Read and encode message Go to a new line Print encoded message go to a new line translate and print message
HT