ASM căn bản
lượt xem 30
download
- Ch$c năng: Báo cho chương trình d*ch ASM biêt ñe xác lap mot vùng nh2 Ram thích h5p cho chương trình - Cú Pháp: .Model kieu Tiny : Code + Data =64k Medium : Code=64k;Data=64k;Data=64k ----------------------------------------------------------------------------------
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: ASM căn bản
- I. C.Trình ASM 1. Directive ñi u khi n segment d ng ñơn gi n a. .Model - Ch c năng: Báo cho chương trình d ch ASM bi t ñ xác l p m t vùng nh Ram thích h p cho chương trình - Cú Pháp: .Model ki u Tiny : Code + Data
- ----------------------------------------------------------------------------------- D ng thư ng th y c a m t chương trình ASM d ng ñơn gi n: ################################################################# .Model ki u .Stack ñ _l n ; Có th k có(m c ñ nh là 1024b byte) .Data Khai báo bi n .Code Nhãn_C.Trình: ; Ch khai báo khi khai báo data Mov ax,@data ; Ch khai báo khi khai báo data Mov ds,ax … các l nh ASM ; Tr v Dos Mov ah,4ch Int 21h End Nhãn_C.Trình ################################################################# ----------------------------------------------------------------------------------- 2. Chương Trình Con Tên_Chương_trình_con Proc b o v các thanh ghi mà thân chương trình con s phá v .. các l nh Ret Tên_Chương_trình_con Endp - Cơ ch th c hi n Chương trình con: + b1: tham s th c ñư c ñưa vào stack + b2: ñ a ch l nh ti p theo ñư c ñưa vào stack (2/4 byte) + b3: ñưa ñ a ch chương trình con vào cs:ip + b4: th c hi n chương trình con ñ n khi g p return thì ñưa ñ a ch l y ti p theo ñư c ñưa vào stack trong bư c 2 ñ ñưa vào cs:ip + b5: ti p t c chương trình ch y d ----------------------------------------------------------------------------------- 3. Macro Tên_Macro Macro các_tham_s b o v các thanh ghi mà thân Macro s phá v .. các l nh Endm ----------------------------------------------------------------------------------- 4. Inline ASM Trong C++ - G m 1 t p .cpp liên k t v i m t t p .asm - Yêu c u: M t file d ch có ñuôi .bat ñ liên k t 2 t p dich.bat F:\ASM\TC30\BIN\tcc -ml -IF:\ASM\TC30\INCLUDE -IF:\ASM\TC30\LIB %1 %2 (chú ý là ph i ñúng ñư ng d n ch a TC30) 2
- Các nhãn (chương trình chính, chương trình con) ph i hi u nhau. Mu n v y c n có 2 directive là Public (cho phép) và Extrn (xin phép) - Ví d : Tính a lũy th a n + Vd1: dùng hàm ASM không ñ i T p 1: lt1.cpp #include #include int a,n; extrn int LT(); void main() { clrscr(); couta; coutn; cout
- Push bp ; C t giá tr BP hi n th i vào stack Mov bp,sp Mov bx,[bp+6] ;bx=a Mov cx,_n Mov ax,1 And cx,cx ; d ng c xét li u n có b ng 0 Jz L2 ; n u n=0 thì nh y ñ n L2 L1: Mul bx Loop L1 L2: Pop bp Ret @LT$qi EndP End + Vd3: dùng hàm ASM 2 ñ i T p 1: lt3.cpp #include #include extrn int LT(int a,int n); void main() { clrscr(); couta; coutn; cout
- Ax Bx Cx Dx : 3 ch ñ truy nh p (al,ah,ax) Si Di Bp Sp : 1 ch ñ Ngư i l p trình ch ñư c dùng 7 thanh ghi (tr thanh ghi Sp) ----------------------------------------------------------------------------------- c. Thanh ghi con tr l nh 16 bit Ip : cho bi t ph n ñ a ch offset c a vùng nh Ram ch a mã máy c a chương trình ----------------------------------------------------------------------------------- d. 4 Thanh ghi segment 16 bit Cs : Code Segment ; cho bi t ph n ñ a ch segmentc a vùng nh Ram ch a mã máy chương trình Ds : Data Segment ;cho bi t ph n ñ a ch segmentc a vùng nh Ram ch a d li u chương trình Es : Extra Segment ;cho bi t ph n ñ a ch segmentc a vùng nh Ram ch a d li u chương trình Ss : Stack Segment;cho bi t ph n ñ a ch segment c a vùng nh Ram ch a ngăn x p chương trình ----------------------------------------------------------------------------------- II. Các l nh hay dùng c a ASM 1. Nhóm các l nh di chuy n d li u a. Mov - Ch c năng: DST SRC - Cú Pháp: Mov DST,SRC - Ví D : Mov reg1,reg2 ;(ax,bx) Mov reg,data ;(ax,100) Mov reg,mem ;(bx,value) Mov mem,reg ;(value,cx) Mov mem,data ;(value,-100) Mov seg,reg ;(ds,ax) ----------------------------------------------------------------------------------- b. Push - Ch c năng: ðưa n i dung 2 byte c a SRC vào ñ nh Stack - Cú Pháp: Push SRC - Ví d : Push reg mem ----------------------------------------------------------------------------------- c. Pop - Ch c năng: ðưa n i dung 2 byte c a ñ nh Stack vào SRC - Cú Pháp: Pop SRC - Ví d : Pop reg Mem ----------------------------------------------------------------------------------- d. PushF 5
- - Ch c năng: ðưa n i dung thanh ghi c vào ñ nh Stack - Cú Pháp: PushF ----------------------------------------------------------------------------------- e. PopF - Ch c năng: ðưa n i dung 2 byte c a ñ nh Stack vào thanh ghi c - Cú Pháp: PopF ----------------------------------------------------------------------------------- f. Xchg - Ch c năng: DST SRC - Cú Pháp: Xchg DST,SRC - Ví D : Xchg reg1,reg2 ;(ax,bx) Xchg reg,mem ;(ax,value) ----------------------------------------------------------------------------------- g. Lea - Ch c năng: ðưa ph n ñ a ch offset c a 1 bi n nh vào reg - Cú Pháp: Lea Reg,Mem ----------------------------------------------------------------------------------- 2. Nhóm các l nh S H c a. Add - Ch c năng: DST DST + SRC - Cú Pháp: Add DST,SRC - Ví D : Add reg1,reg2 ;(ax,bx) Add reg,data ;(ax,100) Add reg,mem ;(bx,value) Add mem,reg ;(value,cx) Add mem,data ;(value,-100) ----------------------------------------------------------------------------------- b. SUB - Ch c năng: DST DST - SRC - Cú Pháp: Sub DST,SRC - Ví D : Sub reg1,reg2 ;(ax,bx) Sub reg,data ;(ax,100) Sub reg,mem ;(bx,value) Sub mem,reg ;(value,cx) Sub mem,data ;(value,-100) ----------------------------------------------------------------------------------- c. Mul/iMul - Ch c năng: Nhân 2 toán h ng v i s không d u/có d u 8bit * 8bit | al * SRC ax 16bit * 16bit | ax * SRC dx:ax - Cú Pháp: Mul/iMul SRC ----------------------------------------------------------------------------------- d. Div/iDiv 6
- - Ch c năng: Chia 2 toán h ng v i s không d u/có d u 16bit : 8bit | ax : SRC al : thương,ah : dư 16bit * 16bit | dx:ax : SRC ax: thương, dx: dư - Cú Pháp: Div/iDiv SRC ----------------------------------------------------------------------------------- e. Inc - Ch c năng: DST DST + 1 - Cú Pháp: Inc DST ----------------------------------------------------------------------------------- f. Dec - Ch c năng: DST DST - 1 - Cú Pháp: Dec DST ----------------------------------------------------------------------------------- g. Neg - Ch c năng: DST - DST - Cú Pháp: Neg DST ----------------------------------------------------------------------------------- h. Cmp - Ch c năng: So sánh n i dung 2 toán h ng và d ng c - Cú Pháp: Cmp DST,SRC - Gi i Thích: Cmp DST,SRC n u DST= SRC C=0 DST=SRC Z=1 (c Zero) DST#SRC Z=0 ----------------------------------------------------------------------------------- 3. Nhóm các l nh thao tác bit a. And - Ch c năng: Th c hi n phép toán “và logic” (bit c a phép toán k t qu =1 khi 2 bit tương ng c a 2 toán h ng ñ u = 1) - Cú Pháp: And DST,SRC - Ví D : Al = 10101010 Bl = 11001100 Add al,bl 10001000 n u al< 0 s=1 al>=0 s=0 al=0 z=1 al#0 z=0 ----------------------------------------------------------------------------------- b. Or 7
- - Ch c năng: Th c hi n phép toán “ho c logic” (bit c a phép toán k t qu =1 khi và ch khi 1 trong 2 bit tương ng c a 2 toán h ng ñ u = 1) - Cú Pháp: Or DST,SRC - Ví D : Al = 10101010 Bl = 11001100 Or al,bl 11101110 ----------------------------------------------------------------------------------- c. Xor - Ch c năng: Th c hi n phép toán “exclusive or” (bit c a phép toán k t qu =1 khi và ch khi 2 bit tương ng c a 2 toán h ng khác nhau) - Cú Pháp: Xor DST,SRC - Ví D : Al = 10101010 Bl = 11001100 Xor al,bl 01100110 ----------------------------------------------------------------------------------- d. Shl - Ch c năng: T t c các bit d ch sang trái (bit cu i (bit 16) s d ch vào c C) - Cú Pháp: Shl DST,count - Ví D : Shl ax,1 n u count >=2 thì ph i nh ñ n Cl Mov cl,4 Shl ax,cl ----------------------------------------------------------------------------------- e. Shr - Ch c năng: T t c các bit d ch sang ph i (bit ñ u (bit 1) s d ch vào c C) - Cú Pháp: Shr DST,count - Ví D : Shr ax,1 n u count >=2 thì ph i nh ñ n Cl Mov cl,4 Shr ax,cl ----------------------------------------------------------------------------------- f. Sar - Ch c năng: T t c các bit d ch sang ph i (bit ñ u (bit 1) s d ch vào c C) nhưng bit 16 v n gi nguyên giá tr - Cú Pháp: Sar DST,count - Ví D : Sar ax,1 n u count >=2 thì ph i nh ñ n Cl 8
- Mov cl,4 Sar ax,cl ----------------------------------------------------------------------------------- 4. Nhóm các l nh r nhánh a. Call - Ch c năng: G i 1 chương trình con - Cú Pháp: Call Tên_CT_con ----------------------------------------------------------------------------------- b. Int - Ch c năng: G i chương trình (kích ho t chương trình) con ph c v ng t c a h th ng - Cú Pháp: Int n ; n là s ng t ----------------------------------------------------------------------------------- c. Jmp - Ch c năng: Nh y không ñi u ki n - Cú Pháp: Jmp Nhãn Chú ý bư c nh y không quá 64k ----------------------------------------------------------------------------------- d. Loop - Ch c năng: th c hi n l i kh i l nh ASM n m gi a nhãn và loop nhãn cho ñ n khi cx=0, sau m i l n th c hi n cx gi m ñi 1 - Cú Pháp: Nhãn kh i l nh ASM Loop Nhãn ----------------------------------------------------------------------------------- e. Nh y theo tr ng thái các bit c jc Nhãn s nh y n u c = 1 jnc Nhãn s nh y n u c = 0 jz Nhãn s nh y n u z = 1 jnz Nhãn s nh y n u z = 0 js Nhãn s nh y n u s = 1 (s âm) jns Nhãn s nh y n u s = 0 (s dương) ----------------------------------------------------------------------------------- f. Nh y theo ñi u ki n Cmp DST,SRC jne Nhãn nh y n u DST = SRC ja Nhãn nh y n u DST # SRC ----------------------------------------------------------------------------------- 5. Các hàm hay dùng c a h th ng h tr ASM 9
- a. Hàm s 1 mov ah,1 int 21h ch nh n t bàn phím 1 kí t ----------------------------------------------------------------------------------- b. Hàm s 2 mov al mov ah,0eh int 10h ñưa ra màn hình 1 kí t ----------------------------------------------------------------------------------- c. Hàm s 3 lea dx (tên bi n xâu) mov ah,9 int 21h hi n 1 xâu kí t k t thúc b ng $ ra màn hình t i v trí con tr ----------------------------------------------------------------------------------- d. Hàm s 4 mov ah,4eh int 21h tr v dos ----------------------------------------------------------------------------------- 10
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Hợp Ngữ ASM-Chương 01-Phần 1- Cấu trúc máy tính
14 p | 1159 | 462
-
Căn bản về lập trình ASM trên Windows
4 p | 422 | 108
-
Cơ bản về lập trình C
19 p | 322 | 92
-
Bài tập asm
28 p | 132 | 30
-
Lập trình windows - Lập trình cơ sở dữ liệu với thư viện ADO
63 p | 150 | 19
-
Bài giảng Chương 6: Toán tử - Toán hạng - Các phép định địa chỉ - Tập lệnh
40 p | 139 | 8
-
Bài giảng Cấu trúc máy tính: Chương 7 - Ngô Phước Nguyên
40 p | 85 | 8
-
Code by Jellydn ASM LIB Support from 06Tonline
9 p | 67 | 7
-
Code by Jellydn ASM LIB Support from 06Tonline Việc chuyển đổi qua lại giữa hệ số
9 p | 82 | 5
-
Bài giảng Cấu trúc máy tính và lập trình hợp ngữ - Chương 7: Toán tử – Toán hạng - Các phép định địa chỉ – Tập lệnh
40 p | 92 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn