1
Bài 1
Đại cương v Hp ng
Mc tiêu
zTìm hiu cu trúc tng quát ca PC
zT chc b nh
zT chc các thanh ghi
zTìm hiu khái quát v Hp ng
zCu trúc lnh
zCu trúc chương trình hp ng
zMt s lnh cơ bn
1.1 T chc PC 1.2 CPU
1.3 T chc b nh
zĐịa ch tuyt đối:
zXác định v trí ca tng byte trong b nh
z(8086) dài 20 bit, b nh 1MB
zĐịa ch tương đối:
zChế độ thc, truy cp b nh theo dng
Segment:Offset ( Đon : Ô )
zSegment, Offset: địa ch 16 bit (lưu trong thanh ghi)
zSegment: địa ch tuyt đối bt đầu đon (chia cho 16)
Ví d: 11340h Æ1134h
zOffset: vtrí ca byte trong đon
zCác đon có th chng lên, ni tiếp, cách xa nhau
zCh đề cp đến chế độ thc và b lnh 8086
Segment
1134h
12363h
11340h
Offset
1023h
2
1.4 T chc thanh ghi
zThanh ghi là nơi lưu tr d liu trong CPU
zGm 16 thanh ghi, mi thanh dài 16 (hoc 32 bit)
zNgười dùng ch dùng địa ch tương đối
zCPU s chuyn thành đ/ch tuyt đối và truy xut b nh
zNhóm thanh ghi đon (Segment Register)
(cha địa ch đon các ô nh cn truy xut)
zCS (Code Seg.) cha địa ch đon vùng mã lnh
zDS (Data Seg.) d liu
zSS (Stack Seg.) ngăn xếp
zES (Extra Seg.) kèm thêm vi DS
zNhóm thanh ghi đa dng:
zAX, BX, CX, DX
zXem như 1 thanh ghi 16 bit (ví d: AX)
hoc 2 thanh ghi 8 bit (ví d: AH (high), AL (low))
zCha d liu, nhưng trong mi lnh s có ý nghĩa riêng
zNhóm thanh ghi con tr và ch s (Pointer, Index Reg)
(cha địa ch offset các vùng d liu)
zSI (Source Index)
DI (Destination Index) ng vi địa ch seg. trong DS, ES
zSP (Stack Pointer) và
BP (Base Point.) ng vi địa ch segment trong SS
zNhóm thanh ghi c và con tr lnh
zFLAGS: ghi nhn thông tin điu khin và trng thái CPU
(s nói k bài sau)
zIP (Instruction Pointer) địa ch offset ca lnh tiếp,
ng vi địa ch segment trong CS
z(Các thanh ghi sp xếp theo chc năng)
1.5 Ngôn ng máy – Hp ng
zNgôn ng máy:
zDng nh phân
zThc hin nhanh, chiếm ít ch trong b nh
zKhó viết, khó nh
zHp ng:
zDùng mt s ký hiu d nh
zCn có ch/trình chuyn hp ng sang ng/ng máy
1.6 Cách viết lnh hp ng
zChương trình hp ng gm nhiu lnh, mi lnh viết trên 1 dòng
zGm 2 loi: ch th (lnh) và chĩ dn (hướng dn hp dch)
zCú pháp: <Tên> <TácT> <TácT> <;GhiChú>
z<Tên>: Là chui gm các ký t, ký s, ? , ., @ , _, $, %
Nhãn: v trí trong chương trình (theo sau :), tên th tc, tên biến
Ký hiu: đại din cho hng s hoc chui ký t
z<TácT>: Tên gi nh ca lnh
z<TácT>: Xác định d liu s được x lý bi lnh
Nếu có nhiu tác t, cách nhau du phy,
Nếu có 2 tác t, có th t: tác t đích, tác t ngun
z<;GhiChú>: Sau du ; để gii thích ý nghĩa lnh
zCách viết s:
zmc định thp phân (D/d), hexa (H/h), binary (B/b) 10h
1011b
zCách viết chui:
zgia 2 du nháy đơn hoc nháy kép ‘A’ “ABC”
z(các ký t s được chuyn thành mã ASCII tương ng)
3
zĐịnh nghĩa vùng nh d liu (biến):
zNhãn DB Tr1, Tr2, ...
zNhãn DW Tr1, Tr2, ...
Nhãn là tên vùng nh (biến), được định nghĩa vi kích thước
là byte (DB) hoc word (DW), được gán Tr...
Không gán tr: ? B DB ?
Gán nhiu tr ging nhau: toán t DUP SCO DB 6 DUP (0)
zĐịnh nghĩa hng:
zTên EQU Hng
CR EQU 0Dh ; (ascii code) Carriage Return, v đầu dòng
LF EQU 0Ah ; Line Feed, sang dòng mi
STR EQU ‘Du lieu nhap sai!!’
MESS DB STR,CR,LF,’$’
zCu trúc chương trình hp ng:
zKhai báo kích thước chương trình
.MODEL Kiu; thường dùng SMALL ...
zKhai báo kích thước vùng ngăn xếp
.STACK KíchThước ; thường 100h, mc định 1024
zKhai báo d liu bt đầu bng ch dn
.DATA
...
zKhai báo mã lnh bt đầu bng ch dn
.CODE
...
zKết thúc chương trình bng ch dn
END
1.7 Mt s lnh đơn gin
zMOV Đích, Ngun
zSao chép d liu (Ngun) vào thanh ghi / vùng nh (Đích)
zHai tác t không đồng thi là vùng nh hoc th/ghi đon
zXCHG Đích, Ngun
zHoán chuyn d liu (không đồng thi là vùng nh)
zADD Đích, Ngun
zCng dn Ngun vào Đích. Hai tác t khg đồng thi là vùng nh
zSUB Đích, Ngun
zTr Đích cho Ngun
zINC Đích
zTăng Đích lên 1
zDEC Đích
zGim Đích đi 1
zNEG Đích
zĐổi du Đích
zINT 21h
Gi trình con ca h điu hành, chc năng tùy theo tr th/ghi AH
zAH = 1
Nhn 1 ký t t bàn phím, mã ASCII cha trong AL
zAH = 2
Xut 1 ký t ra màn hình, ký t cha trong DL
zAH = 9
Xut chui ký tđịa ch offset trong DX (seg. trong DS)
Chui ký t phi kết thúc bng ‘$’
.DATA
MSG DB “Chuoi can hien thi$”
.CODE
MOV AX, @DATA ; ly địa ch seg d liu (MOV AX, SEG DATA)
MOV DS, AX ; đưa vào DS
MOV AH, 9
LEA DX, MSG ; đưa off MSG vào DX (MOV DX, OFFSET MSG)
INT 21h
zAH = 4Ch
Kết thúc chương trình và tr điu khin v cho h điu hành