Tải bản đầy đủ (.doc) (12 trang)

ĐỀ CƯƠNG ÔN TẬP MÔN VI XỬ LÝ.

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 (144.84 KB, 12 trang )

Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý
Đề cơng ôn tập
môn vi xử lý.
I) Chơng trình ASSEMBLER
(Dịch sang *.EXE)
1) Mục lục:
Bài tập 2: Tổ chức ch.tr Assembler
16bit đơn giản
;--------------------------------------Assume Cs:Code_Seg,
Ds:Data_Seg, Ss:Stack_Seg
; Cs trỏ tới mảng lệnh
; Ds trỏ tới mảng lệnh
; Ss trỏ tới mảng lệnh
Code_Seg Segment Public
Org 100H ; Chơng trình bắt
đầu từ địa chỉ 100 hex
Extrn Write_char:Far ; Sử dụng
thủ tục trong file th viện
Extrn Ket_thuc:Far
Extrn Gotoxy :Far
;-------------------------------------; Thủ tục chính : Chuyển số thập
; phân thành từ mã Hexa trên
; màn hình
;-------------------------------------Test_write_decimal Proc Far
;
Mở thủ tục thập phân -> Hexa
Call Flag ; In cờ trạng thái
Mov DX,1789 ; Hiển thị số
1789 thập phân
Call write_decimal ; Gọi


chơng trình hiển thị
Call Ket_thuc
Ret
Test_write_decimal Endp
;--------------------------------------Write_decimal Proc Near
Push AX
Push CX
Push DX
Push SI
Mov AX,DX
Mov SI,10
Xor CX,CX
Non_zero:
Xor DX,DX
Div SI
Push DX
Inc CX
Or AX,AX
Jne Non_zero
Write_digit_loop:
Pop DX

Call write_hex_digit
Loop Write_digit_loop
End_decimal:
Pop SI
Pop DX
Pop CX
Pop AX
Ret

Write_decimal Endp ; Kết thúc
thu tuc chinh
;--------------------------------------; Thủ tục in ra màn hình (sử dụng
; hàm dịch vụ của DOS trong PC
; để mô phỏng ch.tr cần viết
;--------------------------------------Write_hex Proc Near
Push CX
Push DX
Mov DH,DL
Mov CX,4
Shr DL,CL
Call Write_hex_digit
Mov DL,DH
And DL,0FH
Call Write_hex_digit
Pop DX
Pop CX
Ret
Write_hex Endp
;--------------------------------------Write_hex_digit Proc Near
Push DX
Cmp DL,10
Jae Hex_letter
Ađ DL,'0'
Jmp short Write_digit
Hex_letter:
Add DL,'A'-10
Write_digit:
Call Write_char
Pop DX

Ret
Write_hex_digit Eendp
;--------------------------------------Flag Proc Near ; Cờ trạng thái
Push AX
Push DX
Call Gotoxy
Mov AX,Data_Seg
Mov DS,AX
MOV DX,Offset thong_bao
; Thông báo trạng thái
Call Message
Pop DX
Pop AX

1

Ret
Flag Endp
;------------------------------------Message Proc Near
Push AX
Push DX
Push SI
PushF
Cld
Mov SI,DX
String_loop:
Lodsb
Or AL,AL ;K/tra hết dòng
thông báo ?
Jz End_string

Mov DL,AL
Call Write_char
Jmp String_loop
End_string:
Popf
Pop SI
Pop DX
Pop AX
Ret
Message Endp
;--------------------------------------Code_Seg Ends ; Dòng mang
lệnh
;--------------------------------------Data_Seg Segment Public
Public Thong_bao
Thong_bao db 'HELLOW!
WORLD ',0Dh,0Ah,00h
db 0Dh,0Ah,00h
Data_Seg Ends
;--------------------------------------Stack_Seg Segment Public
db 10 Dup('Stack');
Stack_Seg Ends
;--------------------------------------End Test_write_decimal ; Kết
thúc ch.tr chính HEX_BIN
Bài tập 3: Chơng trình hiển thị
Buffer Ram.
;--------------------------------------Assume CS:Code_Seg,
DS:Data_Seg, SS:stack_Seg
; CS Trỏ tới mảng lệnh
Code_seg Segment Public
Extrn Ket_thuc:Far

Extrn Send_crlf:Far
;--------------------------------------; Thủ tục chính : In ra màn hình
; buffer Ram theo từng dòng trên


Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý
; 2 cửa sổ : Hexa và Ascii
;--------------------------------------Hien_thi Proc Far ; Mở thủ tục
hiển thị
Mov AX,Data_seg
Mov DS,AX
Mov BX,Offset
Buffer_offset
Mov CX,16 ; Hiển thị 16 dòng
Ram_buffer:
Call Hien_thi_dong ; Hiển thị
từng dòng 16 byte
Call Send_crlf ; Xuống dòng về
đầu dòng
Add BX,16 ; Tăng 16 bytes nữa
cho dòng tiếp
Loop Ram_buffer ; Lặp lại với
số lần trong CX
Call Ket_thuc
Hien_thi Endp
;--------------------------------------Extrn Write_char:Far
Hien_thi_dong Proc Near
;--------------------------------------; Thủ tục này in từng dòng, mỗi
; dòng 16 byte chứa trong

; Ram_buffer.
; Trớc tiên ở cửa sổ Hexa rồi
; đến cửa sổ Ascii
;--------------------------------------Push AX
Push BX
Push CX
Push DX
Mov CX,16
Push BX ;Offset cho cửa sổ
Ascii
Hex_win:
Mov DL,[BX]
Call Write_hex ; Gọi ch.tr in ra
so HEX
Mov DL,' ' ;dl=20h là mã
khoảng trắng
Call Write_char
Inc BX
Loop Hex_win
;----- Xong cửa sổ Hex_win----Mov DL,' '
Call Write_char ; Dãn cách 2
cửa sổ 2 khoảng trắng
;--------------------------------------Mov CX,16
Pop BX
Ascii_win:
Mov DL,[BX];

Call Write_char
Inc BX
Loop Ascii_win

Pop DX
Pop CX
Pop BX
Pop AX
Ret
Hien_thi_dong Endp ; Kết thúc
thủ tục hiển thị dàng
;--------------------------------------Write_nex Proc Near
Push CX
Mov DH,DL
Mov CX,4
Shr DL,CL
Call Write_hex_digit
Mov DL,DH
And DL,0Fh
Call Write_hex_digit
Pop CX
Ret
Write_hex Endp
;--------------------------------------Public Write_hex_digit
Extrn Write_char:Far
Write_hex_digit Proc Near
Push DX
Cmp DL,10
Jae Hex_letter
Add DL,'0'
Jmp Write_digit
Hex_letter:
Add DL,'A'-10
Write_digit:

Call Write_char
Pop DX
Ret
Write_hex_digit Endp
;--------------------------------------Code_seg Ends ; Dòng mang
lệnh
;--------------------------------------Data_seg Segment Public
Public Buffer_offset
Buffer_offset db 16 Dup(41h)
db 16 DUP(42h)
db 16 DUP(43h)
db 16 DUP(44h)
db 16 DUP(45h)
db 16 DUP(46h)
db 16 DUP(30h)
db 16 DUP(31h)
db 16 DUP(32h)
db 16 DUP(33h)

2

db 16 DUP(34h)
db 16 DUP(35h)
db 16 DUP(36h)
db 16 DUP(37h)
db 16 DUP(38h)
db 16 DUP(39h)

Data_seg Ends
;--------------------------------------Stack_seg Segment Public

db 10 Dup('Stack')
Stack_seg Ends
;--------------------------------------End hien_thi ; Kết thúc ch.tr
chính Hien_thi
Bài tập 4: Chơng trình cộng hai số
tự nhiên kích thớc 2 byte
Assume CS:Code_seg,
DS:Data_seg, SS:Stack_seg
Code_seg Segment Public
;--------------------------------------; Mảng dữ liệu chứa các biến các
; thông báo cần thiết cho ch.trinh
;--------------------------------------Data_seg Segment Public
Buffer db 7 Dup(?) ; Đệm bộ
nhớ
Digit db ?
n1 dw ? ; Số hạng thứ nhất
đợc chứa ở đây
n2 dw ? ; Số hạng thứ hai
sum d ? ; Tổng
Bien_get dw 0 ; Biến trung
gian
Bien_2num dw 0 ; Biến trung
gian
Promp1 db 'Nhap so thu 1: '
Promp2 db 'Nhap so thu 2: '
Promp3 db 'Tong so la : '
Fine Label Byte
Data_seg Ends
;--------------------------------------Extrn Writestring:Far ; ở File
th viện Bt4e.lib

Extrn Getstring:Far
Extrn Ket_thuc:Far
;--------------------------------------; Thủ tục chính cộng 2 so TN
;--------------------------------------Addn Proc Far
mov ax,data_seg ; DS trỏ tới
mảng Data_seg
Mov DS,AX
Mov DX,Offset Promp1
Mov CX, Offset Promp2 -


Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý
Offset Promp1
Call Writetext ; In dòng
' số hạng thứ nhất:'
Call Getstr ; Chuẩn bị nhận số
hạng thứ nhất
Call Str2num
Mov AX,[Bien_2num]
Mov n1,AX
Mov DX,Offset Promp2
Mov CX,Offset Promp3 Offset Promp2
Call WRITETEXT
;
in dong 'so hang thu hai:'
CALL
GETSTR
; chuan bi
nhan so hang thu hai

CALL STR2NUM
MOV AX,[BIEN_2NUM]
MOV n2,AX
CALL ADDn1n2
MOV DX,OFFSET Promp3
MOV CX,OFFSET FineOFFSET Promp3
CALL WRITETEXT
CALL WRITESum
CALL KET_THUC
ADDn ENDP
;-----------------------------------------;Doc mang hay File co the File
trong BX,
;so luong byte trong CX. Neu doc
thanh
;cong thi con tro File se dat o ngay
sau
; phan vua doc.
;--------------------------------------GETSTR PROC NEAR
DATA_SEG SEGMENT PUBLIC
EXTRN FLAG:WORD
DATA_SEG ENDS

file

PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX,00H


;

the

MOV CX,07H
; so
byte can doc
MOV DX,OFFSET
BUFFER ;
dat DS:DX vao dau
mang BUFFER
CALL GETSTRING

MOV AX,[FLAG]
; co
FLAG chua bo byte thuc su doc
duoc
SUB AX,02H
MOV [BIEN_GET],AX
POP DX
POP CX
POP BX
POP AX
RET
GETSTR ENDP
;--------------------------------------;Ghi mang hay File co the File
trong BX,
;so luong byte trong CX. Neu ghi
thanh
;cong thi con tro File se dat o ngay

sau
; phan vua ghi.
;----------------------------------------WRITECHAR PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX,01H
;the File
MOV CX,01H
; so
luong byte can ghi
MOV DX,OFFSET DIGIT
CALL WRITESTRING
POP DX
POP CX
POP BX
POP AX
RET
WRITECHAR ENDP
;-------------------------;chuyen so hang vao bien
; BIEN_2NUM
;-------------------------STR2NUM PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CX,[BIEN_GET]
MOV AX,00H
MOV BX,10

; chuan bi
nhan 10
MOV SI,OFFSET BUFFER ;
dat DS:SI vao dem BUFFER
MOV DH,00H

3

LOOP1:
MUL BX
MOV DL,[SI]
SUB DL,'0'
ADD AX,DX
INC SI
;tro tiep toi
byte sau cua dem BUFFER
LOOP LOOP1
MOV [BIEN_2NUM],AX
POP DX
POP CX
POP BX
POP AX
RET
STR2NUM ENDP
;-----------------------;thuc hien cong
;----------------------ADDn1n2 proc near
PUSH AX
MOV AX, n1
ADD AX, n2
MOV SUM,AX

POP AX
RET
ADDn1n2 ENDP
;----------------------------; in tong len man hinh
;---------------------------WRITESum PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AX, Sum
MOV BX,10
mov cx,0
GETADIGIT:
;su dung
thuat toan chia lien tuc
MOV DX,0
DIV BX
PUSH DX
;cat vao
STACK so du chinh la chu so
;co trong so nho
nhat hien hanh
Inc cx
CMP AX,0000H
JZ WRITE
jmp GETADIGIT


Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý

WRITE:
POP DX
;khoi phuc lai
cac chu so tu STACK theo
;thu tu nguoc lai
ADD DL,'0'
MOV DIGIT,DL
CALL WRITECHAR
; in
tung so ra tu trai sang phai
dec cx
cmp cx,0
jnz write;
POP DX
POP CX
POP BX
POP AX
RET
WRITESum ENDP
;-----------------

code_Seg Segment public
;-------------------------------------

WRITETEXT PROC NEAR
PUSH BX
MOV BX,01H
CALL WRITESTRING
POP BX
RET

WRITETEXT ENDP
;----------------------CODE_SEG ENDS
STACK_SEG SEGMENT PUBLIC
DB 10 DUP('STACK')
STACK_SEG ENDS
;-----------------------END ADDn
Bài tập 5: Vẽ khung của sổ bằng
ký tự đồ hoạ.
ASSUME
cs:CODE_SEG,ds:DATA_SEG,ss:S
TACK_SEG; Thong bao cho
chuong trinh dich
; cac
thanh ghi quan ly mang
;--------------------------------------; Phan nay khai bao cac hang ky
hieu cho cac ky tu
; do hoa trong bang ma ASCII de
ve khung
;--------------------------------------vertical_bar
;Thanh ngang
horizontal_bar
;Thanh dung

upper_left
equ
0c9h
;Thanh khep goc tren ben trai
upper_right
equ
0bbh

;Thanh khep goc tren ben phai
lower_left
equ
0c8h
;Thanh khep goc duoi ben trai
lower_right
equ
0bch
;Thanh khep goc ben phai
top_t_bar
equ
0cbh
;Thanh chu T
bottom_t_bar
equ
0cah
;Thanh chu T nguoc
top_tick
equ
0d1h
;Thanh vach manh
bottom_tick
equ
0cfh
;Thanh vach manh phia duoi

equ
equ

0bah

0cdh

public write_pattern
extrn write_char:far ; 3 thu tuc
o ham thu vien
extrn gotoXY :far ;
extrn ket_thuc :far
;--------------------------------------;Thu tuc WRITE_PATTERN de ve
khung bang cac ky tu
;do hoa cua bang ma ASCII
;--------------------------------------write_pattern proc far
data_Seg Segment public
extrn Dong:byte
man hinh TEXT
extrn Cot :byte
man hinh TEXT
data_Seg

; bien dong
; bien cot

ends

cld
; dat co huong =
0 (Direction=0)
mov ax,data_Seg
; cho DS
tro toi mang DATA_SEG
mov ds,ax

mov bx,02h
;
mov dx,offset top_line_pattern;
DX tro toi CSDL cua duong ngang
; cua khung
can ve
mov dong,05h ; lay toa do X
va Y vao bien 'dong' va 'cot'

4

mov Cot, 00h
; (dong:5
cot:0)
Call gotoXY
; goi thu tuc
dat con tro man hinh vao toa
; do XY da xac
dinh
draw:

mov
si,dx
; chuyen
OFFSET trong DX vao SI de su
dung
; lenh LODSB
pattern_loop:
lodsb
; nhan byte CSDL

vao AL cua bo VXL
or
al,al ; kiem tra da toi
cuoi CSDL chua?
jz
end_pattern ; neu roi thi
ket thuc
mov dl,al
; neu chua thi
chuyen AL vao DL
lodsb
; nhan tiep byte
tiep theo va chuyen
; vao AL
mov cl,al
; chuyen vao
thanh dem CL de su dung
; lenh LOOP
xor ch,ch
write_n_times :
; nhan nay
in ky tu trong DL voi so
; lan bang gia tri
chua trong CL
Call write_char ; goi thu tuc
in 1 ky tu trong DL ra man hinh
loop write_n_times
jmp pattern_loop
end_pattern:
dec bx

jz _end
mov dx,offset
bottom_line_pattern; Cho DX tro
toi CSDL cua
; duong ngang
phia duoi
mov dong,10h;
mov cot, 00h;
Call gotoXY;
jmp draw
_end:
Call ket_thuc;


Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý
write_pattern endp
code_Seg

ends

data_Seg Segment public
;-----------------------------------; Cau truc cua duong ngang phia
tren
; tham so dau la ky tu do hoa, tham
so
; thu hai la so luong ky tu can in ra
;------------------------------------top_line_pattern label byte
db ' ',7
db upper_left,1

db horizontal_bar,13
db top_t_bar,1
db horizontal_bar,13
db top_t_bar,1
db horizontal_bar,13
db top_t_bar,1
db horizontal_bar,13
db top_t_bar,1
db horizontal_bar,13
db upper_right,1
db 0
bottom_line_pattern label byte
db ' ',7
db lower_left,1
db horizontal_bar,13
db bottom_t_bar,1
db horizontal_bar,13
db bottom_t_bar,1
db horizontal_bar,13
db bottom_t_bar,1
db horizontal_bar,13
db bottom_t_bar,1
db horizontal_bar,13
db lower_right,1
db 0
data_Seg
ends
;-------------------------------STACK_SEG SEGMENT PUBLIC
DB 10 DUP('STACK');
STACK_SEG ENDS

end write_pattern
Bài tập 6: Vẽ khung cửa sổ bằng
ký tự đồ hoạ cùng CSLD. Chứa
trong của sổ Hex và Ascii
;---------------------------------------

ASSUME
cs:CODE_SEG,ds:DATA_SEG,ss:S
TACK_SEG; Thong bao cho
chuong trinh dich
; cac
thanh ghi quan ly mang
;--------------------------------------; Phan nay khai bao cac hang ky
hieu cho cac ky tu
; do hoa trong bang ma ASCII de ve
khung
;--------------------------------------vertical_bar
equ
0bah
;Thanh ngang
horizontal_bar equ
0cdh
;Thanh dung
upper_left
equ
0c9h
;Thanh khep goc tren ben trai
upper_right
equ
0bbh

;Thanh khep goc tren ben phai
lower_left
equ
0c8h
;Thanh khep goc duoi ben trai
lower_right
equ
0bch
;Thanh khep goc ben phai
top_t_bar
equ
0cbh
;Thanh chu T
bottom_t_bar
equ
0cah
;Thanh chu T nguoc
top_tick
equ
0d1h
;Thanh vach manh
bottom_tick
equ
0cfh
;Thanh vach manh phia duoi
code_Seg Segment public
;-----------------------------------Bài tập 3: Chơng trình hiển thị
buffer Ram
;--------------------------------------EXTRN KET_THUC:FAR
EXTRN SEND_CRLF:FAR

;--------------------------------------;Thu tuc chinh : In ra man hinh
buffer
;RAM theo tung dong tren 2 cua
so:
;HEXA va ASCII
;--------------------------------------HIEN_THI PROC FAR
;
mo thu tuc HIEN THI
MOV AX,DATA_SEG
MOV DS,AX
CALL WRITE_TOP_PATTERN;
CALL SEND_CRLF

5

MOV
BX,OFFSET
BUFFER_OFFSET
MOV CX,16
; hien
thi 16 dong
RAM_BUFFER:
CALL HIEN_THI_DONG
; hien thi tung dong 16 byte
CALL SEND_CRLF
;
xuong dong ve dau dong
ADD BX,16
; tang
16 bytes nua cho dong tiep

LOOP
RAM_BUFFER
; lap lai voi
so lan trong CX
CALL
WRITE_BOTTOM_PATTERN;
CALL KET_THUC
HIEN_THI ENDP
;----------------------------------EXTRN WRITE_CHAR:FAR
HIEN_THI_DONG
PROC
NEAR
;--------------------------------------; thu tuc nay in tung dong, moi
dong I
;
16
byte
chua
trong
RAM_BUFFER :
I
; truoc tien o cua so HEXA roi den
I
; cua so ASCII
I
;--------------------------------------PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV DL,' '

;
MOV CX,7
write_n_times :
; nhan nay
in ky tu trong DL voi so
; lan bang gia tri
chua trong CL
Call write_char ; goi thu tuc
in 1 ky tu trong DL ra man hinh
loop write_n_times
MOV DL,VERTICAL_BAR
CALL WRITE_CHAR
MOV CX,16
PUSH BX
; offset
cho cua so ASCII
HEX_WIN:


Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin - (12/1998)
§Ò c¬ng «n tËp m«n kü thuËt vi xö lý
MOV DL,[BX];
CALL WRITE_HEX
goi ch.tr in ra so HEX
MOV DL,' '
dl=20hexa la ma khoang trang

;
;


CALL WRITE_CHAR
INC BX
LOOP HEX_WIN
;-----------------------;
xong cua so HEX_WIN
MOV DL,VERTICAL_BAR
CALL WRITE_CHAR
;--------------------------------------MOV CX,16
POP BX
ASCII_WIN:
MOV DL,[BX];
CALL WRITE_CHAR
INC BX
LOOP ASCII_WIN
MOV
DL,VERTICAL_BAR
CALL WRITE_CHAR
POP DX
POP CX
POP BX
POP AX
RET
HIEN_THI_DONG
ENDP
; ket thuc thu
tuchien thi dong
;--------------------------------------WRITE_HEX PROC NEAR
PUSH CX
MOV DH,DL
MOV CX,4

SHR DL,CL
CALL WRITE_HEX_DIGIT
MOV DL,DH
AND DL,0FH
CALL WRITE_HEX_DIGIT
POP CX
RET
WRITE_HEX ENDP
;--------------------------------------PUBLIC WRITE_HEX_DIGIT
EXTRN WRITE_CHAR:FAR

WRITE_HEX_DIGIT
NEAR

PROC

PUSH DX
CMP DL,10
JAE HEX_LETTER
ADD DL,'0'
JMP WRITE_DIGIT
HEX_LETTER:
ADD DL,'A'-10
WRITE_DIGIT:
CALL WRITE_CHAR
POP DX
RET
WRITE_HEX_DIGIT ENDP
;--------------------------------------public write_top_pattern
extrn write_char:far ; 3 thu tuc

o ham thu vien
extrn gotoXY :far ;
extrn ket_thuc :far
;--------------------------------------;Thu tuc WRITE_PATTERN de ve
khung bang cac ky tu
;do hoa cua bang ma ASCII
;--------------------------------------write_top_pattern proc near
data_Seg Segment public
extrn Dong:byte
man hinh TEXT
extrn Cot :byte
man hinh TEXT

; bien dong
; bien cot

data_Seg
ends
;---------------------------PUSH AX
PUSH BX
PUSH CX
PUSH DX
cld
; dat co huong =
0 (Direction=0)
mov dx,offset top_line_pattern;
DX tro toi CSDL cua duong ngang
; cua khung
can ve
mov dong,05 ; lay toa do X

va Y vao bien 'dong' va 'cot'
mov Cot, 00h ; (dong:5 cot:0)

6

Call gotoXY
; goi thu tuc
dat con tro man hinh vao toa
; do XY da xac
dinh
mov
si,dx
; chuyen
OFFSET trong DX vao SI de su
dung
; lenh LODSB
pattern_top_loop:
lodsb
; nhan byte
CSDL vao AL cua bo VXL
or al,al
; kiem tra da
toi cuoi CSDL chua?
jz end_top_pattern ; neu roi
thi ket thuc
mov dl,al
; neu chua
thi chuyen AL vao DL
lodsb
; nhan tiep

byte tiep theo va chuyen
; vao AL
mov cl,al
; chuyen
vao thanh dem CL de su dung
; lenh LOOP
xor ch,ch
write_n_times1 :
; nhan
nay in ky tu trong DL voi so
; lan bang gia tri
chua trong CL
Call write_char
; goi thu
tuc in 1 ky tu trong DL ra man
hinh
loop write_n_times1
jmp pattern_top_loop
end_top_pattern:
POP DX
POP CX
POP BX
POP AX
ret
write_top_pattern endp
;--------------------------------------public write_bottom_pattern
write_bottom_pattern proc near
data_Seg Segment public
extrn Dong:byte
dong man hinh TEXT

extrn Cot :byte
man hinh TEXT

; bien
; bien cot


Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý
data_Seg
ends
;---------------------------PUSH AX
PUSH BX
PUSH CX
PUSH DX
cld
; dat co huong =
0 (Direction=0)
mov dx,offset
bottom_line_pattern; DX tro toi
CSDL cua duong ngang
; cua khung
can ve
mov dong,22 ; lay toa do X
va Y vao bien 'dong' va 'cot'
mov Cot, 00h
; (dong:5
cot:0)
Call gotoXY
; goi thu tuc

dat con tro man hinh vao toa
; do XY da xac
dinh
mov
si,dx
; chuyen
OFFSET trong DX vao SI de su
dung
; lenh LODSB
pattern_bottom_loop:
lodsb
; nhan byte
CSDL vao AL cua bo VXL
or
al,al
; kiem tra
da toi cuoi CSDL chua?
jz end_bottom_pattern ; neu
roi thi ket thuc
mov dl,al
; neu
chua thi chuyen AL vao DL
lodsb
; nhan tiep
byte tiep theo va chuyen
; vao AL
mov cl,al
; chuyen vao
thanh dem CL de su dung
; lenh LOOP

xor ch,ch
write_n_times2 :
; nhan nay
in ky tu trong DL voi so
; lan bang gia tri
chua trong CL
Call write_char ; goi thu tuc
in 1 ky tu trong DL ra man hinh
loop write_n_times2
jmp pattern_bottom_loop
end_bottom_pattern:
POP DX
POP CX

POP BX
POP AX
ret
write_bottom_pattern endp
code_Seg

ends

data_Seg Segment public
;-----------------------------------; Cau truc cua duong ngang phia
tren
; tham so dau la ky tu do hoa, tham
so
; thu hai la so luong ky tu can in ra
;------------------------------------top_line_pattern label byte
db ' ',7

db upper_left,1
db horizontal_bar,11
db top_t_bar,1
db horizontal_bar,11
db top_t_bar,1
db horizontal_bar,11
db top_t_bar,1
db horizontal_bar,12
db top_t_bar,1
db horizontal_bar,16
db upper_right,1
db 0
bottom_line_pattern label byte
db ' ',7
db lower_left,1
db horizontal_bar,11
db bottom_t_bar,1
db horizontal_bar,11
db bottom_t_bar,1
db horizontal_bar,11
db bottom_t_bar,1
db horizontal_bar,12
db bottom_t_bar,1
db horizontal_bar,16
db lower_right,1
db 0
;---------------------------------PUBLIC BUFFER_OFFSET
BUFFER_OFFSET
DB 16
DUP(41H)

DB 16 DUP(42H)
DB 16 DUP(43H)

7

DB 16 DUP(44H)
DB 16 DUP(45H)
DB 16 DUP(46H)
DB 16 DUP(30H)
DB 16 DUP(31H)
DB 16 DUP(32H)
DB 16 DUP(33H)
DB 16 DUP(34H)
DB 16 DUP(35H)
DB 16 DUP(36H)
DB 16 DUP(37H)
DB 16 DUP(38H)
DB 16 DUP(39H)
;-------------------------------data_Seg
ends
;-------------------------------STACK_SEG SEGMENT PUBLIC
DB 10 DUP('STACK');
STACK_SEG ENDS
;----------------------------------END HIEN_THI
; ket
thuc ch.tr chinh HIEN_THI
Bài tập 7: Vẽ hình chữ nhật trong
chế độ đồ hoạ trên màn hình
640x480 pixel
;--------------------------------------ASSUME

CS:CODE_SEG,DS:DATA_SEG,SS
:STACK_SEG
CODE_SEG SEGMENT PUBLIC
EXTRN MODE_GRAPHIC: FAR
; Cac thu tuc nay o FILE thu vien
EXTRN KET_THUC : FAR
EXTRN WRITE_DOT : FAR
;--------------------------------------;Thu tuc BOX dung de: - ve canh
day phia tren tu trai sang phai
;
- ve hai canh ben tu
tren xuong duoi
;
- ve canh day phia
duoi tu trai sang phai
;--------------------------------------BOX PROC FAR
CALL MODE_GRAPHIC ; khoi
dong che do do hoa (GRAPHIC)
MOV AX,DATA_SEG
DS tro toi mang du lieu
MOV DS,AX

; cho


Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý
MOV CX,[BOTCOL]
; CX
chua so pixel canh day phia tren

SUB CX,[TOPCOL]
MOV SI,[TOPROW]
; SI
chua toa do dong phia tren (ROW)
MOV DI,[TOPCOL]
; DI
chua toa do cot phia tren (COL)
TOPLOOP:
; vong lap ve
canh day phia tren
CALL WRITE_DOT ; goi
chuong trinh in pixel
INC DI
; sang cot ke
ben phai de ve tiep
CALL DELAY
; giu cham
de quan sat
LOOP TOPLOOP
MOV CX,[BOTROW]
SUB CX,[TOPROW]
chua so pixel canh ben
MOV SI,[TOPROW]

; CX

SIDELOOP:
;vong lap ve
hai canh ben
MOV DI,[TOPCOL]

CALL WRITE_DOT
MOV DI,[BOTCOL]
CALL WRITE_DOT
INC SI
CALL DELAY
LOOP SIDELOOP
MOV CX,[BOTCOL]
SUB CX,[TOPCOL]
; CX
chua so pixel canh day phia duoi
MOV SI,[BOTROW]
MOV DI,[TOPCOL]
BOTLOOP:
; vong lap ve
canh day phia duoi
CALL WRITE_DOT
INC DI
CALL DELAY
LOOP BOTLOOP
CALL KET_THUC
BOX ENDP
;--------------------------------------; Thu tuc nay dung de giu cham
qua trinh in
; pixel ra man hinh de de theo roi.
Bien bo nho
; DELA an dinh thoi gian giu
cham can thiet
;---------------------------------------

DELAY PROC near

tuc giu cham
PUSH AX
PUSH BX

;mo thu

MOV AX,DELA
; gia tri
giu cham DELA ---> AX
LOOP1: MOV BX,0FFFH
; BX
chua gia tri giu cham cho vong
; lap trong LOOP2
LOOP2: DEC BX
; giam
BX di 1 don vi
JNZ LOOP2
; nhay ve
LOOP2 neu chua rong (BX<>0)
DEC AX
; giam AX di
1 don vi
JNZ LOOP1
; nhay ve
LOOP1 neu chua rong (BX<>0)
POP BX
POP AX
RET
DELAY ENDP
;----------------CODE_SEG ENDS ; dong mang

lenh
;--------------------------------------DATA_SEG SEGMENT PUBLIC
TOPROW DW 50
; bien bo
nho WORD cho toa do dong phia
tren
TOPCOL DW 100
; bien bo
nho WORD cho toa do cot phia
tren
BOTROW DW 400
; bien bo
nho WORD cho toa do dong phia
duoi
BOTCOL DW 600
; bien bo
nho WORD cho toa do cot phia
duoi
DELA DW 20
; bien bo nho
WORD cho do giu cham
PUBLIC COLOR
COLOR DB 15
; bien bo nho
BYTE cho do mau pixel
DATA_SEG ENDS
;--------------------------------------STACK_SEG SEGMENT PUBLIC
DB 100 DUP('STACK')
STACK_SEG ENDS
;-----------------------------------END BOX ; ket thuc ch.tr chinh

BOX.ASM

8

II) Chơng trình ASSEMBLER
(Dịch sang *.COM)
Bài tập 1: Tổ chức chơng trình
Assembler đơn giản
;--------------------------------------CGROUP
GROUP
CODE_SEG,DATA_SEG
ASSUME
CS:CGROUP,DS:CGROUP
;
CS tro toi manh lenh
CODE_SEG SEGMENT PUBLIC
ORG 100H
;
bat dau tu dia chi 100 hex
EXTRN KET_THUC:NEAR
EXTRN INRA :NEAR
;-------------------------------------;Thu tuc chinh : chuyen byte ma
HEX
;thanh tu ma nhi phan tren man
hinh
;-------------------------------------HEX_NHI PROC NEAR ; mo
thu tuc HEXA ---->bieu dien NHI
PHAN
MOV BL,8AH
; hien thi so

8A hexa
CALL HIEN_THI ; goi ch.tr
hien thi
CALL KET_THUC
HEX_NHI ENDP
HIEN_THI PROC NEAR
MOV CX,08H
DOI_MA:
MOV DL,0H
RCL BL,1H
ADC DL,30H
CALL INRA
; goi thu tuc in
ra man hinh tung bit tu file thu
vien
LOOP DOI_MA
HIEN_THI ENDP
; ket thuc
thu tuc chinh
;--------------CODE_SEG ENDS ; dong mang
lenh
;
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
DATA_SEG SEGMENT PUBLIC
DATA_SEG ENDS


Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý

;
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
END HEX_NHI ; ket thuc ch.tr
chinh HEX_BIN
Bài tập 2: Tổ chức chơng trình
Assembler đơn giản
;--------------------------------------CGROUP
GROUP
CODE_SEG,DATA_SEG
ASSUME
CS:CGROUP,DS:CGROUP
;
CS tro toi manh lenh
; DS
tro toi manh lenh
; SS
tro toi manh lenh
CODE_SEG SEGMENT PUBLIC
ORG 100H
; bat dau tu
dia chi 100 hex
EXTRN WRITE_CHAR:NEAR
; su dung thu tuc trong file thu
vien
EXTRN KET_THUC :NEAR
EXTRN GOTOXY :NEAR
;-------------------------------------;Thu tuc chinh : chuyen so thap
phan
;thanh tu ma HEXA tren man hinh

;-------------------------------------TEST_WRITE_DECIMAL PROC
NEAR
;
mo thu tuc thap
phan-------> HEXA
CALL FLAG
; in co
trang thai
MOV DX,1789
;
hien thi so 1789 THAP PHAN
CALL WRITE_decimal
;
goi ch.tr hien thi
CALL KET_THUC
TEST_WRITE_DECIMAL ENDP
;--------------------------------------WRITE_DECIMAL PROC NEAR
PUSH AX
PUSH CX
PUSH DX
PUSH SI
MOV AX,DX
MOV SI,10
XOR CX,CX
NON_ZERO:
XOR DX,DX

DIV SI
PUSH DX
INC CX

OR AX,AX
JNE NON_ZERO
WRITE_DIGIT_LOOP:
POP DX
CALL WRITE_HEX_DIGIT
LOOP WRITE_DIGIT_LOOP
END_DECIMAL:
POP SI
POP DX
POP CX
POP AX
RET
WRITE_DECIMAL ENDP
;
ket thuc thu tuc chinh
;--------------------------------------;Thu tuc in ra man hinh (su dung
ham dich vu
; cua DOS trong PC de mo phong
ch.tr can viet
;--------------------------------------WRITE_HEX PROC NEAR
PUSH CX
PUSH DX
MOV DH,DL
MOV CX,4
SHR DL,CL
CALL WRITE_HEX_DIGIT
MOV DL,DH
AND DL,0FH
CALL WRITE_HEX_DIGIT
POP DX

POP CX
RET
WRITE_HEX ENDP
;--------------------------------------WRITE_HEX_DIGIT
PROC
NEAR
PUSH DX
CMP DL,10
JAE HEX_LETTER
ADD DL,'0'
JMP SHORT WRITE_DIGIT
HEX_LETTER:
ADD DL,'A'-10
WRITE_DIGIT:
CALL WRITE_CHAR
POP DX
RET
WRITE_HEX_DIGIT ENDP
;----------------------------------

9

FLAG PROC NEAR;
co
trang thai
PUSH DX
CALL GOTOXY
LEA DX,THONG_BAO
;
thong bao trang thai

CALL MESSAGE
POP DX
RET
FLAG ENDP
;------------------------------------MESSAGE PROC NEAR
PUSH AX
PUSH DX
PUSH SI
PUSHF
CLD
mov SI,DX
STRING_LOOP:
LODSB
OR AL,AL
; k/tra
het dong thong bao?
JZ END_STRING
MOV DL,AL
CALL WRITE_CHAR
JMP STRING_LOOP
END_STRING:
POPF
POP SI
POP DX
POP AX
RET
MESSAGE ENDP
;-----------------------------------CODE_SEG ENDS ; dong mang
lenh
;-------------------------------------DATA_SEG SEGMENT PUBLIC

PUBLIC THONG_BAO
THONG_BAO
DB
'HELLOW!
WORLD
',0DH,0AH,00H
DB 0DH,0AH,00H
DATA_SEG ENDS
;
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
END
TEST_WRITE_DECIMAL ; ket
thuc ch.tr chinh HEX_BIN
Bài tập 3: Chơng trình hiển thị
Buffer Ram


Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý
;--------------------------------------Cgroup Group Code_seg,
Data_seg
Assume CS:Cgroup,
DS:Cgroup ; CS trỏ tới
mảng lệnh
Code_seg Segment Public
Org 100h ; Bắt đầu từ địa chỉ
100 hex
Extrn Ket_thuc:Near
Extrn Send_crlf:Near

;-------------------------------------; Thủ tục chính : In ra màn hình
; buffer Ram theo từng dòng trên
; 2 cửa sổ Hexa và Ascii
;-------------------------------------Hien_thi Proc Near ; Mở thủ tục
hiển thị
Xor DX,DX ; Bắt đầu từ offset
DX=0000 h
Mov CX,16 ; Hiển thị 16 dàng
Ram_buffer:
Call Hien_thi_dong ; Hiển thị
từng dòng 16 byte
Call Send_crlf ; Xuống dòng về
đầu dòng
Add DX,16 ; Tăng 16 bytes nữa
cho dòng tiếp
Loop Ram_buffer ; Lặp lại với
số lần trong CX
Call Ket_thuc
Hien_thi Endp
;--------------------------------------Extrn Write_char:Near
Hien_thi_dong Proc Near
;--------------------------------------; Thủ tục này in từng dòng, mỗi
; dòng 16 byte chứa trong
; Ram_buffer trớc tiên ở cửa sổ
; Hexa rồi đến cửa sổ Ascii.
; Chú ý: Nếu muốn hiển thị cửa
; sổ Ascii trớc rồi mới đến Hexa
; thi thay theo thứ tự:
; Ascii_win:
; Mov DL,

; Hex_win:
; Pop DX
;--------------------------------------Push BX
Push CX
Push DX
Mov BX,DX ; Chuyển offset
cho BX
Mov CX,16 ; In ra 16 cột
Ascii

Push BX ; Offset cho cửa sổ
Ascii
Hex_win:
Mov DL,Buffer_offset[BX]
Call Write_hex ; Gọi ch.tr in ra
số hex
Mov DL,' ' ; dl = 20h là mã
khoảng trắng
Call Write_char
Inc BX
Loop Hex_win
;----- Xong cửa sổ Hex_win ----Mov DL,' '
Call Write_char ; Dãn cách 2
cửa sổ 2 khoảng trắng
;--------------------------------------Mov CX,16 ; In ra 16 cột bên
cửa sổ Hex
Pop BX
Ascii_win:
MOV DL,Buffer_offset[BX]
Call Write_char

Inc BX
Loop Ascii_win
Pop DX
Pop CX
Pop BX
Ret
Hien_thi_dong Endp ; Kết thúc
thủ tục hiển thị dòng
;--------------------------------------Write_hex Proc Near
Push CX
Push DX
Mov DH,DL ; Chuyển bit thấp
lên bít cao để làm gì ?
Mov CX,4
Shr DL,CL ; Shift right
Call Write_hex_digit
Mov DL,DH ; Trả giá trị cho dl
And DL,0Fh
Call Write_hex_digit
Pop DX
Pop CX
Ret
Write_hex Endp
;--------------------------------------Extrn Write_char:Near
Write_hex_digit Proc Near
Push DX
Cmp DL,10;compare dl with 10
Jae Hex_letter ;if equal then
jump to Hex_letter
Add DL,'0' ;dl cộng với mã Asii

của 0

10

Jmp Short Write_digit
Hex_letter:
Add DL,'A'-10
Write_digit:
Call Write_char
Pop DX
Ret
Write_hex_digit Endp
;--------------------------------------Code_seg Ends ; Dong mang
lệnh
;--------------------------------------Data_seg Segment Public
Public Buffer_offset
Buffer_offset db 16 Dup(1Ah)
db 16 Dup(1Bh)
db 16 Dup(1Ch)
db 16 Dup(1Dh)
db 16 Dup(1Eh)
db 16 Dup(1Fh)
db 16 Dup(20h)
db 16 Dup(21h)
db 16 Dup(22h)
db 16 Dup(23h)
db 16 Dup(24h)
db 16 Dup(25h)
db 16 Dup(26h)
db 16 Dup(27h)

db 16 Dup(28h)
db 16 Dup(29h)
Data_seg Ends
;--------------------------------------End Hien_thi ; Kết thúc ch.tr
chính Hien_thi
Bài tập 4: Cộng hai số tự nhiên
kích thớc 2 byte
;--------------------------------------CGROUP
GROUP
CODE_SEG,DATA_SEG
ASSUME
CS:CGROUP,DS:CGROUP
CODE_SEG SEGMENT PUBLIC
org 100h
;--------------------------------------DATA_SEG SEGMENT PUBLIC
BUFFER
DB 7 DUP(?)
DIGIT
DB ?
n1
DW ?
n2
DW ?
sum
DW ?
BIEN_GET

DW 0



Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý
BIEN_2NUM
DW 0
Promp1 DB 'Nhap so thu 1: '
Promp2 DB 'Nhap so thu 2: '
Promp3 DB 'Tong so la: '
Fine LABEL BYTE
DATA_SEG ENDS
;--------------------------------------EXTRN
WRITESTRING:NEAR
EXTRN GETSTRING:NEAR
EXTRN KET_THUC:NEAR
;--------------------------ADDn PROC NEAR
LEA DX, Promp1
MOV CX, Promp2- Promp1
CALL WRITETEXT
CALL GETSTR
CALL STR2NUM
MOV AX,[BIEN_2NUM]
MOV n1,AX
LEA DX, Promp2
MOV CX,Promp3-Promp2
CALL WRITETEXT
CALL GETSTR
CALL STR2NUM
MOV AX,[BIEN_2NUM]
MOV n2,AX
CALL ADDn1n2
LEA DX,Promp3

MOV CX,Fine-Promp3
CALL WRITETEXT
CALL WRITESum
CALL KET_THUC
ADDn ENDP
;------------------------------------GETSTR PROC NEAR
DATA_SEG SEGMENT PUBLIC
EXTRN FLAG:WORD
DATA_SEG ENDS
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX,00H
MOV CX,07H
LEA DX,BUFFER
CALL GETSTRING
MOV AX,[FLAG]
SUB AX,02H
MOV [BIEN_GET],AX
POP DX
POP CX

POP BX
POP AX
RET
GETSTR ENDP
;---------------------WRITECHAR PROC NEAR
PUSH AX
PUSH BX

PUSH CX
PUSH DX
MOV BX,01H
MOV CX,01H
LEA DX,DIGIT
CALL WRITESTRING
POP DX
POP CX
POP BX
POP AX
RET
WRITECHAR ENDP
;-------------------------STR2NUM PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CX,[BIEN_GET]
MOV AX,00H
MOV BX,10
LEA SI,BUFFER
MOV DH,00H
LOOP1:
MUL BX
MOV DL,[SI]
SUB DL,'0'
ADD AX,DX
INC SI
LOOP LOOP1
MOV [BIEN_2NUM],AX

POP DX
POP CX
POP BX
POP AX
RET
STR2NUM ENDP
;-----------------------ADDn1n2 proc near
PUSH AX
MOV AX,n1
ADD AX,n2
MOV SUM,AX

POP AX
RET
ADDn1n2 ENDP
;-------------------WRITESum PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AX,Sum
MOV BX,10
mov cx,0
GETADIGIT:
MOV DX,0
DIV BX
PUSH DX
inc cx
CMP AX,0000H
JZ WRITE

jmp GETADIGIT
WRITE:
POP DX
ADD DL,'0'
MOV DIGIT,DL
CALL WRITECHAR
dec cx
cmp cx,0
jnz write;
POP DX
POP CX
POP BX
POP AX
RET
WRITESum ENDP
;----------------WRITETEXT PROC NEAR
PUSH BX
MOV BX,01H
CALL WRITESTRING
POP BX
RET
WRITETEXT ENDP
;----------------------CODE_SEG ENDS
END ADDn
III) Phụ lục III một số điều về hệ
vi xử lý 16bit Intel
1) Cách bố trí các thanh ghi cờ
trong hệ vi xử lý 16bit Intel
N15


PL O

D

N7

S

11

N8

NT IO

I

T
N0

Z

A

P

C


Trờng Đại học dân lập Đông Đô - Khoa Công nghệ thông tin - (12/1998)
Đề cơng ôn tập môn kỹ thuật vi xử lý

Chú thích:
+ C: Cờ nhớ (Carry)
+ P: Cờ chẵn lẻ (Parity)
+ A: Cờ nhớ phụ
+ Z: Cờ rỗng (Zero)
+ S: Cờ dấu (Sign)
+ T: Cờ bẫy (Trap)
+ I: Cờ ngắt (Interrupt)
+ D: Cờ hớng (Derection)
+ O: Cờ tràn (Oterflow)
+ IO:
+ PL: Previlege Level
+ NT: Nested Task
IV) Phụ lục III tóm tắt các lệnh,
kiến thức về bộ vi xử lý (micro
proccessor)
8 bit Intel
1) XCHG dest,source
Chức năng: Hoán chuyển nội dung
của hai toán hạng nguồn và đích.
Ta chỉ có thể hoán chuyển giữa
thanh ghi và thanh ghi hoặc giữa
thanh ghi và bộ nhớ.

Địa chỉ cơ sở A15 - A0
Giới hạn L15 - L0

b) Bộ mô tả mã lệnh.
Chú thích:
+ P: Present

+ DPL-Desriptor
+ 11: Mảng lệnh
+
C:

Conforming

= 0 DuocQuyen = DPLofboMoTaChuaCTcon

= 1DuocQuyen = DPLofboMoTaGoi


+
R:
Readable
= 0ChiThucHien


= 1VuaThucHienVuaDoc
+ A:Accerr
Cho hệ VXL từ 80386
P

DPL

1

1

C


R

A

A23-A16

A15 - A0
L15 - L0

c) Phơng thức tính đại chỉ Vật lý từ
địa chỉ ảo.
Bộ chọn

TI

DPL

OFFSET

0-Toàn cục
1-Cục bộ

RAM

RAM
Ngăn nhớ

2)
V) Cơ chế quản lý địa chỉ của

80x86 và cơ chế ngắt
1) cơ chế quản lý không gian bộ
nhớ :vxl16/32 bit
- mảng nhớ
- đ/c cơ sở hình vẽ
Kích thớc
mảng

Đ/c cở sở

Đợc quyền thâm nhập
Đ/c thực :
Bộ chọn mảng +offset
Các bít cao của đ/c
đ/c ảo :bộ chọn mảng
IT RPL

Bộ
mô tả
mảng

Địa chỉ cơ sở
A23 - A0

Kích thớc mảng

d) Các thanh ghi quản lý địa chỉ ảo.
2 Byte - 1 Byte - 3 Byte - 2 Byte
CS
DS

ES
SS

Byte
đặc
tả

Phần kín
(63-48)

Đ/c
cơ sở
A23
A0

Kích
thớc
Mảng
L15-0

Phần hở
(47-15)

Hệ vi xử lý 16 bit Intel

Đặc quyền yêu cầu
= 1 CucBo
Phân biệt vùng nhớ
= 0 ToanCuc
Kết hợp: 14bit + 16bit offset =

30bit -> 230 = 1GB
a) Bộ mô tả mảng dl
Cho hệ VXL từ 386 trở lên
P

D PL

1

0 ED

W

Phần kín dùng
để sao bảng
mô tả mảng
(tự động)

A Đ/c cơ sở A23-A16

12



×