Tải bản đầy đủ (.pdf) (39 trang)

Tài liệu Hợp ngữ ASM-Chương 06-Nhập môn ASM docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (661 KB, 39 trang )

Chương 5 : Nhập môn AssemblyChương 5 : Nhập môn Assembly
Mục tiêu
Hiểu ngôn ngữ máy và ngôn ngữ Assembly.Hiểu ngôn ngữ máy và ngôn ngữ Assembly.
Tìhhơ dòhA blTìhhơ dòhA blTrình hợp dòch Assembler.Trình hợp dòch Assembler.
Lý do nghiên cứu Assembly.Lý do nghiên cứu Assembly.
Hiểucácthành phầncơbảncủa AssemblyHiểucácthành phầncơbảncủa AssemblyHieu cac thanh phan cơ ban cua AssemblyHieu cac thanh phan cơ ban cua Assembly
Nắm được cấu trúc của 1 CT Assembly. Nắm được cấu trúc của 1 CT Assembly.
Biết viết 1 chương trình Assembly.Biết viết 1 chương trình Assembly.
Biết cách dòch, liên kết và thực thi 1 chương trình Biết cách dòch, liên kết và thực thi 1 chương trình
Assembly. Assembly.
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 11
h1
h2
Slide 1
h1 shjsahjsa
huh, 10/13/2004
h2 ssasasasas
huh, 10/13/2004
Giới thiệu ngôn ngữ AssemblyGiới thiệu ngôn ngữ Assembly
 Giúp khám phá bí mật phần cứng cũng như phần Giúp khám phá bí mật phần cứng cũng như phần
àùíàùímềm máy tính.mềm máy tính.
 Nắm đươ
ïc cách phần cứng MT làm việc với hệ Nắm được cách phần cứng MT làm việc với hệ ïp g ä äïp g ä ä
điều hành và hiểu được bằng cách nào 1 trình điều hành và hiểu được bằng cách nào 1 trình
ứng dụng giao tiếp với hệ điều hành.ứng dụng giao tiếp với hệ điều hành.
 Một MT hay một họ MT sử dụng 1 tập lệnh mã Một MT hay một họ MT sử dụng 1 tập lệnh mã
ùiâ õ hư1 â ữA bliâùiâ õ hư1 â ữA bliâmáy riêng cũng như 1 ngôn ngữ Assembly riêng.máy riêng cũng như 1 ngôn ngữ Assembly riêng.
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 22
AssemblerAssemblerAssemblerAssembler
 Một chương trình viết bằng ngôn ngữ Assembly Một chương trình viết bằng ngôn ngữ Assembly
muốn MT thưc hiện đươc ta phảichuyểnthànhmuốn MT thưc hiện đươc ta phảichuyểnthànhmuon MT thực hiện được ta phai chuyen thanh muon MT thực hiện được ta phai chuyen thanh


ngônngôn ngữ máy. ngữ máy.
 Chương trình dùng để dòch 1 file viết bằng Assembly Chương trình dùng để dòch 1 file viết bằng Assembly
ỴỴ n
gôn ngữ máy , gọi là Assemblerngôn ngữ máy , gọi là Assembler..gg ygïgg ygï
Có 2 chương trình dòch:
MASM và TASM
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 33
Lý do nghiêncứu AssemblyLý do nghiêncứu AssemblyLy do nghien cưu AssemblyLy do nghien cưu Assembly
 Đó là cách tốtnhấtđể hoc phầncứng MTĐó là cách tốtnhấtđể hoc phầncứng MT Đo la cach tot nhat đe học phan cưng MT Đo la cach tot nhat đe học phan cưng MT
và hệ điều hành.và hệ điều hành.
 Vì các tiện ích của nó .Vì các tiện ích của nó .
 Có thể nhúng các chương trình con viết Có thể nhúng các chương trình con viết
b è ASM ø t ù hươ t ì h i átb è ASM ø t ù hươ t ì h i átbằng ASM vào trong cácchương trình viết bằng ASM vào trong cácchương trình viết
bằng ngôn ngữ cấp cao .bằng ngôn ngữ cấp cao .
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 44
Lệnh máyLệnh máyLệnh mayLệnh may
 Là 1 chuổi nhò phân có ý nghóa đặc biệt Là 1 chuổi nhò phân có ý nghóa đặc biệt ––nó ra nó ra
CiùCiùlệnh cho CPU thực hiện tác vụ.lệnh cho CPU thực hiện tác vụ.
 Tác vụ đó có thể là :Tác vụ đó có thể là :
di h å 1 á từ òt í hớø òt í hớ kh ùdi h å 1 á từ òt í hớø òt í hớ kh ùdi chuyển 1 số tư vò trí nhơ nay sang vò trí nhơ khac.di chuyển 1 số tư vò trí nhơ nay sang vò trí nhơ khac.
Cộng 2 số hay so sánh 2 số.Cộng 2 số hay so sánh 2 số.
        A     AL 
        A      
        M  A    
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 55
Lệnh máy (cont)Lệnh máy (cont)Lệnh may (cont)Lệnh may (cont)
 Tập lệnh máy đươc đònh nghóa trướckhiCPươcTập lệnh máy đươc đònh nghóa trướckhiCPươc Tập lệnh may được đònh nghóa trươc, khi CPU được Tập lệnh may được đònh nghóa trươc, khi CPU được
sản xuất và nó đặc trưng cho kiểu CPU .sản xuất và nó đặc trưng cho kiểu CPU .
áááá Ex : B5 05 là 1 lệnh máy viết dạng số hex, dài 2 byte.Ex : B5 05 là 1 lệnh máy viết dạng số hex, dài 2 byte.
 Byte đầu B5 gọi là Opcode Byte đầu B5 gọi là Opcode

 Byte sau 05 gọi là toán hạng OperandByte sau 05 gọi là toán hạng Operand
Ýù nghóa của lệnh B5 05 : chép giá trò 5 vào reg AL
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 66
Cách viết 1 chương trình AssemblyCách viết 1 chương trình AssemblyCach viet 1 chương trình AssemblyCach viet 1 chương trình Assembly
Soạn CT
Dùng 1 phần mềm soạn thảo VB bất kỳ để soan
ï
TenCT.ASM
CT Assembly như : NotePad, NC, màn hình C,
Pascal ...
CT có phần mở rộng là .ASM
Dòch CT
dùng MASM để dòch chương trình nguồn .ASM
Ỵ File Object.
Liên kết CT
dùng LINK để liên kết Object tạo tập tin thực
hiện .EXE
Chay CT
Gỏ tên tập tin thực hiện .EXE từ dấu nhắc
å
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 77
Chạy CT
DOS để chạy
Dòch vaø noái keát chöông trìnhDòch vaø noái keát chöông trình
TCT ASM TCT OBJ
MASMEE
LINKEE
TCT MAP TCT LIST
TCT CRF
TCT EE

5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 88
Moät chöông trình minh hoaMoät chöông trình minh hoaMoät chöông trình minh hoaïMoät chöông trình minh hoaï
DOSSEGDOSSEGDOSSEGDOSSEG
.MODEL SMALL.MODEL SMALL
.STACK 100h.STACK 100h
MO D OFFSET MES
MO AH 
.DATA.DATA
MES DB “HELLO WORD”,’$’MES DB “HELLO WORD”,’$’
CODECODE
INT 
MO AHCH
.CODE.CODE
MAIN PROCMAIN PROC
MOV AX, @DATAMOV AX, @DATA
INT 
MAIN ENDP
MOV DS, AXMOV DS, AX
END MAIN
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 99
CácfilươctaoCácfilươctaoCac file được tạoCac file được tạo
 Sau khi dòch thành công file nguồnASM tacó các file :Sau khi dòch thành công file nguồnASM tacó các file : Sau khi dòch thanh cong file nguon.ASM, ta co cac file :Sau khi dòch thanh cong file nguon.ASM, ta co cac file :
 File listing : file VB , các dòng có đánh số thứ tự mã.File listing : file VB , các dòng có đánh số thứ tự mã.
 File Cross referenceFile Cross reference File Cross referenceFile Cross reference
 File MapFile Map
Fil ObjFil Obj File ObjFile Obj
 File EXEFile EXE
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 1010
File ListingFile Listing
Mi f (R) M A bl V i 10 10/11/4Mi f (R) M A bl V i 10 10/11/4 Microsoft (R) Macro Assembler Version 5.10 10/11/4Microsoft (R) Macro Assembler Version 5.10 10/11/4

 Page 1Page 1--11
1 DOSSEG1 DOSSEG 1 DOSSEG1 DOSSEG
 2 .MODEL SMALL2 .MODEL SMALL
 3 .STACK 100H3 .STACK 100H
 4 .DATA4 .DATA
5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$"5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$" 5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$"5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$"
 6 57 4F 52 44 246 57 4F 52 44 24
 7 .CODE7 .CODE
 8 0000 MAIN PROC8 0000 MAIN PROC
9 0000 B89 0000 B8 R MOV AX @DATAR MOV AX @DATA 9 0000 B8 9 0000 B8 -------- R MOV AX,@DATAR MOV AX,@DATA
 10 0003 8E D8 MOV DS, AX10 0003 8E D8 MOV DS, AX
 11 0005 B4 09 MOV AH,911 0005 B4 09 MOV AH,9
 12 0007 BA 0000 R MOV DX, OFFSET MES12 0007 BA 0000 R MOV DX, OFFSET MES
13 000A CD 21 INT 21H13 000A CD 21 INT 21H 13 000A CD 21 INT 21H13 000A CD 21 INT 21H
 14 000C B4 4C MOV AH,4CH14 000C B4 4C MOV AH,4CH
 15 000E CD 21 INT 21H15 000E CD 21 INT 21H
 16 0010 MAIN ENDP16 0010 MAIN ENDP
17 END MAIN17 END MAIN
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 1111
 17 END MAIN17 END MAIN
 ♀◘♀◘Microsoft (R) Macro Assembler Version 5.10 10/11/4Microsoft (R) Macro Assembler Version 5.10 10/11/4
Map FileMap FileMap FileMap File
 Start Stop Length Name ClassStart Stop Length Name Classpgpg
 00000H 0001FH 00020H _TEXT CODE00000H 0001FH 00020H _TEXT CODE
 00020H 0002AH 0000BH _DATA DATA00020H 0002AH 0000BH _DATA DATA
 00030H 0012FH 00100H STACK STACK00030H 0012FH 00100H STACK STACK 00030H 0012FH 00100H STACK STACK00030H 0012FH 00100H STACK STACK
 Origin GroupOrigin Group
 0002:0 DGROUP0002:0 DGROUP
 Program entry point at 0000:0010Program entry point at 0000:0010gypgyp
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 1212

Giải thíchGiải thích
 .model small : dùng kiểu cấu trúc <= 64 K bộ nhớ cho .model small : dùng kiểu cấu trúc <= 64 K bộ nhớ cho
mã , 64K cho dữ liệu.mã , 64K cho dữ liệu.
S k 100h d ø h 256 b h k û hS k 100h d ø h 256 b h k û h .Stack 100h : dành 256 bytes cho stack của chương .Stack 100h : dành 256 bytes cho stack của chương
trình .trình .
 Data : đánh dấu phân đoan dữ liệu ở đó cácbiếnData : đánh dấu phân đoan dữ liệu ở đó cácbiến .Data : đanh dau phan đoạn dư liệu ơ đo cac bien .Data : đanh dau phan đoạn dư liệu ơ đo cac bien
được lưu trữ.được lưu trữ.
 .Code : đánh dấu
phân đoan mã chứa các lệnh phải .Code : đánh dấu phân đoan mã chứa các lệnh phải p ï äpp ï äp
thi hành. thi hành.
 Proc : khai báo đầu 1 thủ tục, trong Ex này ta chỉ có 1 Proc : khai báo đầu 1 thủ tục, trong Ex này ta chỉ có 1
ûûthủ tục Main.thủ tục Main.
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 1313
Giải thích (cont)Giải thích (cont)
 Chép đòa chỉ đoạn dữ liệu vào thanh ghi AX.Chép đòa chỉ đoạn dữ liệu vào thanh ghi AX.
 Sau đó chép vào thanh ghi DSSau đó chép vào thanh ghi DS
 Gọi hàm số 9 của Int 21h của Dos để xuất Gọi hàm số 9 của Int 21h của Dos để xuất
chuổi ký tự ra màn hình.chuổi ký tự ra màn hình.
 Th
oát khỏi CT .Thoát khỏi CT .oat o C .oat o C .
 Main endp : đánh dấu kết thúc thủ tụcMain endp : đánh dấu kết thúc thủ tục
 Endmain:chấmdứtchươngtrìnhEndmain:chấmdứtchươngtrình End main : cham dưt chương trìnhEnd main : cham dưt chương trình
5/13/20095/13/2009 Chuong 5 Nhap mon ASMChuong 5 Nhap mon ASM 1414

×