Biểu đồ thời gian ghi/đọc

Một phần của tài liệu bai giang VXL potx (Trang 57 - 169)

2.4.1 Xung nhp và chu k mỏy

Trờn hỡnh 2.5.1a là hỡnh vẽ mụ tả một chu kỳ xung nhịp (chu kỳ đồng hồ), một chu kỳ đồng hồ bao gồm 2 pha đối xứng gọi là pha 1 (tớn hiệu đồng hồ ở mức thấp) và pha 2 (tớn hiệu đồng hồ ở mức cao). Cỏc chu kỳ đồng hồ này được đưa đến lối vào xung nhịp của vi xử lý. Một chu kỳ xung nhịp cũn được gọi là một nhịp. Thời gian cần thiết và số xung nhịp cơ sở cho một thao tỏc của vi xử lý gọi là một chu kỳ mỏỵ Mỗi một chu kỳ mỏy cú 4 nhịp. Hỡnh 2.5.1b là giản đồ thời gian thực hiện chu kỳ bus của vi xử lý 8086.

SƯờn lên

Mức thấp Mức cao SƯờn xuống

Hỡnh 2.5.1a: Xung nhịp

Nhỡn vào chu kỳ bus ta cú thể phõn ra làm 4 pha như sau:

- Pha T1: Cỏc đường trạng thỏi hoạt động để xỏc định kiểu thao tỏc nào được CPU thực hiện, đồng thời cỏc địa chỉ bộ nhớ I/O cũng được truyền.

Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 58 - Pha T2: Cỏc tớn hiệu địa chỉ được thay thế bằng cỏc tớn hiệu dữ liệu, cỏc tớn hiệu đọc/ghi

trở nờn tớch cực.

- Pha T3: Trước tiờn cỏc tớn hiệu trạng thỏi được truyền đi để bỏo hiệu sắp hết một chu kỳ Bus, và sau đú tớn hiệu điều khiển cũng được truyền đị

- Pha T4: Núi chung đõy là pha rảnh rỗi, trong pha này CPU và cỏc khối bờn ngoài cú thời giờ để vụ hiệu hoỏ Bus dữ liệụ

ĐƯờng truyền địa chỉ/dữ liệu Tín hiệu điều khiển RD, WR T1 T2 T3 T4 T4 Trạng thái hợp lệ Địa chỉ Dữ liệu ĐƯờng truyền trạng thái

Hỡnh 2.5.1a: Thời gian thực hiện chu kỳ Bus của vi xử lý 8086

2.4.2 Chu kđọc/ghi ca vi x lý 8086

Hỡnh 2.5.2a chỉ ra một chu kỳ đọc của vi xử lý 8086, ngoài pha 1 được mụ tả như ở trờn ta cần chỳ ý đến cỏc pha cũn lạị Cũng cần chỳ ý rằng theo đặc điểm kỹ thuật thỡ dữ liệu phải tồn tại ớt nhất 20 ns trước khi kết thỳc T3 và vẫn phải tồn tại ớt nhất 10 ns sau khi kết thỳc T4. Trong khi đú ta cú thể huỷ bỏ đồng thời tớn hiệu bỏo đọc (0 ns).

Địa chỉ

RD

AD0-AD15 Địa chỉ Dữ liệu

T4 T3 T2 T1 Xung nhịp 1 2 3 4 5 6 7 8 Hỡnh 2.5.2a: Chu kỳđọc của vi xử lý Trong đú cỏc đường:

Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 59 2. tCLRL: Đồng hồ ở mức thấp cho đến khi RD hoạt động = 70ns Max.

3. tAZLN: Bus địa chỉ được thả nổi cho đến khi RD hoạt động = 0ns Min.

4. tOVCL: Dữ liệu hợp lệ cho đến khi đồng hồ ở mức thấp cho đến khi đồng hồ ở mức thấp = 20ns Min.

5. tCLDX: Đồng hồ ở mức thấp cho đến khi dữ liệu khụng hợp lệ = 10ns Min. 6. tCLRH: Đồng hồ mức thấp cho đến khi RD ở mức cao = 10ns Min.

7. tRMAV: RD ở mức cao cho đến khi cỏc địa chỉ hợp lệ = 85ns Min.

8. tRHDX: Đọc dữ liệu ở mức cao cho đến khi dữ liệu khụng hợp lệ = 0 Min.

Việc truy nhập bộ nhớ kộo dài từ T1 – T3 (gần 3 chu kỳ đồng hồ 3*T = 3*200 = 600ns). Trong tổng số thời gian này phải tớnh đến thời gian trễ khi truyền địa chỉ ttrễđịachỉ = 110ns, thời gian giữ của dữ liệu khi đọc tgiữ = 30ns và thời gian trễ do truyền tớn hiệu qua cỏc mạch đệm nhiều nhất là ttrễ đệm = 40ns. Như vậy cỏc bộ nhớ nối với 8086 – 5MHz cần phải cú thời gian thõm nhập nhỏ hơn:

3*T - ttrễđịachỉ - tgiữ - ttrễđệm = 600 – 110 – 30 – 40 = 420ns

Hỡnh 2.5.2b chỉ ra một chu kỳ ghi của vi xử lý 8086, ngoài pha T1 được mụ tả như ở trờn ta cần chỳ ý đến cỏc pha sau:

- Pha T2: Trong pha này CPU xuất ra dữ liệu cần được ghi và tớn hiệu bỏo ghi tới bộ nhớ hoặc I/Ọ

- Pha T3: Trong giai đoạn này dữ liệu ghi là ổn định và tớn hiệu bỏo ghi đó được tạo rạ

- Pha T4: Tớn hiệu bỏo ghi bị vụ hiệu hoỏ và sau đú dữ liệu cần ghi cũng bị huỷ bỏ để dành chỗ cho cỏc địa chỉ của pha T1 của chu kỳ tiếp theọ

Xung nhịp

Địa chỉ Dữ liệu Địa chỉ

5 4 3 2 1 T1 T2 T3 T4 AD0-AD15 WR Hỡnh 2.5.2b. Chu kỳ ghi của vi xử lý 8086

1. tCLDV: Đồng hồ ở mức thấp cho đến khi dữ liệu hợp lệ = 44ns Max. 2. tCVTCV: Đồng hồ ở mức thấp cho đến khi WR hoạt động = 70ns Max. 3. tCVCTX: Đồng hồ ở mức thấp cho đến khi WR khụng hoạt động = 55ns Max. 4. tCHDX: Đồng hồ ở mức cao cho đến khi dữ liệu khụng hợp lệ = 10ns Min. 5. WR khụng hoạt động cho đến khi dữ liệu khụng hoạt động = 10ns.

Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 60

2.5 Lp trỡnh hp ng (Assembly) cho vi x lý 80x86

[Tham khảo: http://wapediạmobi/vi ]

2.5.1 Gii thiu chung v hp ng

Hp ng (assembly language) là một ngụn ngữ cấp thấp dựng để viết cỏc chương trỡnh mỏy tớnh. Cỏch dựng cỏc thuật nhớ (mnemonics) thõn thiện để viết chương trỡnh đó thay thế cỏch lập trỡnh trực tiếp lờn mỏy tớnh bằng mó mỏy dạng số (numeric machine code) - từng ỏp dụng cho những mỏy tớnh đầu tiờn - vốn rất mệt nhọc, dễ gõy lỗi và tốn nhiều thời giờ. Một chương trỡnh viết bằng hợp ngữ sẽ được dịch sang ngụn ngữ mỏy bằng một tiện ớch gọi là trỡnh hợp dịch. Lưu ý rằng, trỡnh hợp dịch khỏc hoàn toàn với trỡnh biờn dịch, vốn dựng để biờn dịch cỏc ngụn ngữ cấp cao sang cỏc chỉ thị lệnh cấp thấp mà sau đú sẽ được trỡnh hợp dịch chuyển đổi sang ngụn ngữ mỏỵ Cỏc chương trỡnh hợp ngữ thường phụ thuộc chặt chẽ vào một kiến trỳc mỏy tớnh xỏc định, nú khỏc với ngụn ngữ cấp cao thường độc lập đối với cỏc nền tảng kiến trỳc phần cứng. Nhiều trỡnh hợp dịch phức tạp ngoài cỏc tớnh năng cơ bản cũn cung cấp thờm cỏc cơ chế giỳp cho việc viết chương trỡnh, kiểm soỏt quỏ trỡnh dịch cũng như việc gỡ rối được dễ dàng hơn. Hợp ngữ đó từng được dựng rộng rói trong tất cả cỏc khớa cạnh lập trỡnh, nhưng ngày nay nú cú xu hướng chỉ được dựng trong một số lónh vực hẹp, chủ yếu để giao tiếp trực tiếp với phần cứng hoặc xử lý cỏc vấn đề liờn quan đến tốc độ cao điển hỡnh như cỏc trỡnh điều khiển thiết bị, cỏc hệ thống nhỳng cấp thấp và cỏc ứng dụng thời gian thực..

2.5.2 Cu trỳc chung ca chương trỡnh hp ng

Cu trỳc ca mt lnh hp ng

Tham khảo: http://www.emu8086.com/ Một dũng lệnh trong chương trỡnh hợp ngữ gồm cú cỏc trường sau:

Tờn Lệnh Toỏn hạng Chỳ thớch

A: Mov AH, 10h ; Đưa giỏ trị 10h vào thanh ghi AH Cấu trỳc thụng thường của một chương trỡnh hợp ngũ

.model <Khai bỏo kiểu chương trỡnh>

.stack <Khai bỏo kớch thước ngăn xếp>

.data

<Khai bỏo dữ liệu>

.code

<Cỏc lệnh>

end

Vớ dụ: Chương trỡnh sau in ra màn hỡnh dũng chữ “Hello !”

.model small .stack 100h .data

s DB “Hello !$” ; khai bỏo xõu kớ tự cần in

.code

mov AX,@data ; lấy địa chỉ data segment ghi vào DS mov DS,AX ; Vỡ model small, đõy cũng là địa chỉ

Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 61 ; xuất chuỗi

mov DX, OFFSET s ; lấy địa chỉ offset ghi vào DX mov AH , 9

int 21h ; gọi hàm 9, ngắt 21h để in mov AH, 4Ch ; Thoỏt khỏi chương trỡnh int 21h

end

Lưu ý:

- Mọi chương trỡnh đều phải cú đoạn CODE thoỏt khỏi chương trỡnh, nếu khụng chương trỡnh sẽ khụng dừng khi hết chương trỡnh của mỡnh.

Khung chương trỡnh dch ra .exe

data segment

; ađ your data here!

pkey db "press any key to exit ...$" ends stack segment dw 128 dup(0) ends CODE segment start:

; set segment registers:

MOV ax, data MOV ds, ax MOV es, ax

; ađ your CODE here lea dx, pkey

MOV ah, 9

int 21h ; output string at ds:dx

; wait for any keỵ...

MOV ah, 1

int 21h

MOV ax, 4c00h ; exit to operating system.

int 21h ends

END start ; set entry point and stop the assembler.

Khung chương trỡnh dch ra .com

; You may customize this and other start-up templates; ; The location of this template is

;c:\emu8086\inc\0_com_templatẹtxt CSEG SEGMENT ; code segment starts herẹ

org 100h

; ađ your CODE here

Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 62

Khai bỏo quy mụ s dng b nh

CPU 8086 cú thể truy nhập tối đa 1MB bộ nhớ RAM. Dung lượng này là thừa để sử dụng cho bất kỳ loại mỏy tớnh nàọ

Bản đồ bộ nhớ của mỏy tớnh IBM PC

Địa chỉ vật lý của vựng nhớ (HEX)

Giải thớch vắn tắt

00000 - 00400 Vector ngắt. Bộ mo phỏng sẽ load file này:

c:\emu8086\INT_VECT tại địa chỉ vật lý 000000 00400 - 00500 Vựng thụng tin hệ thống.

00500 - A0000 Một vựng nhớ tự dọ Mỗi khối là 654,080 bytẹ Tại đõy cú thể load chương trỡnh

A0000 - B1000 Vựng nhớ màn hỡnh cho VGA, monochrome, và cho cỏc bộ điều hợp khỏc

B1000 - B8000 Dự trữ

B8000 - C0000

32kb nhớ màn hỡnh cho chế độ đồ họa màu (CGA). Bộ mụ phỏng sử dụng vựng nhớ này để lưu 8 trang vựng nhớ màn hỡnh. Màn hỡnh mụ phỏng cú thể thay đổi kớch thước, nờn bộ nhớ tối thiểu được yờu cầu cho mỗi trang, mặc dự bộ mụ phỏng luụn luụn sử dụng 1000h (4096 byte) cho mỗi trang (xem ngắt 10h, AH=05h)

C0000 - F4000 Dự trữ F4000 - 10FFEF

ROM BIOS và mở rộng. Bộ mụ phỏng tải file BIOS_ROM tại địa chỉ vật lý 0F4000h. Địa chỉ của bảng vector ngắt chỉ tới vựng nhớ này để tạo hàm ngắt mụ phỏng.

Bảng vector ngắt (vựng nhớ từ 00000h đến 00400h) Số hiệu

ngắt (HEX)

Địa chỉ vector ngắt

Địa chỉ của chương trỡnh con BIOS

(ađress of BIOS sub-program )

00 00x4 = 00 F400:0170 – CPU tạo, lỗi chia

04 04x4 = 10 F400:0180 - CPU tạo, phỏt hiện INTO tràn 10 10x4 = 40 F400:0190 – Hàm video

11 11x4 = 44 F400:01D0 – Nhận danh sỏch thiết bị BIOS 12 12x4 = 48 F400:01A0 – Nhận kớch thước bộ nhớ 13 13x4 = 4C F400:01B0 - Cỏc hàm về đĩa 15 15x4 = 54 F400:01E0 – Cỏc hàm BIOS 16 16x4 = 58 F400:01C0 - Cỏc hàm bàn phớm 17 17x4 = 5C F400:0400 – Mỏy in 19 19x4 = 64 FFFF:0000 – Khởi động lại 1A 1Ax4 = 68 F400:0160 – Hàm thời gian 1E 1Ex4 = 78 F400:AFC7 – vector tham số đĩa

20 20x4 = 80 F400:0150 – Hàm DOS: Kết thỳc chương trỡnh 21 21x4 = 84 F400:0200 – Cỏc hàm của DOS

33 33x4 = CC F400:0300 – Cỏc hàm chuột Cỏc hàm khỏc ??x4 = ?? F400:0100 – Cỏc ngắt mặc định

Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 63 Địa chỉ (HEX) Kớch thước Giải thớch

0040h:0010 WORD

Danh sỏch thiết bị BIOS

Trường bit BIOS tỡm thấy phần cứng được cài: bit(s) Giải thớch

15-14 Số thiết bị song song 13 Dự trữ

12 Cổng game được cài 11-9 Số thiết bị nối tiếp 8 Dự trữ 7-6 Số đĩa mềm (trừ 1): 00 Đĩa mềm đơn; 01 Hai dĩa mềm; 10 Ba đĩa mềm; 11 Bốn đĩa mềm; 5-4 Khởi tạo chế độ Video:

00 EGA,VGA,PGA, hoặc on-board video BIOS khỏc; 01 40x25 CGA màụ 10 80x25 CGA màu (Mụ phỏng mặc định). 11 80x25 đen trắng. 3 Dữ trữ. 2 Chuột PS/2. 1 Bộ xử lý toỏn học;

0 Được cài khi khởi động từ đĩa mềm. 0040h:0013 WORD

kilobytes bắt đầu vựng nhớ liờn tiếp tại địa chỉ 00000h từ này cũng được trả về AX bởi INT 12h

giỏ trị này được đặt là 0280h (640KB) 0040h:004A WORD Số cột trờn màn hỡnh.

Mặc định là 0032h (50 cột) 0040h:004E WORD

Địa chỉ bắt đầu trang màn hỡnh hiện hành trong bộ nhớ màn hỡnh (sau 0B800:0000)

Giỏ trị mặc định: 0000h 0040h:0050 8 WORD

Bao gồm vị trớ hàng và cột cho con trỏ trong mỗi của tỏm trang nhớ màn hỡnh.

Giỏ trị mặc định: 00h (cho tất cả 8 từ (words) 0040h:0062 BYTE Số trang màn hỡnh hiện hành

Mặc định: 00h (trang đầu tiờn) 0040h:0084 BYTE Hàng trờn màn hỡnh trừ 1

Giỏ trị mặc định: 13h (19+1=20 cột)

Khai bỏo hng, biến

Cỳ phỏp:

<tờn biến> D<Kiểu DL> <giỏ trị khởi tạo>

hoặc

<tờn biến> D<Kiểu DL> <số phần tử> dup(<giỏ trị khởi tạo>)

Cỏc kiểu dữ liệu: B (1 byte), W (2 bytes), D (4 bytes) Nếu khụng khởi tạo, dựng dấu hỏi “?”

Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 64

Vớ dụ:

Khai bỏo trong C Khai bỏo biến trong hợp ngữ

char ch; ch DB ?

char ch = ‘a’; ch DB ‘a’

char ch = 5; ch DB 5

char s[]=”\nhello world!” s DB 10,13,”hello world!$”

int i=100; i DW 100

long L; L Đ ?

char a[] = {1,2,3}; a DB 1,2,3 char a[100]; a DB 100 dup(?)

char a[100][50]; a DB 100 dup(50 dup(?))

Hằng số:

Khai bỏo hằng số trong chương trỡnh hợp ngữ bằng lệnh EQỤ Vớ dụ:

TA EQU 19, 81 TACT EQU 2, 11

Chương trỡnh con

Chương trỡnh con là một phần của mó nguồn mà cú thể gọi chỳng trong chương trỡnh của bạn để làm một vài nhiệm vụ nhất định nào đú. Chương trỡnh con làm cho chương trỡnh cú cấu trỳc hơn và dễ hiểu hơn. Thụng thường, chương trỡnh con trở lại ngay sau điểm đó gọi nú.

Cấu trỳc một chương trỡnh con như sau: TấN PROC

; đõy là mó lệnh của chương trỡnh con RET

TấN ENDP

TấN là tờn của chương trỡnh con, tờn phải giống nhau ở trờn và dưới của chương trỡnh con, đú là cỏch để kiểm tra điểm kết thỳc của chương trỡnh con.

Hầu như chắc chắn, bạn đó biết rằng lệnh RET được sử dụng để trở về hệ điều hành. Lệnh tương tự cũng được sử dụng để trở về từ chương trỡnh con (thực sự, OS coi chương trỡnh của chỳng ta như một chương trỡnh con đặc biệt)

PROC và ENDP là cỏc định hướng chương trỡnh dịch, nờn chỳng khụng được dịch ra mó mỏỵ Chương trỡnh dịch nhớ địa chỉ của chương trỡnh con.

Lệnh CALL được sử dụng để gọi chương trỡnh con Đõy là một vớ dụ: ORG 100h CALL ta MOV AX, 2 RET ; Trở về OS ta PROC MOV BX, 5

RET ; Trở về sau điểm đó gọị ta ENDP

Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 65 Vớ dụ trờn gọi chương trỡnh con ta, để thực hiện lệnh “MOV BX, 5” , và trở về sau lệnh gọi nú “MOV AX, 2”

Cú vài cỏch để truyền tham số cho chương trỡnh con, cỏch đơn giản nhất là sử dụng cỏc thanh ghi, dưới đõy là một vớ dụ khỏc về cỏch gọi chương trỡnh con và cỏch truyền tham số cho nú qua

thanh ghi AL và BL, nhõn hai tham số với nhau và trả kết quả về trong thanh ghi AX:

ORG 100h MOV AL, 1 MOV BL, 2 CALL m2 CALL m2 CALL m2 CALL m2 RET ; Trở về HðH m2 PROC MUL BL ; AX = AL * BL. RET ; Trở về sau ủiểm gọi nú. m2 ENDP END

Trong vớ dụ trờn, giỏ trị của thnh ghi AL được cập nhật mỗi lần chương trỡnh con được gọi,

thanh ghi BL khụng thay đổi, nờn thuật toỏn trờn là tớnh 24, kết quả lưu trong AX là 16 (hay 10h)

Dưới đõy là một vớ dụ khỏc, sử dụng chương trỡnh con để in xõu “PICAT.dieukhien.net” : ORG 100h

LEA SI, tbao_tw ; Lấy địa chỉ của msg vào SỊ CALL In_Xau

RET ; trở về hệ điều hành.

;================================================= ; Chương trỡnh này in 1 xõu, xõu phải kết thỳc

; bằng ký tự null (phải cú 0 cuối xõu)

; địa chỉ của xõu phải được đặt trong thanh ghi SI: In_Xau PROC

next_char:

CMP b.[SI], 0 ; kiểm tra nếu = 0 thỡ dừng JE stop ;

MOV AL, [SI] ; lấy ký tự tiếp theọ MOV AH, 0Eh ; số hiệu in ký tự.

INT 10h ; sử dụng ngắt để in ký tự trong AL.

Một phần của tài liệu bai giang VXL potx (Trang 57 - 169)

Tải bản đầy đủ (PDF)

(169 trang)